add app sale_notification

This commit is contained in:
Wilson Gomez 2023-04-19 14:15:59 -05:00
parent 01fa1ee946
commit 615635ebca
3 changed files with 26 additions and 16 deletions

View File

@ -15,5 +15,6 @@ def register():
sale.AppSaleCallCenter, sale.AppSaleCallCenter,
sale.AppSelfServiceSale, sale.AppSelfServiceSale,
sale.AppSaleTurn, sale.AppSaleTurn,
sale.AppOrderNotification,
dash.DashApp, dash.DashApp,
module='dash_sale', type_='model') module='dash_sale', type_='model')

View File

@ -17,6 +17,7 @@ class DashApp(metaclass=PoolMeta):
'dash.app.self_service_sale', 'dash.app.self_service_sale',
'dash.app.sale_call_center', 'dash.app.sale_call_center',
'dash.app.sale_turn', 'dash.app.sale_turn',
'dash.app.order_notification',
]) ])
return origins return origins
@ -31,5 +32,6 @@ class DashApp(metaclass=PoolMeta):
('self_service_sale', 'Self-Service Sale'), ('self_service_sale', 'Self-Service Sale'),
('sale_call_center', 'Sale Call Center'), ('sale_call_center', 'Sale Call Center'),
('sale_turn', 'Sale Turn'), ('sale_turn', 'Sale Turn'),
('order_notification', 'Order Notification'),
]) ])
return options return options

39
sale.py
View File

@ -350,19 +350,20 @@ class Sale(metaclass=PoolMeta):
return res return res
@classmethod @classmethod
def dash_create_order_call(cls, args, ctx=None): def dash_create_order_call(cls, args):
Shop = Pool().get('sale.shop') Shop = Pool().get('sale.shop')
Product = Pool().get('product.product') Product = Pool().get('product.product')
Party = Pool().get('party.party') Party = Pool().get('party.party')
User = Pool().get('res.user') User = Pool().get('res.user')
ctx = Transaction().context ctx = Transaction().context
if ctx.get('shop'): # if ctx.get('shop'):
shop = Shop(ctx['shop']) # shop = Shop(ctx['shop'])
else: # else:
user_id = ctx.get('user') # user_id = ctx.get('user')
user = User(user_id) # shop = user.shop
shop = user.shop
user = User(ctx.get('user'))
shop = Shop(args['shop']['id'])
for v in args['lines']: for v in args['lines']:
if v.get('id'): if v.get('id'):
del v['id'] del v['id']
@ -373,7 +374,7 @@ class Sale(metaclass=PoolMeta):
if v.get('total_amount'): if v.get('total_amount'):
del v['total_amount'] del v['total_amount']
v['type'] = 'line' v['type'] = 'line'
product = Product(v['product']) product = Product(v['product']['id'])
if v.get('discount') and v['discount'] != '': if v.get('discount') and v['discount'] != '':
v['discount'] = Decimal(v['discount'])/100 v['discount'] = Decimal(v['discount'])/100
@ -383,12 +384,13 @@ class Sale(metaclass=PoolMeta):
v['unit_price'] = Decimal(str(v['unit_price'])) v['unit_price'] = Decimal(str(v['unit_price']))
v['unit'] = product.template.default_uom.id v['unit'] = product.template.default_uom.id
v['description'] = product.name v['description'] = product.name
v['product'] = v['product']['id']
taxes = list(product.account_category.customer_taxes_used) taxes = list(product.account_category.customer_taxes_used)
taxes_ids = [t.id for t in taxes] taxes_ids = [t.id for t in taxes]
v['taxes'] = [('add', taxes_ids)] v['taxes'] = [('add', taxes_ids)]
price_list = args.get('price_list', None) price_list = args.get('price_list', None)
party = Party(args['party']) party = Party(args['party']['id'])
if args.get('shipment_address'): if args.get('shipment_address'):
shipment_address_id = args.get('shipment_address') shipment_address_id = args.get('shipment_address')
else: else:
@ -404,11 +406,13 @@ class Sale(metaclass=PoolMeta):
description = args.get('description', '') description = args.get('description', '')
comment = args.get('comment', '') comment = args.get('comment', '')
delivery = args.get('delivery', '')
today = date.today() today = date.today()
to_create = { to_create = {
'consumer': args['consumer'], 'consumer': args['consumer']['id'],
'source': args['source'], 'source': args['source']['id'],
'kind': args['kind'], 'kind': args['kind'],
'delivery': delivery,
'shop': shop.id, 'shop': shop.id,
'salesman': user.employee, 'salesman': user.employee,
'invoice_type': 'P', 'invoice_type': 'P',
@ -421,17 +425,15 @@ class Sale(metaclass=PoolMeta):
'agent': agent_id, 'agent': agent_id,
'price_list': price_list, 'price_list': price_list,
'payment_term': shop.payment_term.id, 'payment_term': shop.payment_term.id,
'state': 'requested', 'state': 'draft',
'order_status': 'requested',
'description': description, 'description': description,
'comment': comment, 'comment': comment,
'lines': [('create', args['lines'])], 'lines': [('create', args['lines'])],
} }
if args.get('consumer'): if args.get('consumer'):
to_create['consumer'] = args['consumer'] to_create['consumer'] = args['consumer']['id']
sale, = cls.create([to_create]) sale, = cls.create([to_create])
for line in sale.lines:
if line.discount and line.discount > 0:
line.on_change_discount()
record = args.copy() record = args.copy()
record.update({ record.update({
'id': sale.id, 'id': sale.id,
@ -883,3 +885,8 @@ class AppSaleCallCenter(DashAppBase):
class AppSaleTurn(DashAppBase): class AppSaleTurn(DashAppBase):
'App Sale Turn' 'App Sale Turn'
__name__ = 'dash.app.sale_turn' __name__ = 'dash.app.sale_turn'
class AppOrderNotification(DashAppBase):
'App Order Notification'
__name__ = 'dash.app.order_notification'