|
@@ -28,14 +28,20 @@ LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
class PosSales(http.Controller):
|
|
|
|
|
|
- '''
|
|
|
- '''
|
|
|
+ #################
|
|
|
+ # ╦ ╔═╗╔═╗ #
|
|
|
+ # ║ ║ ║║ ╦ #
|
|
|
+ # ╩═╝╚═╝╚═╝ #
|
|
|
+ #################
|
|
|
def make_info_log(self, log):
|
|
|
LOGGER.info('\033[1;34m[INFO] --> \033[m{}'.format(log))
|
|
|
|
|
|
- '''
|
|
|
- New purchase resource route
|
|
|
- '''
|
|
|
+
|
|
|
+ #####################################
|
|
|
+ # ╦╔╗╔╦╔╦╗ ╔═╗╦═╗╔═╗╔═╗╔═╗╔═╗╔═╗ #
|
|
|
+ # ║║║║║ ║ ╠═╝╠╦╝║ ║║ ║╣ ╚═╗╚═╗ #
|
|
|
+ # ╩╝╚╝╩ ╩ ╩ ╩╚═╚═╝╚═╝╚═╝╚═╝╚═╝ #
|
|
|
+ #####################################
|
|
|
@http.route('/eiru_sales/init', auth='user', methods=['GET'], cors='*')
|
|
|
def _init_sale(self, **kw):
|
|
|
self.make_info_log('Sending JSON response')
|
|
@@ -59,10 +65,13 @@ class PosSales(http.Controller):
|
|
|
}
|
|
|
|
|
|
return make_gzip_response(data)
|
|
|
-
|
|
|
- '''
|
|
|
- Get products data only
|
|
|
- '''
|
|
|
+
|
|
|
+
|
|
|
+ #####################################################################
|
|
|
+ # ╔═╗╔═╗╔╦╗ ╔═╗╦═╗╔═╗╔╦╗╦ ╦╔═╗╔╦╗╔═╗ ╔╦╗╔═╗╔╦╗╔═╗ ╔═╗╔╗╔╦ ╦ ╦ #
|
|
|
+ # ║ ╦║╣ ║ ╠═╝╠╦╝║ ║ ║║║ ║║ ║ ╚═╗ ║║╠═╣ ║ ╠═╣ ║ ║║║║║ ╚╦╝ #
|
|
|
+ # ╚═╝╚═╝ ╩ ╩ ╩╚═╚═╝═╩╝╚═╝╚═╝ ╩ ╚═╝ ═╩╝╩ ╩ ╩ ╩ ╩ ╚═╝╝╚╝╩═╝╩ #
|
|
|
+ #####################################################################
|
|
|
@http.route('/eiru_sales/get_images', auth='user', methods=['GET'], cors='*')
|
|
|
def _get_images_only(self, **kw):
|
|
|
image_type = str(get_pos_config().get('imageType'))
|
|
@@ -72,97 +81,144 @@ class PosSales(http.Controller):
|
|
|
'products': get_products(image_type=image_type)
|
|
|
})
|
|
|
|
|
|
- '''
|
|
|
- Create customer and return data
|
|
|
- '''
|
|
|
+
|
|
|
+ #################################################################################################
|
|
|
+ # ╔═╗╦═╗╔═╗╔═╗╔╦╗╔═╗ ╔═╗╦ ╦╔═╗╔╦╗╔═╗╔╦╗╔═╗╦═╗ ╔═╗╔╗╔╔╦╗ ╦═╗╔═╗╔╦╗╦ ╦╦═╗╔╗╔ ╔╦╗╔═╗╔╦╗╔═╗ #
|
|
|
+ # ║ ╠╦╝║╣ ╠═╣ ║ ║╣ ║ ║ ║╚═╗ ║ ║ ║║║║║╣ ╠╦╝ ╠═╣║║║ ║║ ╠╦╝║╣ ║ ║ ║╠╦╝║║║ ║║╠═╣ ║ ╠═╣ #
|
|
|
+ # ╚═╝╩╚═╚═╝╩ ╩ ╩ ╚═╝ ╚═╝╚═╝╚═╝ ╩ ╚═╝╩ ╩╚═╝╩╚═ ╩ ╩╝╚╝═╩╝ ╩╚═╚═╝ ╩ ╚═╝╩╚═╝╚╝ ═╩╝╩ ╩ ╩ ╩ ╩ #
|
|
|
+ #################################################################################################
|
|
|
@http.route('/eiru_sales/create_customer', type='json', auth='user', methods=['POST'], cors='*')
|
|
|
def _create_customer(self, **kw):
|
|
|
self.make_info_log('Creating customer')
|
|
|
return create_customer(kw)
|
|
|
|
|
|
- '''
|
|
|
- Save settings
|
|
|
- '''
|
|
|
+
|
|
|
+ #############################################
|
|
|
+ # ╔═╗╔═╗╦ ╦╔═╗ ╔═╗╔═╗╔╦╗╔╦╗╦╔╗╔╔═╗╔═╗ #
|
|
|
+ # ╚═╗╠═╣╚╗╔╝║╣ ╚═╗║╣ ║ ║ ║║║║║ ╦╚═╗ #
|
|
|
+ # ╚═╝╩ ╩ ╚╝ ╚═╝ ╚═╝╚═╝ ╩ ╩ ╩╝╚╝╚═╝╚═╝ #
|
|
|
+ #############################################
|
|
|
@http.route('/eiru_sales/save_settings', type='json', auth='user', methods=['POST'], cors='*')
|
|
|
def _save_config(self, **kw):
|
|
|
self.make_info_log('save settings')
|
|
|
return save_pos_config(kw)
|
|
|
|
|
|
- '''
|
|
|
- Create product and return data
|
|
|
- '''
|
|
|
+
|
|
|
+ #############################################################################################
|
|
|
+ # ╔═╗╦═╗╔═╗╔═╗╔╦╗╔═╗ ╔═╗╦═╗╔═╗╔╦╗╦ ╦╔═╗╔╦╗ ╔═╗╔╗╔╔╦╗ ╦═╗╔═╗╔╦╗╦ ╦╦═╗╔╗╔ ╔╦╗╔═╗╔╦╗╔═╗ #
|
|
|
+ # ║ ╠╦╝║╣ ╠═╣ ║ ║╣ ╠═╝╠╦╝║ ║ ║║║ ║║ ║ ╠═╣║║║ ║║ ╠╦╝║╣ ║ ║ ║╠╦╝║║║ ║║╠═╣ ║ ╠═╣ #
|
|
|
+ # ╚═╝╩╚═╚═╝╩ ╩ ╩ ╚═╝ ╩ ╩╚═╚═╝═╩╝╚═╝╚═╝ ╩ ╩ ╩╝╚╝═╩╝ ╩╚═╚═╝ ╩ ╚═╝╩╚═╝╚╝ ═╩╝╩ ╩ ╩ ╩ ╩ #
|
|
|
+ #############################################################################################
|
|
|
@http.route('/eiru_sales/create_product', type='json', auth='user', methods=['POST'], cors='*')
|
|
|
def _create_product(self, **kw):
|
|
|
return create_product(kw)
|
|
|
-
|
|
|
- '''
|
|
|
- Process sale
|
|
|
- '''
|
|
|
- @http.route('/eiru_sales/process_sale', type='json', auth='user', methods=['POST'], cors='*')
|
|
|
- def _process_sale(self, **kw):
|
|
|
- self.make_info_log('Processing sale...')
|
|
|
+
|
|
|
|
|
|
+ #############################################
|
|
|
+ # ╔═╗╦╔╗╔╦╔═╗╦ ╦ ╔═╗╦═╗╔═╗╔═╗╔═╗╔═╗╔═╗ #
|
|
|
+ # ╠╣ ║║║║║╚═╗╠═╣ ╠═╝╠╦╝║ ║║ ║╣ ╚═╗╚═╗ #
|
|
|
+ # ╚ ╩╝╚╝╩╚═╝╩ ╩ ╩ ╩╚═╚═╝╚═╝╚═╝╚═╝╚═╝ #
|
|
|
+ #############################################
|
|
|
+ @http.route('/eiru_sales/finish', type='json', auth='user', methods=['POST'], cors='*')
|
|
|
+ def _finish(self, **kw):
|
|
|
+ self.make_info_log('Finishing...')
|
|
|
+
|
|
|
+ # Parameters
|
|
|
date_now = get_date()
|
|
|
+ mode = kw.get('mode', 'sale')
|
|
|
journal_id = kw.get('journalId', None)
|
|
|
customer_id = kw.get('customerId', None)
|
|
|
cart_items = kw.get('items', [])
|
|
|
payment_term_id = kw.get('paymentTermId', None)
|
|
|
payment = float(kw.get('payment'))
|
|
|
+ payment_method = kw.get('paymentMethod', 'Efectivo')
|
|
|
bank_payment_data = kw.get('bankPaymentData', {})
|
|
|
-
|
|
|
- # Get currency
|
|
|
- currency_id = get_currency(journal_id)
|
|
|
- self.make_info_log('[OK] Getting journal')
|
|
|
-
|
|
|
- # Create sale order
|
|
|
- sale_order = create_sale_from_cart(customer_id, cart_items, date_now, currency_id, payment_term_id)
|
|
|
- self.make_info_log('[OK] Creating sale order')
|
|
|
-
|
|
|
- # Check if budget
|
|
|
- if kw.get('mode', 'sale') != 'sale':
|
|
|
- return {
|
|
|
- 'process': True
|
|
|
- }
|
|
|
-
|
|
|
- # Confirm sale
|
|
|
- confirm_sale_order(sale_order.id)
|
|
|
- self.make_info_log('[OK] Confirm sale order')
|
|
|
-
|
|
|
- # Create invoice
|
|
|
- invoice = create_invoice(sale_order.id, currency_id, date_now)
|
|
|
- self.make_info_log('[OK] Creating invoice')
|
|
|
-
|
|
|
- # Create invoice move lines
|
|
|
- invoice_move_lines = create_invoice_move_lines(invoice.id, payment, date_now)
|
|
|
- self.make_info_log('[OK] Creating invoice move lines')
|
|
|
-
|
|
|
- # Create account move
|
|
|
- account_move = create_account_move(invoice.id, invoice_move_lines)
|
|
|
- self.make_info_log('[OK] Creating account move')
|
|
|
-
|
|
|
- # Number invoice
|
|
|
- number_invoice(invoice.id)
|
|
|
- self.make_info_log('[OK] Number invoice')
|
|
|
-
|
|
|
- # Create account voucher
|
|
|
- account_voucher = create_account_voucher(account_move.id, journal_id, currency_id, payment)
|
|
|
- self.make_info_log('[OK] Creating account voucher')
|
|
|
-
|
|
|
- # Close invoice
|
|
|
- close_invoice(invoice.id)
|
|
|
- self.make_info_log('[OK] Closing invoice')
|
|
|
-
|
|
|
- # Create bank statement
|
|
|
- create_bank_statement(account_voucher.id, date_now)
|
|
|
- self.make_info_log('[OK] Creating account bank statement')
|
|
|
|
|
|
- # Create bank payment statement
|
|
|
- if kw.get('paymentMethod', 'Efectivo') == 'Banco':
|
|
|
- create_bank_payment_statement(bank_payment_data, invoice.id, account_voucher.id)
|
|
|
- self.make_info_log('[OK] Creating bank payment statement')
|
|
|
+ '''
|
|
|
+ ╔═╗╦╔╗╔╦╔═╗╦ ╦ ╔╗ ╦ ╦╔╦╗╔═╗╔═╗╔╦╗ ╔═╗╔═╗╔═╗ ╔═╗╦═╗╔═╗╔═╗╔═╗╔╦╗╦ ╦╦═╗╔═╗
|
|
|
+ ╠╣ ║║║║║╚═╗╠═╣ ╠╩╗║ ║ ║║║ ╦║╣ ║ ╠═╝║ ║╚═╗ ╠═╝╠╦╝║ ║║ ║╣ ║║║ ║╠╦╝║╣
|
|
|
+ ╚ ╩╝╚╝╩╚═╝╩ ╩ ╚═╝╚═╝═╩╝╚═╝╚═╝ ╩ ╩ ╚═╝╚═╝ ╩ ╩╚═╚═╝╚═╝╚═╝═╩╝╚═╝╩╚═╚═╝
|
|
|
+ '''
|
|
|
+ def finish_budget_pos(journal_id, customer_id, cart_items, date_now, currency_id, payment_term_id):
|
|
|
+ # Get currency
|
|
|
+ currency_id = get_currency(journal_id)
|
|
|
+ self.make_info_log('[OK] Getting journal')
|
|
|
+
|
|
|
+ # Create sale order
|
|
|
+ sale_order = create_sale_from_cart(customer_id, cart_items, date_now, currency_id, payment_term_id)
|
|
|
+ self.make_info_log('[OK] Creating sale order')
|
|
|
+
|
|
|
+ return sale_order.id
|
|
|
+
|
|
|
+ '''
|
|
|
+ ╔═╗╦╔╗╔╦╔═╗╦ ╦ ╔═╗╔═╗╦ ╔═╗ ╔═╗╔═╗╔═╗ ╔═╗╦═╗╔═╗╔═╗╔═╗╔╦╗╦ ╦╦═╗╔═╗
|
|
|
+ ╠╣ ║║║║║╚═╗╠═╣ ╚═╗╠═╣║ ║╣ ╠═╝║ ║╚═╗ ╠═╝╠╦╝║ ║║ ║╣ ║║║ ║╠╦╝║╣
|
|
|
+ ╚ ╩╝╚╝╩╚═╝╩ ╩ ╚═╝╩ ╩╩═╝╚═╝ ╩ ╚═╝╚═╝ ╩ ╩╚═╚═╝╚═╝╚═╝═╩╝╚═╝╩╚═╚═╝
|
|
|
+ '''
|
|
|
+ def finish_sale_pos(journal_id, customer_id, cart_items, date_now, payment_term_id, payment, payment_method, bank_payment_data):
|
|
|
+ # Create budget
|
|
|
+ sale_order_id = finish_budget_pos(journal_id, customer_id, cart_items, date_now, currency_id, payment_term_id)
|
|
|
+
|
|
|
+ # Confirm sale
|
|
|
+ confirm_sale_order(sale_order_id)
|
|
|
+ self.make_info_log('[OK] Confirm sale order')
|
|
|
+
|
|
|
+ # Create invoice
|
|
|
+ invoice = create_invoice(sale_order_id, currency_id, date_now)
|
|
|
+ self.make_info_log('[OK] Creating invoice')
|
|
|
+
|
|
|
+ # Create invoice move lines
|
|
|
+ invoice_move_lines = create_invoice_move_lines(invoice.id, payment, date_now)
|
|
|
+ self.make_info_log('[OK] Creating invoice move lines')
|
|
|
+
|
|
|
+ # Create account move
|
|
|
+ account_move = create_account_move(invoice.id, invoice_move_lines)
|
|
|
+ self.make_info_log('[OK] Creating account move')
|
|
|
+
|
|
|
+ # Number invoice
|
|
|
+ number_invoice(invoice.id)
|
|
|
+ self.make_info_log('[OK] Number invoice')
|
|
|
+
|
|
|
+ # Create account voucher
|
|
|
+ account_voucher = create_account_voucher(account_move.id, journal_id, currency_id, payment)
|
|
|
+ self.make_info_log('[OK] Creating account voucher')
|
|
|
+
|
|
|
+ # Close invoice
|
|
|
+ close_invoice(invoice.id)
|
|
|
+ self.make_info_log('[OK] Closing invoice')
|
|
|
+
|
|
|
+ # Create bank statement
|
|
|
+ create_bank_statement(account_voucher.id, date_now)
|
|
|
+ self.make_info_log('[OK] Creating account bank statement')
|
|
|
+
|
|
|
+ # Create bank payment statement
|
|
|
+ if payment_method == 'Banco':
|
|
|
+ create_bank_payment_statement(bank_payment_data, invoice.id, account_voucher.id)
|
|
|
+ self.make_info_log('[OK] Creating bank payment statement')
|
|
|
+
|
|
|
+ return True
|
|
|
+
|
|
|
+ '''
|
|
|
+ ╔═╗╦═╗╔═╗╔═╗╔═╗╔═╗╔═╗ ╔═╗╦╔╗╔╦╔═╗╦ ╦ ╔╦╗╔═╗╔═╗╦╔═╗╦╔═╗╔╗╔
|
|
|
+ ╠═╝╠╦╝║ ║║ ║╣ ╚═╗╚═╗ ╠╣ ║║║║║╚═╗╠═╣ ║║║╣ ║ ║╚═╗║║ ║║║║
|
|
|
+ ╩ ╩╚═╚═╝╚═╝╚═╝╚═╝╚═╝ ╚ ╩╝╚╝╩╚═╝╩ ╩ ═╩╝╚═╝╚═╝╩╚═╝╩╚═╝╝╚╝
|
|
|
+ '''
|
|
|
+ if mode == 'budget':
|
|
|
+ finish_budget_pos(journal_id, customer_id, cart_items, date_now, currency_id, payment_term_id)
|
|
|
+
|
|
|
+ if mode == 'sale':
|
|
|
+ finish_sale_pos(journal_id, customer_id, cart_items, date_now, payment_term_id, payment, payment_method, bank_payment_data)
|
|
|
+
|
|
|
+ if mode == 'product_picking':
|
|
|
+ pass
|
|
|
+
|
|
|
+ if mode == 'payment':
|
|
|
+ pass
|
|
|
+
|
|
|
+ if mode == 'product_delivery':
|
|
|
+ pass
|
|
|
|
|
|
return {
|
|
|
'process': True,
|
|
|
- 'name': sale_order.display_name,
|
|
|
'date': get_datetime()
|
|
|
}
|