|
@@ -1,8 +1,59 @@
|
|
|
from openerp import api, fields, models
|
|
|
+from openerp.exceptions import except_orm
|
|
|
|
|
|
class AccountVoucher(models.Model):
|
|
|
_inherit = 'account.voucher'
|
|
|
|
|
|
@api.model
|
|
|
- def perform_payment(self):
|
|
|
- pass
|
|
|
+ def create_from_pos(self, values):
|
|
|
+
|
|
|
+ # Activity 1: Create Sale Order
|
|
|
+ sale_order_model = self.env['sale.order']
|
|
|
+
|
|
|
+ # sale_order_line_values = [
|
|
|
+ # [0, False, {
|
|
|
+ # 'product_id': int(item['id']),
|
|
|
+ # 'product_uom_qty': float(item['qty']),
|
|
|
+ # 'price_unit': float(item['price'])
|
|
|
+ # }] for item in values['cart_items']]
|
|
|
+
|
|
|
+ # sale_order_values = {
|
|
|
+ # 'partner_id': int(values['customer_id']),
|
|
|
+ # 'order_line': sale_order_line_values,
|
|
|
+ # 'picking_policy': 'direct'
|
|
|
+ # }
|
|
|
+
|
|
|
+ # sale_order_id = sale_order_model.create(sale_order_values)
|
|
|
+ sale_order_id = 26
|
|
|
+
|
|
|
+ # Activity 2: Confirm Sale Order
|
|
|
+ sale_order = sale_order_model.browse([sale_order_id])
|
|
|
+ # sale_order.write({ 'state': 'manual' })
|
|
|
+
|
|
|
+ # for sale_order_line in sale_order.order_line:
|
|
|
+ # sale_order_line.write({ 'state': 'confirmed' })
|
|
|
+
|
|
|
+ # Activity 3: Create Invoice
|
|
|
+ account_id = False
|
|
|
+ decimal_precision = self.env['decimal.precision'].precision_get('Product Price')
|
|
|
+ account_invoice_model = self.env['account.invoice']
|
|
|
+
|
|
|
+ for sale_order_line in sale_order.order_line:
|
|
|
+ account_id = sale_order_line.product_id.property_account_income.id
|
|
|
+
|
|
|
+ if not account_id:
|
|
|
+ account_id = sale_order_line.product_id.categ_id.property_account_income_categ.id
|
|
|
+
|
|
|
+ if not account_id:
|
|
|
+ raise except_orm('Error', 'Es necesario denifir una cuenta de ingresos para este producto')
|
|
|
+
|
|
|
+ uos_quantity = sale_order_line.product_uos_qty or 0.0 if sale_order_line.product_uos else sale_order_line.product_uom_qty
|
|
|
+ uos_id = sale_order_line.product_uos.id if sale_order_line.product_uos else sale_order_line.product_uom.id
|
|
|
+ fiscal_position = sale_order_line.order_id.fiscal_position or False
|
|
|
+
|
|
|
+ subtotal = round(sale_order_line.price_unit * sale_order_line.product_uom_qty / uos_quantity, decimal_precision)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|