From 318f9e5564e2a50446a8f0625a43388c9875d455 Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Mon, 2 Feb 2026 15:16:37 +0100 Subject: [PATCH] 02.02.26 --- modules/purchase_trade/stock.py | 49 ++++++++++++++++++- .../purchase_trade/view/shipment_in_form.xml | 6 ++- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/modules/purchase_trade/stock.py b/modules/purchase_trade/stock.py index 5acba90..8702198 100755 --- a/modules/purchase_trade/stock.py +++ b/modules/purchase_trade/stock.py @@ -18,8 +18,12 @@ import datetime from collections import defaultdict from sql import Table from trytond.modules.purchase_trade.service import ContractFactory - +import requests +import io +import base64 import logging +import json + logger = logging.getLogger(__name__) class Location(metaclass=PoolMeta): @@ -428,12 +432,14 @@ class ShipmentIn(metaclass=PoolMeta): add_bl = fields.Boolean("Add BL") add_invoice = fields.Boolean("Add invoice") returned_id = fields.Char("Returned ID") + result = fields.Char("Result",readonly=True) @classmethod def __setup__(cls): super().__setup__() cls._buttons.update({ 'compute': {}, + 'send': {}, }) def get_vessel_type(self,name=None): @@ -627,6 +633,47 @@ class ShipmentIn(metaclass=PoolMeta): return sale_line + @classmethod + @ModelView.button + def send(cls, shipments): + Date = Pool().get('ir.date') + for sh in shipments: + sh.result = "Email not sent" + if sh.controller: + Contact = Pool().get('party.contact.mechanism') + contact = Contact.search(['party','=',sh.controller.id]) + if contact: + # f = open("/tmp/instruction.pdf", "rb") + # encoded = base64.b64encode(f.read()).decode() + payload = { + "to": [contact[0].value], + "subject": "Request for control", + "body": sh.instructions, + # "attachments": [ + # { + # "filename": "instruction.pdf", + # "content": encoded, + # "content_type": "application/pdf" + # } + # ], + "meta": { + "shipment": sh.bl_number, + "controller": sh.controller.id + } + } + + response = requests.post( + "http://automation-service:8006/mail", + json=payload, + timeout=10 + ) + + response.raise_for_status() + data = response.json() + logger.info("SEND_FROM_SHIPMENT:%s",data) + sh.result = "Email sent on " + Date.today() + sh.save() + @classmethod @ModelView.button def compute(cls, shipments): diff --git a/modules/purchase_trade/view/shipment_in_form.xml b/modules/purchase_trade/view/shipment_in_form.xml index 0160134..c210ba8 100755 --- a/modules/purchase_trade/view/shipment_in_form.xml +++ b/modules/purchase_trade/view/shipment_in_form.xml @@ -113,8 +113,10 @@ this repository contains the full copyright notices and license terms. -->