Compare commits
No commits in common. "master" and "v0.1.0" have entirely different histories.
9 changed files with 20 additions and 69 deletions
|
@ -1,9 +1,3 @@
|
||||||
## v0.1.1 (2025-02-20)
|
|
||||||
|
|
||||||
### Fix
|
|
||||||
|
|
||||||
- set vendor name, sku when refreshing neworder batch row
|
|
||||||
|
|
||||||
## v0.1.0 (2025-01-13)
|
## v0.1.0 (2025-01-13)
|
||||||
|
|
||||||
### Feat
|
### Feat
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
# Sideshow-COREPOS
|
# Sideshow-COREPOS
|
||||||
|
|
||||||
This package adds [CORE-POS](https://www.core-pos.com/) integration
|
This package adds CORE-POS integration for Sideshow.
|
||||||
for [Sideshow](https://pypi.org/project/Sideshow/).
|
|
||||||
|
|
||||||
Full docs are at https://rattailproject.org/docs/sideshow-corepos/
|
Full docs are at https://rattailproject.org/docs/sideshow-corepos/
|
||||||
|
|
|
@ -11,6 +11,7 @@ from importlib.metadata import version as get_version
|
||||||
project = 'Sideshow-COREPOS'
|
project = 'Sideshow-COREPOS'
|
||||||
copyright = '2025, Lance Edgar'
|
copyright = '2025, Lance Edgar'
|
||||||
author = 'Lance Edgar'
|
author = 'Lance Edgar'
|
||||||
|
release = '0.1'
|
||||||
release = get_version('Sideshow-COREPOS')
|
release = get_version('Sideshow-COREPOS')
|
||||||
|
|
||||||
# -- General configuration ---------------------------------------------------
|
# -- General configuration ---------------------------------------------------
|
||||||
|
@ -27,8 +28,8 @@ templates_path = ['_templates']
|
||||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
||||||
|
|
||||||
intersphinx_mapping = {
|
intersphinx_mapping = {
|
||||||
'sideshow': ('https://docs.wuttaproject.org/sideshow/', None),
|
'sideshow': ('https://rattailproject.org/docs/sideshow/', None),
|
||||||
'wuttjamaican': ('https://docs.wuttaproject.org/wuttjamaican/', None),
|
'wuttjamaican': ('https://rattailproject.org/docs/wuttjamaican/', None),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ build-backend = "hatchling.build"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "Sideshow-COREPOS"
|
name = "Sideshow-COREPOS"
|
||||||
version = "0.1.1"
|
version = "0.1.0"
|
||||||
description = "Case/Special Order Tracker for CORE-POS"
|
description = "Case/Special Order Tracker for CORE-POS"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = [
|
authors = [
|
||||||
|
@ -27,14 +27,12 @@ classifiers = [
|
||||||
"Programming Language :: Python :: 3.9",
|
"Programming Language :: Python :: 3.9",
|
||||||
"Programming Language :: Python :: 3.10",
|
"Programming Language :: Python :: 3.10",
|
||||||
"Programming Language :: Python :: 3.11",
|
"Programming Language :: Python :: 3.11",
|
||||||
"Topic :: Office/Business",
|
|
||||||
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
||||||
]
|
]
|
||||||
license = {text = "GNU General Public License v3+"}
|
license = {text = "GNU General Public License v3+"}
|
||||||
requires-python = ">= 3.8"
|
requires-python = ">= 3.8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Sideshow>=0.7.1",
|
"Sideshow>=0.3.0",
|
||||||
"Wutta-COREPOS[web]>=0.3.0",
|
"Wutta-COREPOS[web]>=0.2.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
|
|
|
@ -198,14 +198,6 @@ class NewOrderBatchHandler(base.NewOrderBatchHandler):
|
||||||
row.department_id = product.department_number
|
row.department_id = product.department_number
|
||||||
row.department_name = product.department.name if product.department else None
|
row.department_name = product.department.name if product.department else None
|
||||||
row.special_order = False
|
row.special_order = False
|
||||||
|
|
||||||
row.vendor_name = None
|
|
||||||
row.vendor_item_code = None
|
|
||||||
item = product.default_vendor_item
|
|
||||||
if item:
|
|
||||||
row.vendor_name = item.vendor.name if item.vendor else None
|
|
||||||
row.vendor_item_code = item.sku
|
|
||||||
|
|
||||||
row.case_size = self.get_case_size_for_external_product(product)
|
row.case_size = self.get_case_size_for_external_product(product)
|
||||||
row.unit_cost = product.cost
|
row.unit_cost = product.cost
|
||||||
row.unit_price_reg = self.get_unit_price_reg_for_external_product(product)
|
row.unit_price_reg = self.get_unit_price_reg_for_external_product(product)
|
||||||
|
|
|
@ -44,7 +44,6 @@ def main(global_config, **settings):
|
||||||
pyramid_config = base.make_pyramid_config(settings)
|
pyramid_config = base.make_pyramid_config(settings)
|
||||||
|
|
||||||
# configure DB sessions
|
# configure DB sessions
|
||||||
if hasattr(wutta_config, 'core_office_op_engine'):
|
|
||||||
CoreOpSession.configure(bind=wutta_config.core_office_op_engine)
|
CoreOpSession.configure(bind=wutta_config.core_office_op_engine)
|
||||||
|
|
||||||
# bring in the rest of Sideshow
|
# bring in the rest of Sideshow
|
||||||
|
@ -54,15 +53,15 @@ def main(global_config, **settings):
|
||||||
return pyramid_config.make_wsgi_app()
|
return pyramid_config.make_wsgi_app()
|
||||||
|
|
||||||
|
|
||||||
def make_wsgi_app(config=None):
|
def make_wsgi_app():
|
||||||
"""
|
"""
|
||||||
Make and return the WSGI app (generic entry point).
|
Make and return the WSGI app (generic entry point).
|
||||||
"""
|
"""
|
||||||
return base.make_wsgi_app(main, config=config)
|
return base.make_wsgi_app(main)
|
||||||
|
|
||||||
|
|
||||||
def make_asgi_app(config=None):
|
def make_asgi_app():
|
||||||
"""
|
"""
|
||||||
Make and return the ASGI app (generic entry point).
|
Make and return the ASGI app (generic entry point).
|
||||||
"""
|
"""
|
||||||
return base.make_asgi_app(main, config=config)
|
return base.make_asgi_app(main)
|
||||||
|
|
|
@ -259,5 +259,3 @@ class TestNewOrderBatchHandler(DataTestCase):
|
||||||
self.assertEqual(row.product_size, "32oz")
|
self.assertEqual(row.product_size, "32oz")
|
||||||
self.assertEqual(row.case_size, decimal.Decimal('12.3400'))
|
self.assertEqual(row.case_size, decimal.Decimal('12.3400'))
|
||||||
self.assertEqual(row.unit_price_reg, decimal.Decimal('4.19'))
|
self.assertEqual(row.unit_price_reg, decimal.Decimal('4.19'))
|
||||||
self.assertEqual(row.vendor_name, 'Acme Distributors')
|
|
||||||
self.assertEqual(row.vendor_item_code, '1234')
|
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
# -*- coding: utf-8; -*-
|
|
||||||
|
|
||||||
from wuttjamaican.testing import ConfigTestCase
|
|
||||||
|
|
||||||
from sideshow_corepos import config as mod
|
|
||||||
|
|
||||||
|
|
||||||
class TestSideshowCoreposConfig(ConfigTestCase):
|
|
||||||
|
|
||||||
def test_basic(self):
|
|
||||||
|
|
||||||
self.assertIsNone(self.config.get('wutta.batch.neworder.handler.spec'))
|
|
||||||
|
|
||||||
ext = mod.SideshowCoreposConfig()
|
|
||||||
ext.configure(self.config)
|
|
||||||
|
|
||||||
self.assertEqual(self.config.get('wutta.batch.neworder.handler.spec'),
|
|
||||||
'sideshow_corepos.batch.neworder:NewOrderBatchHandler')
|
|
|
@ -1,44 +1,32 @@
|
||||||
# -*- coding: utf-8; -*-
|
# -*- coding: utf-8; -*-
|
||||||
|
|
||||||
import sqlalchemy as sa
|
from wuttjamaican.testing import FileTestCase, ConfigTestCase
|
||||||
|
|
||||||
from wuttjamaican.testing import DataTestCase
|
|
||||||
|
|
||||||
from asgiref.wsgi import WsgiToAsgi
|
from asgiref.wsgi import WsgiToAsgi
|
||||||
from pyramid.router import Router
|
from pyramid.router import Router
|
||||||
|
|
||||||
from wutta_corepos.web.db import CoreOpSession
|
|
||||||
|
|
||||||
from sideshow_corepos.web import app as mod
|
from sideshow_corepos.web import app as mod
|
||||||
|
|
||||||
|
|
||||||
class TestMain(DataTestCase):
|
class TestMain(FileTestCase):
|
||||||
|
|
||||||
def test_basic(self):
|
def test_basic(self):
|
||||||
global_config = None
|
global_config = None
|
||||||
settings = {'wutta_config': self.config}
|
myconf = self.write_file('my.conf', '')
|
||||||
|
settings = {'wutta.config': myconf}
|
||||||
app = mod.main(global_config, **settings)
|
app = mod.main(global_config, **settings)
|
||||||
self.assertIsInstance(app, Router)
|
self.assertIsInstance(app, Router)
|
||||||
self.assertIsNone(CoreOpSession.session_factory.kw['bind'])
|
|
||||||
|
|
||||||
def test_corepos_engine(self):
|
|
||||||
engine = sa.create_engine('sqlite://')
|
|
||||||
self.config.core_office_op_engine = engine
|
|
||||||
settings = {'wutta_config': self.config}
|
|
||||||
app = mod.main(None, **settings)
|
|
||||||
self.assertIsInstance(app, Router)
|
|
||||||
self.assertIs(CoreOpSession.session_factory.kw['bind'], engine)
|
|
||||||
|
|
||||||
|
|
||||||
class TestMakeWsgiApp(DataTestCase):
|
class TestMakeWsgiApp(ConfigTestCase):
|
||||||
|
|
||||||
def test_basic(self):
|
def test_basic(self):
|
||||||
wsgi = mod.make_wsgi_app(config=self.config)
|
wsgi = mod.make_wsgi_app()
|
||||||
self.assertIsInstance(wsgi, Router)
|
self.assertIsInstance(wsgi, Router)
|
||||||
|
|
||||||
|
|
||||||
class TestMakeAsgiApp(DataTestCase):
|
class TestMakeAsgiApp(ConfigTestCase):
|
||||||
|
|
||||||
def test_basic(self):
|
def test_basic(self):
|
||||||
asgi = mod.make_asgi_app(config=self.config)
|
asgi = mod.make_asgi_app()
|
||||||
self.assertIsInstance(asgi, WsgiToAsgi)
|
self.assertIsInstance(asgi, WsgiToAsgi)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue