Files
tradon/modules/purchase_trade/weight_report.py
2026-01-20 19:15:22 +01:00

110 lines
4.5 KiB
Python

from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
import datetime
class WeightReport(ModelSQL, ModelView):
'Weight Report'
__name__ = 'weight.report'
# Identification
lab = fields.Char('Laboratory', required=True)
# Report Information
reference = fields.Char('Reference')
file_no = fields.Char('File Number')
report_date = fields.Date('Report Date')
# Contract Information
contract_no = fields.Char('Contract Number')
invoice_no = fields.Char('Invoice Number')
lc_no = fields.Char('LC Number')
origin = fields.Char('Origin')
commodity = fields.Char('Commodity')
# Parties Information
seller = fields.Many2One('party.party','Seller', required=True)
buyer = fields.Many2One('party.party','Buyer', required=True)
carrier = fields.Many2One('party.party','Carrier')
# Shipment Information
vessel = fields.Many2One('trade.vessel','Vessel')
bl_no = fields.Char('B/L Number')
bl_date = fields.Date('B/L Date')
port_loading = fields.Many2One('stock.location','Port of Loading')
port_destination = fields.Many2One('stock.location','Port of Destination')
arrival_date = fields.Date('Arrival Date')
weighing_place = fields.Char('Weighing Place')
weighing_method = fields.Char('Weighing Method')
bales = fields.Integer('Number of Bales')
# Weights Information
gross_landed_kg = fields.Numeric('Gross Landed (kg)', digits=(16, 2))
tare_kg = fields.Numeric('Tare Weight (kg)', digits=(16, 2))
net_landed_kg = fields.Numeric('Net Landed (kg)', digits=(16, 2))
invoice_net_kg = fields.Numeric('Invoice Net (kg)', digits=(16, 2))
gain_loss_kg = fields.Numeric('Gain/Loss (kg)', digits=(16, 2))
gain_loss_percent = fields.Numeric('Gain/Loss (%)', digits=(16, 2))
@classmethod
def __setup__(cls):
super().__setup__()
cls._order = [('report_date', 'DESC')]
# cls._buttons.update({
# 'import_json': {},
# 'export_json': {},
# })
# @classmethod
# @ModelView.button_action('weight_report.act_import_json')
# def import_json(cls, reports):
# pass
# @classmethod
# @ModelView.button_action('weight_report.act_export_json')
# def export_json(cls, reports):
# pass
# @classmethod
# def create_from_json(cls, json_data):
# """Crée un rapport à partir de données JSON"""
# report = cls()
# # Mapping des données JSON vers les champs du modèle
# report.lab = json_data.get('lab', '')
# report_data = json_data.get('report', {})
# report.reference = report_data.get('reference', '')
# report.file_no = report_data.get('file_no', '')
# report.report_date = report_data.get('date', '')
# contract_data = json_data.get('contract', {})
# report.contract_no = contract_data.get('contract_no', '')
# report.invoice_no = contract_data.get('invoice_no', '')
# report.lc_no = contract_data.get('lc_no', '')
# report.origin = contract_data.get('origin', '')
# report.commodity = contract_data.get('commodity', '')
# parties_data = json_data.get('parties', {})
# report.seller = parties_data.get('seller', '')
# report.buyer = parties_data.get('buyer', '')
# report.carrier = parties_data.get('carrier', '')
# shipment_data = json_data.get('shipment', {})
# report.vessel = shipment_data.get('vessel', '')
# report.bl_no = shipment_data.get('bl_no', '')
# report.bl_date = shipment_data.get('bl_date', '')
# report.port_loading = shipment_data.get('port_loading', '')
# report.port_destination = shipment_data.get('port_destination', '')
# report.arrival_date = shipment_data.get('arrival_date', '')
# report.weighing_place = shipment_data.get('weighing_place', '')
# report.weighing_method = shipment_data.get('weighing_method', '')
# report.bales = shipment_data.get('bales', 0)
# weights_data = json_data.get('weights', {})
# report.gross_landed_kg = weights_data.get('gross_landed_kg', 0)
# report.tare_kg = weights_data.get('tare_kg', 0)
# report.net_landed_kg = weights_data.get('net_landed_kg', 0)
# report.invoice_net_kg = weights_data.get('invoice_net_kg', 0)
# report.gain_loss_kg = weights_data.get('gain_loss_kg', 0)
# report.gain_loss_percent = weights_data.get('gain_loss_percent', 0)
# return report