|
@@ -8,7 +8,16 @@ from account_voucher import create_account_voucher
|
|
|
from http_response import make_gzip_response
|
|
|
from product_pricelist import get_pricelist_id
|
|
|
from product_template import get_products
|
|
|
-from purchase_order import (get_purchase_orders, get_purchase_order, create_purchase_order, confirm_purchase_order, done_purchase_order, force_assign_picking, done_picking)
|
|
|
+from purchase_order import (
|
|
|
+ get_purchase_orders,
|
|
|
+ get_purchase_order,
|
|
|
+ create_purchase_order,
|
|
|
+ confirm_purchase_order,
|
|
|
+ done_purchase_order,
|
|
|
+ create_picking,
|
|
|
+ force_assign_picking,
|
|
|
+ done_picking
|
|
|
+)
|
|
|
from res_bank_cheque_type import get_cheque_types
|
|
|
from res_bank_payments_type import get_bank_payment_types
|
|
|
from res_bank import get_banks
|
|
@@ -84,7 +93,15 @@ def process_data(data=None):
|
|
|
if not data:
|
|
|
return {}
|
|
|
|
|
|
- def drafting_order(currency_id, supplier_id, cart_items, date_now, payment_term_id, warehouse_id=None, user_id=None):
|
|
|
+ def drafting_order(vals={}):
|
|
|
+ currency_id = vals.get('currency_id', None)
|
|
|
+ supplier_id = vals.get('supplier_id', None)
|
|
|
+ cart_items = vals.get(cart_items, [])
|
|
|
+ date_now = vals.get('date_now', None)
|
|
|
+ payment_term_id = vals.get('payment_term_id', None)
|
|
|
+ warehouse_id = vals.get('warehouse_id', None)
|
|
|
+ user_id = vals.get('user_id', None)
|
|
|
+
|
|
|
pricelist_id = get_pricelist_id(currency_id)
|
|
|
|
|
|
order = create_purchase_order(supplier_id, cart_items, date_now, currency_id, pricelist_id, payment_term_id, warehouse_id, user_id)
|
|
@@ -100,24 +117,53 @@ def process_data(data=None):
|
|
|
|
|
|
return order.id
|
|
|
|
|
|
- def paying_order(order_id, supplier_invoice_number=None, date_now=None, payment_term_id=None, user_id=None, mode=None):
|
|
|
- order = get_purchase_order(order_id)
|
|
|
-
|
|
|
- lines = [{
|
|
|
- 'name': l.name,
|
|
|
- 'id': l.product_id.id,
|
|
|
- 'quantity': l.product_qty,
|
|
|
- 'price': l.price_unit
|
|
|
- } for l in order.order_line]
|
|
|
-
|
|
|
- invoice = create_invoice(order.name, order.partner_id.id, lines, order.currency_id.id, payment_term_id, supplier_invoice_number, user_id)
|
|
|
+ def paying_order(vals={}):
|
|
|
+ order_id = vals.get('order_id', None)
|
|
|
+ cart_items = vals.get('cart_items', [])
|
|
|
+ currency_id = vals.get('currency_id', None)
|
|
|
+ supplier_id = vals.get('supplier_id', None)
|
|
|
+ supplier_invoice_number = vals.get('supplier_invoice_number', None)
|
|
|
+ date_now = vals.get('date_now', None)
|
|
|
+ payment_term_id = vals.get('payment_term_id', None)
|
|
|
+ user_id = vals.get('user_id', None)
|
|
|
+ mode = vals.get('mode', None)
|
|
|
+
|
|
|
+ order_name = None
|
|
|
+ order_lines = None
|
|
|
+
|
|
|
+ if order_id:
|
|
|
+ order = get_purchase_order(order_id)
|
|
|
+
|
|
|
+ order_name = order.name
|
|
|
+ order_lines = [
|
|
|
+ {
|
|
|
+ 'name': l.name,
|
|
|
+ 'id': l.product_id.id,
|
|
|
+ 'quantity': l.product_qty,
|
|
|
+ 'price': l.price_unit
|
|
|
+ } for l in order.order_line
|
|
|
+ ]
|
|
|
+ supplier_id = order.partner_id.id
|
|
|
+ currency_id = order.currency_id.id
|
|
|
+ else:
|
|
|
+ order_lines = [
|
|
|
+ {
|
|
|
+ 'name': item.get('name'),
|
|
|
+ 'id': item.get('id'),
|
|
|
+ 'quantity': item.get('quantity'),
|
|
|
+ 'price': item.get('price')
|
|
|
+ } for item in cart_items
|
|
|
+ ]
|
|
|
+
|
|
|
+ invoice = create_invoice(order_name, supplier_id, order_lines, currency_id, payment_term_id, supplier_invoice_number, user_id)
|
|
|
|
|
|
invoice_ids = invoice.mapped(lambda x: x.id)
|
|
|
|
|
|
- order.write({
|
|
|
- 'invoice_ids': [[4, invoice_ids, False]],
|
|
|
- 'invoiced': True
|
|
|
- })
|
|
|
+ if order_id:
|
|
|
+ order.write({
|
|
|
+ 'invoice_ids': [[4, invoice_ids, False]],
|
|
|
+ 'invoiced': True
|
|
|
+ })
|
|
|
|
|
|
prepare_invoice(invoice_ids, currency_id, date_now)
|
|
|
move_lines = create_invoice_move_lines(invoice_ids, payment, date_now)
|
|
@@ -129,8 +175,14 @@ def process_data(data=None):
|
|
|
close_invoice(invoice_ids)
|
|
|
|
|
|
bank_statement = invoice.create_bank_statement(date_now, user_id, account_voucher, None)
|
|
|
+
|
|
|
+ if order_id and len(order.picking_ids) == 0:
|
|
|
+ create_picking(order_id)
|
|
|
+
|
|
|
return bank_statement.id
|
|
|
|
|
|
+
|
|
|
+
|
|
|
def complete_order(order_id):
|
|
|
if not order_id:
|
|
|
return None
|
|
@@ -150,14 +202,49 @@ def process_data(data=None):
|
|
|
user_id = data.get('userId', None)
|
|
|
payment = float(data.get('payment', 0.0))
|
|
|
|
|
|
- if mode not in ('product_picking', 'payment', 'product_taking'):
|
|
|
- order_id, currency_id = drafting_order(currency_id, supplier_id, cart_items, date_now, payment_term_id, warehouse_id, user_id)
|
|
|
+ if mode == 'purchase':
|
|
|
+ order_id, currency_id = drafting_order({
|
|
|
+ 'currency_id': currency_id,
|
|
|
+ 'supplier_id': supplier_id,
|
|
|
+ 'cart_items': cart_items,
|
|
|
+ 'date_now': date_now,
|
|
|
+ 'payment_term_id': payment_term_id,
|
|
|
+ 'warehouse_id': warehouse_id,
|
|
|
+ 'user_id': user_id
|
|
|
+ })
|
|
|
confirm_purchase_order(order_id)
|
|
|
- paying_order(order_id, supplier_invoice_number, date_now, payment_term_id, user_id, mode)
|
|
|
+ paying_order({
|
|
|
+ 'order_id': order_id,
|
|
|
+ 'supplier_invoice_number': supplier_invoice_number,
|
|
|
+ 'date_now': date_now,
|
|
|
+ 'payment_term_id': payment_term_id,
|
|
|
+ 'user_id': user_id,
|
|
|
+ 'mode': mode
|
|
|
+ })
|
|
|
done_purchase_order(order_id)
|
|
|
|
|
|
+ if mode == 'expense':
|
|
|
+ paying_order({
|
|
|
+ 'supplier_id': supplier_id,
|
|
|
+ 'cart_items': cart_items,
|
|
|
+ 'currency_id': currency_id,
|
|
|
+ 'supplier_invoice_number': supplier_invoice_number,
|
|
|
+ 'date_now': date_now,
|
|
|
+ 'payment_term_id': payment_term_id,
|
|
|
+ 'user_id': user_id,
|
|
|
+ 'mode': mode
|
|
|
+ })
|
|
|
+
|
|
|
if mode == 'product_picking':
|
|
|
- order_id, currency_id = drafting_order(currency_id, supplier_id, cart_items, date_now, payment_term_id, warehouse_id, user_id)
|
|
|
+ order_id, currency_id = drafting_order({
|
|
|
+ 'currency_id': currency_id,
|
|
|
+ 'supplier_id': supplier_id,
|
|
|
+ 'cart_items': cart_items,
|
|
|
+ 'date_now': date_now,
|
|
|
+ 'payment_term_id': payment_term_id,
|
|
|
+ 'warehouse_id': warehouse_id,
|
|
|
+ 'user_id': user_id
|
|
|
+ })
|
|
|
confirm_purchase_order(order_id)
|
|
|
|
|
|
if mode == 'payment':
|
|
@@ -166,7 +253,14 @@ def process_data(data=None):
|
|
|
if not order_id:
|
|
|
return
|
|
|
|
|
|
- paying_order(order_id, supplier_invoice_number, date_now, payment_term_id, user_id, mode)
|
|
|
+ paying_order({
|
|
|
+ 'order_id': order_id,
|
|
|
+ 'supplier_invoice_number': supplier_invoice_number,
|
|
|
+ 'date_now': date_now,
|
|
|
+ 'payment_term_id': payment_term_id,
|
|
|
+ 'user_id': user_id,
|
|
|
+ 'mode': mode
|
|
|
+ })
|
|
|
done_purchase_order(order_id)
|
|
|
|
|
|
if mode == 'product_taking':
|