Parcourir la source

[FIX] amount to compute move lines and pricelist selection

Gogs il y a 7 ans
Parent
commit
53b27ac8a2
1 fichiers modifiés avec 24 ajouts et 3 suppressions
  1. 24 3
      controllers/main.py

+ 24 - 3
controllers/main.py

@@ -293,10 +293,26 @@ class PosSales(http.Controller):
         journal = request.env['account.journal'].browse(journal_id)
         return journal.default_credit_account_id.currency_id.id or journal.default_credit_account_id.company_currency_id.id
 
+    '''
+        Check currency in pricelist and get it
+    '''
+    def get_pricelist(self, currency_id):
+        pricelist = request.env['product.pricelist'].search([('active', '=', True), ('type', '=', 'sale')])
+
+        if not True in pricelist.mapped(lambda p: p.currency_id.id == currency_id):
+            pricelist = pricelist[0].copy()
+            pricelist.write({
+                'currency_id': currency_id
+            })
+        else:
+            pricelist = pricelist.filtered(lambda p: p.currency_id.id == currency_id)
+        
+        return pricelist
+
     '''
         Create sale order from cart items values
     '''
-    def create_sale_from_cart(self, partner_id, cart_items, date_confirm, currency_id, payment_term_id):
+    def create_sale_from_cart(self, partner_id, cart_items, date_confirm, currency_id, pricelist_id, payment_term_id):
         return request.env['sale.order'].create({
             'partner_id': partner_id,
             'order_line': [[0, False, {
@@ -308,6 +324,7 @@ class PosSales(http.Controller):
             'state': 'manual',
             'date_confirm': date_confirm,
             'currency_id': currency_id,
+            'pricelist_id': pricelist_id,
             'payment_term': payment_term_id
         })
 
@@ -557,8 +574,12 @@ class PosSales(http.Controller):
         currency_id = self.get_currency(kw.get('journalId'))
         self.make_info_log('[OK] Getting journal')
 
+        # Get Pricelist
+        pricelist = self.get_pricelist(currency_id)
+        self.make_info_log('[OK] Getting product pricelist')
+
         # Create sale orde
-        sale_order = self.create_sale_from_cart(kw.get('customerId'), kw.get('items'), date_now, currency_id, kw.get('paymentTermId'))
+        sale_order = self.create_sale_from_cart(kw.get('customerId'), kw.get('items'), date_now, currency_id, pricelist.id, kw.get('paymentTermId'))
         self.make_info_log('[OK] Creating sale order')
 
         # Confirm sale
@@ -570,7 +591,7 @@ class PosSales(http.Controller):
         self.make_info_log('[OK] Creating invoice')
 
         # Create invoice move lines
-        invoice_move_lines = self.create_invoice_move_lines(invoice.id, kw.get('total', 0), date_now)
+        invoice_move_lines = self.create_invoice_move_lines(invoice.id, float(kw.get('payment')), date_now)
         self.make_info_log('[OK] Creating invoice move lines')
 
         # Create account move