From 0b7911f058205293b3a6225d40d01f2a289698ee Mon Sep 17 00:00:00 2001 From: wilson gomez Date: Thu, 9 Dec 2021 14:10:33 -0500 Subject: [PATCH] add option force draft shipment in --- __init__.py | 1 + locale/es.po | 4 ++++ shipment.py | 38 ++++++++++++++++++++++++++++++++++++-- shipment.xml | 12 +++++++++++- shipment_detailed.fods | Bin 14375 -> 14271 bytes stock.py | 9 +++++++++ view/move_form.xml | 2 ++ 7 files changed, 63 insertions(+), 3 deletions(-) diff --git a/__init__.py b/__init__.py index 95e4b75..ab580de 100644 --- a/__init__.py +++ b/__init__.py @@ -35,6 +35,7 @@ def register(): shipment.ShipmentInternalForceDraft, shipment.Assign, inventory.CreateInventories, + shipment.ShipmentInForceDraft, module='stock_co', type_='wizard') Pool.register( stock.MoveByProduct, diff --git a/locale/es.po b/locale/es.po index 92f823c..c6bfc22 100644 --- a/locale/es.po +++ b/locale/es.po @@ -337,3 +337,7 @@ msgstr "Cancelar" msgctxt "wizard_button:stock_co.warehouse_stock_detailed,start,print_:" msgid "Print" msgstr "Imprimir" + +msgctxt "model:ir.action,name:shipment_in_force_draft" +msgid "Force Draft" +msgstr "Forzar a Borrador" diff --git a/shipment.py b/shipment.py index a8801bb..002f1de 100644 --- a/shipment.py +++ b/shipment.py @@ -309,6 +309,40 @@ class ShipmentInternalForceDraft(Wizard): return 'end' +class ShipmentInForceDraft(Wizard): + 'Shipment In Force Draft' + __name__ = 'stock.shipment.in.force_draft' + start_state = 'force_draft' + force_draft = StateTransition() + + def transition_force_draft(self): + shipment = Table('stock_shipment_in') + move = Table('stock_move') + id_shipment = Transaction().context['active_id'] + cursor = Transaction().connection.cursor() + if not id_shipment: + return 'end' + cursor.execute(*shipment.update( + columns=[shipment.state], + values=['draft'], + where=shipment.id == id_shipment) + ) + pool = Pool() + ShipmentIn = pool.get('stock.shipment.in') + shipmentin = ShipmentIn(id_shipment) + moves_ids = [m.id for m in shipmentin.inventory_moves] + cursor.execute(*move.delete( + where=move.id.in_(moves_ids)) + ) + moves_ids = [m.id for m in shipmentin.incoming_moves] + cursor.execute(*move.update( + columns=[move.state], + values=['draft'], + where=move.id.in_(moves_ids)) + ) + return 'end' + + class ShipmentDetailedStart(ModelView): 'Shipment Detailed Start' __name__ = 'stock.shipment.shipment_detailed.start' @@ -379,7 +413,7 @@ class ShipmentDetailedReport(Report): shipments_id = [model + ',' + str(sh['id']) for sh in shipments] fields_names = [ 'product.account_category.name', 'product.name', 'product.cost_price', - 'quantity', 'to_location.name' + 'quantity', 'to_location.name', 'from_location.name' ] fields = ModelShipment.fields_get(fields_names=['operation_center']) if 'operation_center' in fields.keys(): @@ -415,7 +449,7 @@ class ShipmentDetailedReport(Report): 'cost_price': cost_price, 'category': category, 'category_ad': category_ad, - 'cost_base': float(cost_price) * quantity, + 'cost_base': Decimal(str(round(float(cost_price) * quantity, 2))), } try: diff --git a/shipment.xml b/shipment.xml index bbfb5dd..9a1c725 100644 --- a/shipment.xml +++ b/shipment.xml @@ -5,7 +5,7 @@ this repository contains the full copyright notices and license terms. --> - + stock_co.create_internal_shipment.start form @@ -75,5 +75,15 @@ this repository contains the full copyright notices and license terms. --> + + + Force Draft + stock.shipment.in.force_draft + + + form_action + stock.shipment.in,-1 + + diff --git a/shipment_detailed.fods b/shipment_detailed.fods index 04b7f83fafbf4324f709c174b2f701e183402af8..56ddd871297edd91e5a929cca6341f9385a84cbd 100644 GIT binary patch delta 12078 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 delta 12249 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 diff --git a/stock.py b/stock.py index 1db5119..bfc4540 100644 --- a/stock.py +++ b/stock.py @@ -31,12 +31,21 @@ class Move(metaclass=PoolMeta): description = fields.Char('Description', select=True, states=STATES_MOVE) current_stock = fields.Function(fields.Float('Current Stock', depends=['product']), 'on_change_with_current_stock') + reference = fields.Function(fields.Char('Reference', + depends=['product'], help='reference of product'), 'get_reference') @fields.depends('current_stock') def on_change_product(self, name=None): super(Move, self).on_change_product() self.current_stock = self.on_change_with_current_stock() + @fields.depends('product') + def get_reference(self, name=None): + reference = None + if self.product and hasattr(self.product, 'reference') and self.product.reference: + reference = self.product.reference + return reference + @fields.depends('product', 'from_location', 'to_location') def on_change_with_current_stock(self, name=None): res = 0 diff --git a/view/move_form.xml b/view/move_form.xml index d7133c8..11e339a 100644 --- a/view/move_form.xml +++ b/view/move_form.xml @@ -7,6 +7,8 @@ this repository contains the full copyright notices and license terms. -->