diff --git a/modules/purchase_trade/__init__.py b/modules/purchase_trade/__init__.py
index 22f4c31..bd8fbc9 100755
--- a/modules/purchase_trade/__init__.py
+++ b/modules/purchase_trade/__init__.py
@@ -75,6 +75,8 @@ def register():
dashboard.Demos,
party.Party,
party.PartyExecution,
+ party.PartyExecutionSla,
+ party.PartyExecutionPlace,
payment_term.PaymentTerm,
payment_term.PaymentTermLine,
purchase.Purchase,
diff --git a/modules/purchase_trade/lot.py b/modules/purchase_trade/lot.py
index 98c27bb..5397335 100755
--- a/modules/purchase_trade/lot.py
+++ b/modules/purchase_trade/lot.py
@@ -3151,135 +3151,8 @@ class CreateContracts(Wizard):
type_=self.ct.type,
ct=self.ct,
)
- # SaleLine = Pool().get('sale.line')
- # Sale = Pool().get('sale.sale')
- # PurchaseLine = Pool().get('purchase.line')
- # Purchase = Pool().get('purchase.purchase')
- # LotQt = Pool().get('lot.qt')
- # LotQtHist = Pool().get('lot.qt.hist')
- # LotQtType = Pool().get('lot.qt.type')
- # Lot = Pool().get('lot.lot')
- # Date = Pool().get('ir.date')
- # self.sale_lines = []
- # type = self.ct.type
- # base_contract = self.ct.lot.sale_line.sale if type == 'Purchase' else self.ct.lot.line.purchase
- # for c in self.ct.contracts:
- # contract = Purchase() if type == 'Purchase' else Sale()
- # contract_line = PurchaseLine() if type == 'Purchase' else SaleLine()
- # parts = c.currency_unit.split("_")
- # if int(parts[0]) != 0:
- # contract.currency = int(parts[0])
- # else:
- # contract.currency = 1
- # contract.party = c.party
- # contract.crop = c.crop
- # contract.tol_min = c.tol_min
- # contract.tol_max = c.tol_max
- # if type == 'Purchase':
- # contract.purchase_date = Date.today()
- # else:
- # contract.sale_date = Date.today()
- # contract.reference = c.reference
- # if base_contract.from_location and base_contract.to_location:
- # if type == 'Purchase':
- # contract.to_location = base_contract.from_location
- # else:
- # contract.from_location = base_contract.to_location
- # if base_contract.from_location.type == 'supplier' and base_contract.to_location.type == 'customer':
- # contract.from_location = base_contract.from_location
- # contract.to_location = base_contract.to_location
- # if c.party.wb:
- # contract.wb = c.party.wb
- # if c.party.association:
- # contract.association = c.party.association
- # if type == 'Purchase':
- # if c.party.supplier_payment_term:
- # contract.payment_term = c.party.supplier_payment_term
- # else:
- # if c.party.customer_payment_term:
- # contract.payment_term = c.party.customer_payment_term
- # contract.incoterm = c.incoterm
- # if c.party.addresses:
- # contract.invoice_address = c.party.addresses[0]
- # if type == 'Sale':
- # contract.shipment_address = c.party.addresses[0]
- # contract.__class__.save([contract])
- # contract_line.quantity = c.quantity
- # contract_line.quantity_theorical = c.quantity
- # contract_line.product = self.ct.product
- # contract_line.price_type = c.price_type
- # contract_line.unit = self.ct.unit
- # if type == 'Purchase':
- # contract_line.purchase = contract.id
- # else:
- # contract_line.sale = contract.id
- # contract_line.created_by_code = self.ct.matched
- # contract_line.premium = Decimal(0)
- # if int(parts[0]) == 0:
- # contract_line.enable_linked_currency = True
- # contract_line.linked_currency = 1
- # contract_line.linked_unit = int(parts[1])
- # contract_line.linked_price = c.price
- # contract_line.unit_price = contract_line.get_price_linked_currency()
- # else:
- # contract_line.unit_price = c.price if c.price else Decimal(0)
- # contract_line.del_period = c.del_period
- # contract_line.from_del = c.from_del
- # contract_line.to_del = c.to_del
- # contract_line.__class__.save([contract_line])
- # logger.info("CREATE_ID:%s",contract.id)
- # logger.info("CREATE_LINE_ID:%s",contract_line.id)
- # if self.ct.matched:
- # lot = Lot()
- # if type == 'Purchase':
- # lot.line = contract_line.id
- # else:
- # lot.sale_line = contract_line.id
- # lot.lot_qt = None
- # lot.lot_unit = None
- # lot.lot_unit_line = contract_line.unit
- # lot.lot_quantity = round(contract_line.quantity,5)
- # lot.lot_gross_quantity = None
- # lot.lot_status = 'forecast'
- # lot.lot_type = 'virtual'
- # lot.lot_product = contract_line.product
- # lqtt = LotQtType.search([('sequence','=',1)])
- # if lqtt:
- # lqh = LotQtHist()
- # lqh.quantity_type = lqtt[0]
- # lqh.quantity = round(lot.lot_quantity,5)
- # lqh.gross_quantity = round(lot.lot_quantity,5)
- # lot.lot_hist = [lqh]
- # Lot.save([lot])
- # vlot = self.ct.lot
- # shipment_origin = None
- # if self.ct.shipment_in:
- # shipment_origin = 'stock.shipment.in,' + str(self.ct.shipment_in.id)
- # elif self.ct.shipment_internal:
- # shipment_origin = 'stock.shipment.internal,' + str(self.ct.shipment_internal.id)
- # elif self.ct.shipment_out:
- # shipment_origin = 'stock.shipment.out,' + str(self.ct.shipment_out.id)
-
- # qt = c.quantity
- # if type == 'Purchase':
- # if not lot.updateVirtualPart(qt,shipment_origin,vlot):
- # lot.createVirtualPart(qt,shipment_origin,vlot)
- # #Decrease forecasted virtual part non matched
- # lot.updateVirtualPart(-qt,shipment_origin,vlot,'only sale')
- # else:
- # if not vlot.updateVirtualPart(qt,shipment_origin,lot):
- # vlot.createVirtualPart(qt,shipment_origin,lot)
- # #Decrease forecasted virtual part non matched
- # vlot.updateVirtualPart(-qt,shipment_origin,None)
-
return 'end'
- # def do_matching(self, action):
- # return action, {
- # 'ids': self.sale_lines,
- # 'model': str(self.ct.lot.id),
- # }
-
def end(self):
return 'reload'
@@ -3309,7 +3182,6 @@ class ContractsStart(ModelView):
def default_matched(cls):
return True
-
class ContractDetail(ModelView):
"Contract Detail"
diff --git a/modules/purchase_trade/party.py b/modules/purchase_trade/party.py
index 8a6b6a1..1e72807 100755
--- a/modules/purchase_trade/party.py
+++ b/modules/purchase_trade/party.py
@@ -16,6 +16,43 @@ class PartyExecution(ModelSQL,ModelView):
def get_percent(self,name):
return 2
+class PartyExecutionSla(ModelSQL,ModelView):
+ "Party Execution Sla"
+ __name__ = 'party.execution.sla'
+
+ party = fields.Many2One('party.party',"Party")
+ reference = fields.Char("Reference")
+ product = fields.Many2One('product.product',"Product")
+ date_from = fields.Date("From")
+ date_to = fields.Date("To")
+ places = fields.One2Many('party.execution.place','pes',"")
+
+class PartyExecutionPlace(ModelSQL,ModelView):
+ "Party Sla Place"
+ __name__ = 'party.execution.place'
+
+ pes = fields.Many2One('party.execution.sla',"Sla")
+ location = fields.Many2One('stock.location',"Location")
+ cost = fields.Numeric("Cost",digits=(16,4))
+ currency_unit = fields.Selection('get_currency_unit',string="Curr/Unit")
+
+ @staticmethod
+ def get_currency_unit():
+ Currency = Pool().get('currency.currency')
+ Uom = Pool().get('product.uom')
+
+ result = []
+ currencies = Currency.search([('concatenate','=',True)])
+ units = Uom.search([('concatenate','=',True)])
+ result.append(("0_5","USC/lb"))
+ result.append(("0_37","USC/mt"))
+ for c in currencies:
+ for u in units:
+ key = "%s_%s" % (c.id, u.id)
+ value = "%s / %s" % (c.name, u.symbol or u.name)
+ result.append((key, value))
+ return result
+
class Party(metaclass=PoolMeta):
__name__ = 'party.party'
@@ -24,6 +61,7 @@ class Party(metaclass=PoolMeta):
wb = fields.Many2One('purchase.weight.basis',"Weight basis")
association = fields.Many2One('purchase.association',"Association")
execution = fields.One2Many('party.execution','party',"")
+ sla = fields.One2Many('party.execution.sla','party', "Sla")
def IsAvailableForControl(self,sh):
return True
diff --git a/modules/purchase_trade/party.xml b/modules/purchase_trade/party.xml
index d576412..6cd1fa3 100755
--- a/modules/purchase_trade/party.xml
+++ b/modules/purchase_trade/party.xml
@@ -5,10 +5,25 @@
party_form
-
+
party.execution
tree
party_exec_tree
+
+ party.execution.sla
+ form
+ party_exec_sla_form
+
+
+ party.execution.sla
+ tree
+ party_exec_sla_tree
+
+
+ party.execution.place
+ tree
+ party_exec_place_tree
+
\ No newline at end of file
diff --git a/modules/purchase_trade/view/party_exec_place_tree.xml b/modules/purchase_trade/view/party_exec_place_tree.xml
new file mode 100644
index 0000000..399f3cc
--- /dev/null
+++ b/modules/purchase_trade/view/party_exec_place_tree.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/purchase_trade/view/party_exec_sla_tree.xml b/modules/purchase_trade/view/party_exec_sla_tree.xml
new file mode 100644
index 0000000..cd1db01
--- /dev/null
+++ b/modules/purchase_trade/view/party_exec_sla_tree.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file