Merge branch 'master' of bitbucket.org:presik/trytonpsk-dash_sale

This commit is contained in:
oscar alvarez 2023-01-30 08:03:52 -05:00
commit f6c296ecc4
6 changed files with 154 additions and 1 deletions

View File

@ -12,6 +12,7 @@ def register():
sale.AppSaleOrder,
sale.AppTakeOrder,
sale.AppOrderViewer,
sale.AppSaleCallCenter,
sale.AppSelfServiceSale,
dash.DashApp,
module='dash_sale', type_='model')

View File

@ -15,6 +15,7 @@ class DashApp(metaclass=PoolMeta):
'dash.app.take_order',
'dash.app.order_viewer',
'dash.app.self_service_sale',
'dash.app.sale_call_center',
])
return origins
@ -27,5 +28,6 @@ class DashApp(metaclass=PoolMeta):
('take_order', 'Take Order'),
('order_viewer', 'Order Viewer'),
('self_service_sale', 'Self-Service Sale'),
('sale_call_center', 'Sale Call Center'),
])
return options

108
sale.py
View File

@ -50,6 +50,8 @@ class Sale(metaclass=PoolMeta):
v['discount'] = Decimal(v['discount'])/100
elif v.get('discount'):
del v['discount']
if v.get('unit_price'):
v['unit_price'] = Decimal(str(v['unit_price']))
v['unit'] = product.template.default_uom.id
v['description'] = product.name
taxes = list(product.account_category.customer_taxes_used)
@ -110,7 +112,8 @@ class Sale(metaclass=PoolMeta):
'comment': comment,
'lines': [('create', args['lines'])],
}
if args.get('consumer'):
to_create['consumer'] = args['consumer']
sale, = cls.create([to_create])
for line in sale.lines:
if line.discount and line.discount > 0:
@ -183,6 +186,104 @@ class Sale(metaclass=PoolMeta):
# )
return res
@classmethod
def dash_create_order_call(cls, args, ctx=None):
Shop = Pool().get('sale.shop')
Product = Pool().get('product.product')
Party = Pool().get('party.party')
User = Pool().get('res.user')
ctx = Transaction().context
if ctx.get('shop'):
shop = Shop(ctx['shop'])
else:
user_id = ctx.get('user')
user = User(user_id)
shop = user.shop
for v in args['lines']:
if v.get('id'):
del v['id']
if v.get('amount'):
del v['amount']
if v.get('unit_price_w_tax'):
del v['unit_price_w_tax']
if v.get('total_amount'):
del v['total_amount']
v['type'] = 'line'
product = Product(v['product'])
if v.get('discount') and v['discount'] != '':
v['discount'] = Decimal(v['discount'])/100
elif v.get('discount'):
del v['discount']
if v.get('unit_price'):
v['unit_price'] = Decimal(str(v['unit_price']))
v['unit'] = product.template.default_uom.id
v['description'] = product.name
taxes = list(product.account_category.customer_taxes_used)
taxes_ids = [t.id for t in taxes]
v['taxes'] = [('add', taxes_ids)]
price_list = args.get('price_list', None)
party = Party(args['party'])
if args.get('shipment_address'):
shipment_address_id = args.get('shipment_address')
else:
shipment_address_id = party.addresses[0].id
agent_id = None
if args.get('agent'):
agent_id = args['agent']
shipment_date = None
if args.get('shipment_date'):
shipment_date = args['shipment_date']
description = args.get('description', '')
comment = args.get('comment', '')
today = date.today()
to_create = {
'consumer': args['consumer'],
'source': args['source'],
'kind': args['kind'],
'shop': shop.id,
'salesman': user.employee,
'invoice_type': 'P',
'company': shop.company.id,
'party': party.id,
'sale_date': today,
'shipment_date': shipment_date,
'shipment_address': shipment_address_id,
'invoice_address': shipment_address_id,
'agent': agent_id,
'price_list': price_list,
'payment_term': shop.payment_term.id,
'state': 'requested',
'description': description,
'comment': comment,
'lines': [('create', args['lines'])],
}
if args.get('consumer'):
to_create['consumer'] = args['consumer']
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.update({
'id': sale.id,
'state': sale.state,
'number': sale.number,
'total_amount': sale.total_amount,
})
res = {
'record': record,
'msg': 'successful_order',
'type': 'success',
'open_modal': True,
}
return res
@classmethod
def mark_commanded(cls, args):
"""
@ -588,3 +689,8 @@ class AppSaleOrder(DashAppBase):
class AppSelfServiceSale(DashAppBase):
'App Self Service Sale'
__name__ = 'dash.app.self_service_sale'
class AppSaleCallCenter(DashAppBase):
'App Sale Call Center'
__name__ = 'dash.app.sale_call_center'

View File

@ -111,5 +111,32 @@ this repository contains the full copyright notices and license terms. -->
</record>
<menuitem parent="dash.menu_configuration" sequence="60"
action="act_dash_app_self_service_form" id="menu_dash_app_self_service_form"/>
<record model="ir.ui.view" id="dash_app_sale_call_center_view_form">
<field name="model">dash.app.sale_call_center</field>
<field name="type">form</field>
<field name="name">app_sale_call_center_form</field>
</record>
<record model="ir.ui.view" id="dash_app_sale_call_center_view_tree">
<field name="model">dash.app.sale_call_center</field>
<field name="type">tree</field>
<field name="name">app_sale_call_center_tree</field>
</record>
<record model="ir.action.act_window" id="act_dash_app_sale_call_center_form">
<field name="name">App Sale Call Center</field>
<field name="res_model">dash.app.sale_call_center</field>
</record>
<record model="ir.action.act_window.view" id="act_dash_app_sale_call_center_form_view1">
<field name="sequence" eval="1"/>
<field name="view" ref="dash_app_sale_call_center_view_tree"/>
<field name="act_window" ref="act_dash_app_sale_call_center_form"/>
</record>
<record model="ir.action.act_window.view" id="act_dash_app_sale_call_center_form_view2">
<field name="sequence" eval="2"/>
<field name="view" ref="dash_app_sale_call_center_view_form"/>
<field name="act_window" ref="act_dash_app_sale_call_center_form"/>
</record>
<menuitem parent="dash.menu_configuration" sequence="60"
action="act_dash_app_sale_call_center_form" id="menu_dash_app_sale_call_center_form"/>
</data>
</tryton>

View File

@ -0,0 +1,11 @@
<?xml version="1.0"?>
<!-- This file is part sale_shop module for Tryton.
The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. -->
<form>
<label name="company"/>
<field name="company" widget="selection"/>
<label name="icon"/>
<field name="icon"/>
<label name="kind"/>
<field name="kind"/>
</form>

View File

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<!-- This file is part sale_shop module for Tryton.
The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. -->
<tree >
<field name="company"/>
</tree>