Files
tradon/modules/purchase_trade/document_tracking.py
2025-12-26 13:11:43 +00:00

107 lines
3.5 KiB
Python

from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
from datetime import datetime
class LCDocumentReceived(ModelSQL, ModelView):
'LC Document Received'
__name__ = 'lc.document.received'
lc = fields.Many2One('lc.letter.outgoing', 'LC', required=True)
document_type = fields.Many2One('lc.document.type', 'Document Type', required=True)
received = fields.Boolean('Received')
received_date = fields.Date('Received Date')
document_ref = fields.Char('Document Reference')
attachment = fields.Many2One('ir.attachment', 'Attachment')
discrepancy = fields.Boolean('Discrepancy')
discrepancy_details = fields.Text('Discrepancy Details')
status = fields.Selection([
('pending', 'Pending'),
('received', 'Received'),
('checked', 'Checked'),
('discrepant', 'Discrepant'),
('accepted', 'Accepted')
], 'Status')
notes = fields.Text('Notes')
@staticmethod
def default_status():
return 'pending'
@staticmethod
def default_received():
return False
@classmethod
def create(cls, vlist):
vlist = [v.copy() for v in vlist]
for vals in vlist:
if vals.get('received') and not vals.get('received_date'):
vals['received_date'] = datetime.now().date()
if vals.get('received') and vals.get('status') == 'pending':
vals['status'] = 'received'
return super().create(vlist)
class LCDocumentPrepared(ModelSQL, ModelView):
'LC Document Prepared'
__name__ = 'lc.document.prepared'
lc = fields.Many2One('lc.letter.incoming', 'LC', required=True)
document_type = fields.Many2One('lc.document.type', 'Document Type', required=True)
required = fields.Boolean('Required')
responsible = fields.Many2One('res.user', 'Responsible')
deadline = fields.Date('Deadline')
prepared = fields.Boolean('Prepared')
prepared_date = fields.Date('Prepared Date')
attachment = fields.Many2One('ir.attachment', 'Attachment')
status = fields.Selection([
('pending', 'Pending'),
('in_progress', 'In Progress'),
('prepared', 'Prepared'),
('presented', 'Presented'),
('accepted', 'Accepted')
], 'Status')
notes = fields.Text('Notes')
@staticmethod
def default_status():
return 'pending'
@staticmethod
def default_required():
return True
@staticmethod
def default_prepared():
return False
class LCDiscrepancy(ModelSQL, ModelView):
'LC Discrepancy'
__name__ = 'lc.discrepancy'
lc = fields.Many2One('lc.letter.incoming', 'LC', required=True)
document_type = fields.Many2One('lc.document.type', 'Document Type')
discrepancy_type = fields.Selection([
('document', 'Document Discrepancy'),
('date', 'Date Discrepancy'),
('amount', 'Amount Discrepancy'),
('condition', 'Condition Discrepancy'),
('other', 'Other')
], 'Discrepancy Type', required=True)
description = fields.Text('Description', required=True)
severity = fields.Selection([
('minor', 'Minor'),
('major', 'Major'),
('critical', 'Critical')
], 'Severity')
resolved = fields.Boolean('Resolved')
resolution = fields.Text('Resolution')
resolved_date = fields.Date('Resolved Date')
resolved_by = fields.Many2One('res.user', 'Resolved By')
@staticmethod
def default_severity():
return 'minor'
@staticmethod
def default_resolved():
return False