__init__.py 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. # -*- coding: utf-8 -*-
  2. from account_bank_statement import create_bank_statement, create_bank_statement_lines
  3. from account_invoice import create_invoice, prepare_invoice, validate_invoice, close_invoice
  4. from account_journal import get_journals, get_currencies_from_journal
  5. from account_move import create_invoice_move_lines, create_account_move
  6. from account_payment_term import get_payment_terms
  7. from account_voucher import create_account_voucher
  8. from http_response import make_gzip_response
  9. from product_pricelist import get_pricelist_id
  10. from product_template import get_products
  11. from purchase_order import (get_purchase_orders, get_purchase_order, create_purchase_order, confirm_purchase_order, force_assign_picking, done_picking)
  12. from res_bank_cheque_type import get_cheque_types
  13. from res_bank_payments_type import get_bank_payment_types
  14. from res_bank import get_banks
  15. from res_currency import check_base_currency, get_currency_id
  16. from res_partner import get_suppliers
  17. from res_users import get_current_user
  18. from server_date import get_date
  19. from stock_picking_type import get_picking_types
  20. from stock_picking import get_pickings
  21. def get_data(mode=None):
  22. data = {}
  23. check_base_currency()
  24. if mode == 'purchase' or mode == 'expense':
  25. data = {
  26. 'date': get_date(),
  27. 'user': get_current_user(),
  28. 'currencies': get_currencies_from_journal(),
  29. 'journals': get_journals(),
  30. 'suppliers': get_suppliers(),
  31. 'products': get_products(mode),
  32. 'pickingTypes': get_picking_types(),
  33. 'paymentTerms': get_payment_terms(),
  34. 'banks': get_banks(),
  35. 'bankPaymentTypes': get_bank_payment_types(),
  36. 'chequeTypes': get_cheque_types()
  37. }
  38. if mode == 'product_picking':
  39. data = {
  40. 'date': get_date(),
  41. 'user': get_current_user(),
  42. 'currencies': get_currencies_from_journal(),
  43. 'suppliers': get_suppliers(),
  44. 'products': get_products()
  45. }
  46. if mode == 'payment':
  47. data = {
  48. 'purchaseOrders': get_purchase_orders(),
  49. 'currencies': get_currencies_from_journal(),
  50. 'suppliers': get_suppliers(),
  51. 'journals': get_journals(),
  52. 'paymentTerms': get_payment_terms(),
  53. 'banks': get_banks(),
  54. 'bankPaymentTypes': get_bank_payment_types(),
  55. 'chequeTypes': get_cheque_types(),
  56. }
  57. if mode == 'product_taking':
  58. data = {
  59. 'stockPickings': get_pickings()
  60. }
  61. return make_gzip_response(data)
  62. def process_data(data=None):
  63. if not data:
  64. return {}
  65. def drafting_order(journal_id, supplier_id, cart_items, date_now, payment_term_id, warehouse_id):
  66. currency_id = get_currency_id(journal_id)
  67. pricelist_id = get_pricelist_id(currency_id)
  68. order = create_purchase_order(supplier_id, cart_items, date_now, currency_id, pricelist_id, payment_term_id, warehouse_id)
  69. return order.id, currency_id
  70. def making_order(order_id):
  71. if not order_id:
  72. return None
  73. order = get_purchase_order(order_id)
  74. confirm_purchase_order(order.id)
  75. return order.id
  76. def paying_order(
  77. order_id,
  78. supplier_invoice_number=None,
  79. supplier_id=None,
  80. cart_items=None,
  81. date_now=None,
  82. payment_term_id=None,
  83. warehouse_id=None
  84. ):
  85. invoice = None
  86. if order_id:
  87. order = get_purchase_order(order_id)
  88. invoice = order.invoice_ids
  89. if not invoice:
  90. invoice = create_invoice(supplier_id, cart_items, currency_id, payment_term_id, supplier_invoice_number)
  91. invoice_ids = invoice.mapped(lambda x: x.id)
  92. prepare_invoice(invoice_ids, currency_id, date_now)
  93. move_lines = create_invoice_move_lines(invoice_ids, payment, date_now)
  94. account_move = create_account_move(invoice_ids, move_lines)
  95. validate_invoice(invoice_ids, mode)
  96. account_voucher = create_account_voucher(account_move.id, journal_id, currency_id, payment)
  97. close_invoice(invoice_ids)
  98. statement_lines = create_bank_statement_lines(account_voucher.id)
  99. bank_statement = create_bank_statement(account_voucher.id, statement_lines, date_now)
  100. return bank_statement.id
  101. def complete_order(order_id):
  102. if not order_id:
  103. return None
  104. force_assign_picking(order_id)
  105. done_picking(order_id)
  106. date_now = get_date()
  107. mode = data.get('mode')
  108. journal_id = data.get('journalId')
  109. supplier_id = data.get('supplierId')
  110. supplier_invoice_number = data.get('supplierInvoiceNumber', None)
  111. cart_items = data.get('items')
  112. payment_term_id = data.get('paymentTermId')
  113. warehouse_id = data.get('warehouseId', None)
  114. payment = float(data.get('payment'))
  115. if mode not in ('product_picking', 'payment', 'product_taking'):
  116. order_id = None
  117. if mode == 'purchase':
  118. order_id, currency_id = drafting_order(journal_id, supplier_id, cart_items, date_now, payment_term_id)
  119. making_order(order_id)
  120. complete_order(order_id)
  121. else:
  122. paying_order(order_id)
  123. if mode == 'product_picking':
  124. order_id, currency_id = drafting_order(journal_id, supplier_id, cart_items, date_now, payment_term_id, warehouse_id)
  125. making_order(order_id)
  126. if mode == 'payment':
  127. order_id = data.get('orderId')
  128. paying_order(order_id, supplier_invoice_number)
  129. if mode == 'picking':
  130. order_id = data.get('orderId')
  131. complete_order(order_id)
  132. # prepare_invoice(invoice_ids, currency_id, date_now)
  133. # move_lines = create_invoice_move_lines(invoice_ids, payment, date_now)
  134. # account_move = create_account_move(invoice_ids, move_lines)
  135. #
  136. # validate_invoice(invoice_ids, mode)
  137. #
  138. # account_voucher = create_account_voucher(account_move.id, journal_id, currency_id, payment)
  139. # close_invoice(invoice_ids)
  140. #
  141. # statement_lines = create_bank_statement_lines(account_voucher.id)
  142. # create_bank_statement(account_voucher.id, statement_lines, date_now)
  143. # invoice = None
  144. #
  145. # if mode == 'purchase':
  146. # purchase_order = create_purchase_order(supplier_id, cart_items, date_now, currency_id, pricelist_id, payment_term_id)
  147. # confirm_purchase_order(purchase_order.id)
  148. #
  149. # invoice = purchase_order.invoice_ids
  150. # invoice.write({
  151. # 'supplier_invoice_number': supplier_invoice_number
  152. # })
  153. # else:
  154. # invoice = create_invoice(supplier_id, cart_items, currency_id, payment_term_id, supplier_invoice_number)
  155. #
  156. # invoice_ids = invoice.mapped(lambda x: x.id)
  157. #
  158. # prepare_invoice(invoice_ids, currency_id, date_now)
  159. # move_lines = create_invoice_move_lines(invoice_ids, payment, date_now)
  160. # account_move = create_account_move(invoice_ids, move_lines)
  161. #
  162. # validate_invoice(invoice_ids, mode)
  163. #
  164. # account_voucher = create_account_voucher(account_move.id, journal_id, currency_id, payment)
  165. # close_invoice(invoice_ids)
  166. #
  167. # statement_lines = create_bank_statement_lines(account_voucher.id)
  168. # create_bank_statement(account_voucher.id, statement_lines, date_now)
  169. return {
  170. 'status': 'ok'
  171. }