Add get line
This commit is contained in:
parent
a34ff9dbff
commit
dd0bb097e3
66
sale.py
66
sale.py
|
@ -1,6 +1,8 @@
|
|||
# This file is part of purchase_discount module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
import math
|
||||
from decimal import Decimal
|
||||
from sql import Table
|
||||
from sql.aggregate import Sum
|
||||
from datetime import date
|
||||
|
@ -23,6 +25,7 @@ class Sale(metaclass=PoolMeta):
|
|||
Product = Pool().get('product.product')
|
||||
shop_id = ctx['shop']
|
||||
shop = Shop(shop_id)
|
||||
today = date.today()
|
||||
for v in args['lines']:
|
||||
del v['id']
|
||||
del v['amount']
|
||||
|
@ -30,19 +33,23 @@ class Sale(metaclass=PoolMeta):
|
|||
product = Product(v['product'])
|
||||
v['unit'] = product.template.default_uom.id
|
||||
|
||||
price_list = args.get('price_list', None)
|
||||
if price_list:
|
||||
price_list = price_list['id']
|
||||
to_create = {
|
||||
'shop': shop_id,
|
||||
'invoice_type': 'P',
|
||||
'company': shop.company.id,
|
||||
'party': args['party']['id'],
|
||||
'sale_date': args['sale_date'],
|
||||
'sale_date': today,
|
||||
'shipment_date': args['shipment_date'],
|
||||
'shipment_address': args['shipment_address']['id'],
|
||||
'invoice_address': args['shipment_address']['id'],
|
||||
'agent': args['agent']['id'],
|
||||
'price_list': args.get('price_list'),
|
||||
'price_list': price_list,
|
||||
'payment_term': shop.payment_term.id,
|
||||
'state': 'draft',
|
||||
'comment': args.get('comment', ''),
|
||||
'description': args.get('comment', ''),
|
||||
'lines': [('create', args['lines'])],
|
||||
}
|
||||
sale, = cls.create([to_create])
|
||||
|
@ -56,6 +63,59 @@ class Sale(metaclass=PoolMeta):
|
|||
}
|
||||
return res
|
||||
|
||||
@classmethod
|
||||
def dash_get_line(cls, args, ctx):
|
||||
if not args.get('product'):
|
||||
return {}
|
||||
|
||||
Product = Pool().get('product.product')
|
||||
PriceListLine = Pool().get('product.price_list.line')
|
||||
product_id = args['product']['id']
|
||||
product = Product(product_id)
|
||||
|
||||
with Transaction().set_context(ctx):
|
||||
unit_price = product.list_price
|
||||
|
||||
if args.get('quantity'):
|
||||
quantity = int(args.get('quantity'))
|
||||
else:
|
||||
quantity = 1
|
||||
|
||||
if ctx.get('price_list'):
|
||||
price_list_id = ctx.get('price_list')['id']
|
||||
else:
|
||||
price_list_id = None
|
||||
|
||||
percent_commission = 0
|
||||
if price_list_id:
|
||||
price_lines = PriceListLine.search([
|
||||
('price_list', '=', price_list_id),
|
||||
('product', '=', product_id),
|
||||
])
|
||||
if price_lines:
|
||||
price_line = price_lines[0]
|
||||
unit_price = float(unit_price)
|
||||
unit_price = Decimal(eval(price_line.formula))
|
||||
percent_commission = price_line.price_list.percent_commission
|
||||
|
||||
#ADD TAXES
|
||||
taxes_ids = [t.id for t in product.customer_taxes_used]
|
||||
# res = cls.get_price_with_tax([line], ['amount_w_tax', 'unit_price_w_tax'])
|
||||
print('prueba.........')
|
||||
res = {
|
||||
# 'unit_price_w_tax': math.ceil(res['unit_price_w_tax'][None]),
|
||||
# 'amount_w_tax': math.ceil(res['amount_w_tax'][None]),
|
||||
# 'taxes': [[('add'), taxes_ids]],
|
||||
'unit_price': math.ceil(unit_price),
|
||||
'unit': product.template.default_uom.id,
|
||||
'type': 'line',
|
||||
}
|
||||
if percent_commission:
|
||||
res['commission_amount'] = round(
|
||||
(unit_price * quantity * percent_commission), 0
|
||||
)
|
||||
return res
|
||||
|
||||
@classmethod
|
||||
def report_sales_day(cls, args, ctx):
|
||||
pass
|
||||
|
|
Loading…
Reference in New Issue