changes for cp
This commit is contained in:
parent
7eeac6717d
commit
8c18ebc221
|
@ -18,6 +18,7 @@ from . import work
|
||||||
from . import genetics
|
from . import genetics
|
||||||
from . import move
|
from . import move
|
||||||
from . import account
|
from . import account
|
||||||
|
from . import supplier_certificate
|
||||||
|
|
||||||
|
|
||||||
def register():
|
def register():
|
||||||
|
@ -25,6 +26,7 @@ def register():
|
||||||
configuration.Configuration,
|
configuration.Configuration,
|
||||||
sale.AduanaDetailedStart,
|
sale.AduanaDetailedStart,
|
||||||
account.PrintSupplierCertificateStart,
|
account.PrintSupplierCertificateStart,
|
||||||
|
account.InvoiceAuthorization,
|
||||||
crop.Kind,
|
crop.Kind,
|
||||||
crop.Activity,
|
crop.Activity,
|
||||||
crop.Variety,
|
crop.Variety,
|
||||||
|
@ -74,8 +76,12 @@ def register():
|
||||||
sale.SaleLineKitComponent,
|
sale.SaleLineKitComponent,
|
||||||
sale.GroupingSalesStart,
|
sale.GroupingSalesStart,
|
||||||
sale.PortfolioDetailedStart,
|
sale.PortfolioDetailedStart,
|
||||||
|
supplier_certificate.SupplierCertificate,
|
||||||
|
supplier_certificate.SupplierCetificateInvoiceLine,
|
||||||
|
supplier_certificate.SupplierCetificateParty,
|
||||||
product.Template,
|
product.Template,
|
||||||
product.ProductStyle,
|
product.ProductStyle,
|
||||||
|
product.HarmonizedTariffSchedule,
|
||||||
production.Production,
|
production.Production,
|
||||||
production.ProductionSummaryStart,
|
production.ProductionSummaryStart,
|
||||||
production.MaterialsForecastStart,
|
production.MaterialsForecastStart,
|
||||||
|
|
|
@ -25,6 +25,15 @@ from trytond.pool import Pool, PoolMeta
|
||||||
from trytond.exceptions import UserError
|
from trytond.exceptions import UserError
|
||||||
|
|
||||||
|
|
||||||
|
class InvoiceAuthorization(metaclass=PoolMeta):
|
||||||
|
__name__ = 'account.invoice.authorization'
|
||||||
|
|
||||||
|
# @classmethod
|
||||||
|
# def __setup__(cls):
|
||||||
|
# super().__setup__()
|
||||||
|
# cls.kind.selection.append(('supplier_certificate', "Supplier Certificate"))
|
||||||
|
|
||||||
|
|
||||||
class PrintSupplierCertificateStart(ModelView):
|
class PrintSupplierCertificateStart(ModelView):
|
||||||
'Print Supplier Certificate Start'
|
'Print Supplier Certificate Start'
|
||||||
__name__ = 'farming.print_supplier_certificate.start'
|
__name__ = 'farming.print_supplier_certificate.start'
|
||||||
|
|
3
party.py
3
party.py
|
@ -10,6 +10,9 @@ class Party(metaclass=PoolMeta):
|
||||||
export_route = fields.Char('Export Route', select=True)
|
export_route = fields.Char('Export Route', select=True)
|
||||||
customs_globals = fields.One2Many('party.customs_global', 'party',
|
customs_globals = fields.One2Many('party.customs_global', 'party',
|
||||||
'Custom Globals')
|
'Custom Globals')
|
||||||
|
# supplier billing information
|
||||||
|
invoice_authorization = fields.Many2One('account.invoice.authorization',
|
||||||
|
'Invoice Authorization', domain=[('state', '=', 'active'), ('type', '=', 'in')])
|
||||||
|
|
||||||
|
|
||||||
class Company(metaclass=PoolMeta):
|
class Company(metaclass=PoolMeta):
|
||||||
|
|
12
product.py
12
product.py
|
@ -21,3 +21,15 @@ class Template(metaclass=PoolMeta):
|
||||||
('indirect', 'Indirect'),
|
('indirect', 'Indirect'),
|
||||||
], 'Cost Type')
|
], 'Cost Type')
|
||||||
hts = fields.Char('HTS')
|
hts = fields.Char('HTS')
|
||||||
|
harmonized_tariff_schedule = fields.Many2One('farming.harmonized_tariff_schedule',
|
||||||
|
'Harmonized Tariff Schedule')
|
||||||
|
# exportation info
|
||||||
|
|
||||||
|
|
||||||
|
class HarmonizedTariffSchedule(ModelSQL, ModelView):
|
||||||
|
"""HarmonizedTariffSchedule"""
|
||||||
|
__name__ = 'farming.harmonized_tariff_schedule'
|
||||||
|
name = fields.Char('Name', states={'required': True})
|
||||||
|
code = fields.Char('Code', states={'required': True})
|
||||||
|
uom = fields.Many2One('product.uom', 'uom',
|
||||||
|
states={'required': True})
|
||||||
|
|
30
product.xml
30
product.xml
|
@ -21,5 +21,35 @@ The COPYRIGHT file at the top level of this repository contains the full copyrig
|
||||||
<field name="inherit" ref="product.template_view_form"/>
|
<field name="inherit" ref="product.template_view_form"/>
|
||||||
<field name="name">template_form</field>
|
<field name="name">template_form</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="harmonized_tariff_schedule_view_tree">
|
||||||
|
<field name="model">farming.harmonized_tariff_schedule</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="priority">11</field>
|
||||||
|
<field name="name">harmonized_tariff_schedule_tree</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.ui.view" id="harmonized_tariff_schedule_view_form">
|
||||||
|
<field name="model">farming.harmonized_tariff_schedule</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="name">harmonized_tariff_schedule_form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.action.act_window" id="act_harmonized_tariff_schedule_tree">
|
||||||
|
<field name="name">Harmonized Tariff Schedule</field>
|
||||||
|
<field name="res_model">farming.harmonized_tariff_schedule</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.act_window.view" id="act_harmonized_tariff_schedule_view_tree1">
|
||||||
|
<field name="sequence" eval="10"/>
|
||||||
|
<field name="view" ref="harmonized_tariff_schedule_view_tree"/>
|
||||||
|
<field name="act_window" ref="act_harmonized_tariff_schedule_tree"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.act_window.view" id="act_harmonized_tariff_schedule_view_tree2">
|
||||||
|
<field name="sequence" eval="20"/>
|
||||||
|
<field name="view" ref="harmonized_tariff_schedule_view_form"/>
|
||||||
|
<field name="act_window" ref="act_harmonized_tariff_schedule_tree"/>
|
||||||
|
</record>
|
||||||
|
<menuitem name="Harmonized Tariff Schedule" parent="product.menu_main_product"
|
||||||
|
sequence="80" id="menu_harmonized_tariff_schedule"
|
||||||
|
action="act_harmonized_tariff_schedule_tree"/>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|
|
@ -0,0 +1,256 @@
|
||||||
|
from trytond.model import fields, ModelSQL, ModelView, Unique, Workflow
|
||||||
|
from trytond.pool import Pool
|
||||||
|
# from trytond.transaction import Transaction
|
||||||
|
# from trytond.wizard import Button, StateTransition, StateView, Wizard
|
||||||
|
from trytond.pyson import Eval
|
||||||
|
from decimal import Decimal
|
||||||
|
from trytond.exceptions import UserError
|
||||||
|
from lxml import etree
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
|
||||||
|
class SupplierCertificate(Workflow, ModelSQL, ModelView):
|
||||||
|
"""Supplier Certificate"""
|
||||||
|
__name__ = 'farming.supplier_certificate'
|
||||||
|
|
||||||
|
number = fields.Char('Number', states={
|
||||||
|
'readonly': True
|
||||||
|
})
|
||||||
|
# supplier = fields.Many2Many('party.party', 'Supplier')
|
||||||
|
suppliers = fields.Many2Many('farming.supplier_certificate-party.party', 'supplier_certificate',
|
||||||
|
'party', 'Party')
|
||||||
|
provider_link = fields.Char('Link Mail')
|
||||||
|
start_date = fields.Date('Start Date')
|
||||||
|
end_date = fields.Date('End Date')
|
||||||
|
invoice_lines = fields.Many2Many('farming.supplier_certificate-account_invoice_line', 'supplier_certificate',
|
||||||
|
'invoice_line', 'Invoice Lines', domain=[
|
||||||
|
('invoice.type', '=', 'in'),
|
||||||
|
('invoice.party', 'in', Eval('suppliers')),
|
||||||
|
('product.exportable', '=', True),
|
||||||
|
('invoice.invoice_date', '>=', Eval('start_date')),
|
||||||
|
('invoice.invoice_date', '<=', Eval('end_date')),
|
||||||
|
], depends=['suppliers', 'start_date', 'end_date'])
|
||||||
|
# ('invoice', '=', Eval('invoice')),
|
||||||
|
state = fields.Selection([
|
||||||
|
('draft', 'Draft'),
|
||||||
|
('cancelled', 'Cancelled'),
|
||||||
|
('done', 'Done'),
|
||||||
|
('processed', 'Processed'),
|
||||||
|
], 'State', readonly=True, select=True)
|
||||||
|
total_amount = fields.Function(fields.Numeric('Total_amount'), 'get_total_amount')
|
||||||
|
vat_amount = fields.Function(fields.Numeric('Vat Amount'), 'get_vat_amount')
|
||||||
|
xml_certificate = fields.Text('XML Certificate')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __setup__(cls):
|
||||||
|
super(SupplierCertificate, cls).__setup__()
|
||||||
|
cls._transitions |= set((
|
||||||
|
('draft', 'processed'),
|
||||||
|
('processed', 'done'),
|
||||||
|
('processed', 'cancelled'),
|
||||||
|
))
|
||||||
|
cls._buttons.update({
|
||||||
|
'draft': {
|
||||||
|
'invisible': Eval('state').in_(['draft', 'processed', 'done'])
|
||||||
|
},
|
||||||
|
'cancel': {
|
||||||
|
'invisible': Eval('state').in_(['cancelled', 'draft', 'done']),
|
||||||
|
},
|
||||||
|
'process': {
|
||||||
|
'invisible': Eval('state') != 'draft',
|
||||||
|
},
|
||||||
|
'done': {
|
||||||
|
'invisible': Eval('state').in_(['draft', 'cancelled', 'done']),
|
||||||
|
},
|
||||||
|
'create_certificate': {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
@Workflow.transition('draft')
|
||||||
|
def draft(cls, records):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
@Workflow.transition('cancelled')
|
||||||
|
def cancel(cls, records):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
@Workflow.transition('processed')
|
||||||
|
def process(cls, records):
|
||||||
|
for record in records:
|
||||||
|
record.set_number()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
@Workflow.transition('done')
|
||||||
|
def done(cls, records):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def default_state():
|
||||||
|
return 'draft'
|
||||||
|
|
||||||
|
def get_total_amount(self, name):
|
||||||
|
total_amount = 0
|
||||||
|
if self.invoice_lines:
|
||||||
|
for invoice_line in self.invoice_lines:
|
||||||
|
total_amount += invoice_line.amount
|
||||||
|
return Decimal(total_amount)
|
||||||
|
|
||||||
|
def get_vat_amount(self, name):
|
||||||
|
total_amount_taxes = 0
|
||||||
|
TAX = Pool().get('account.tax')
|
||||||
|
iva = TAX(2)
|
||||||
|
if self.invoice_lines:
|
||||||
|
for invoice_line in self.invoice_lines:
|
||||||
|
# total_amount_taxes += invoice_line.amount * iva.rate * Decimal(invoice_line.quantity)
|
||||||
|
total_amount_taxes += invoice_line.amount * iva.rate
|
||||||
|
return Decimal(total_amount_taxes)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
def create_certificate(cls, certificates):
|
||||||
|
for record in certificates:
|
||||||
|
date_exp = record.start_date + timedelta(days=6)
|
||||||
|
flimexp = date_exp.strftime("%Y-%m-%d")
|
||||||
|
root = etree.Element("mas", nsmap={"xsi": "http://www.w3.org/2001/XMLSchema-instance"})
|
||||||
|
root.set("{http://www.w3.org/2001/XMLSchema-instance}noNamespaceSchemaLocation", "../xsd/640.xsd")
|
||||||
|
cantreg = etree.SubElement(root, "CantReg")
|
||||||
|
cantreg.text = str(len(record.invoice_lines))
|
||||||
|
cab = etree.SubElement(root, "Cab")
|
||||||
|
elements_to_add = {
|
||||||
|
"Ano": str(record.start_date.year),
|
||||||
|
"CodCpt": "1",
|
||||||
|
"Formato": "640",
|
||||||
|
"Version": "1",
|
||||||
|
"NumEnvio": record.number,
|
||||||
|
"FecEnvio": str(datetime.today().isoformat()).split('.')[0],
|
||||||
|
"FecInicial": str(record.start_date),
|
||||||
|
"FecFinal": str(record.start_date),
|
||||||
|
"ValorTotal": "31",
|
||||||
|
"CantReg": str(len(record.suppliers))
|
||||||
|
}
|
||||||
|
for tag, text in elements_to_add.items():
|
||||||
|
element = etree.Element(tag)
|
||||||
|
element.text = text
|
||||||
|
cab.append(element)
|
||||||
|
pool = Pool()
|
||||||
|
Authorization = pool.get('account.invoice.authorization')
|
||||||
|
for supplier in record.suppliers:
|
||||||
|
resolution_number = supplier.invoice_authorization.number
|
||||||
|
start_date_auth = supplier.invoice_authorization.start_date_auth
|
||||||
|
invoice_lines = []
|
||||||
|
vtcons = 0
|
||||||
|
vtexen = 0
|
||||||
|
for line in record.invoice_lines:
|
||||||
|
try:
|
||||||
|
autorization, = Authorization.search([('id', '=', line.invoice.authorization)])
|
||||||
|
except:
|
||||||
|
autorization = '9999'
|
||||||
|
if line.invoice.party == supplier:
|
||||||
|
harmonized_tariff_schedule = line.product.harmonized_tariff_schedule
|
||||||
|
invoice_line_dict = {
|
||||||
|
'nfact': line.invoice.reference,
|
||||||
|
'ffac': str(line.invoice.invoice_date),
|
||||||
|
'resfac': resolution_number,
|
||||||
|
'fres': str(start_date_auth),
|
||||||
|
'tipo': '1',
|
||||||
|
'subp': harmonized_tariff_schedule.code,
|
||||||
|
'desc': line.product.description if line.product.description else line.product.name,
|
||||||
|
'cunfi': f"{line.quantity:.6f}",
|
||||||
|
'unfi': harmonized_tariff_schedule.uom.symbol,
|
||||||
|
'cunco': line.unit.symbol,
|
||||||
|
'unco': 'NAR',
|
||||||
|
'vuni': line.unit_price,
|
||||||
|
'amount': round(float(line.unit_price) * line.quantity, 6),
|
||||||
|
'tiva': '19.00',
|
||||||
|
'vexen': round((float(line.unit_price) * line.quantity) * 0.19, 6),
|
||||||
|
'codins': line.product.code,
|
||||||
|
}
|
||||||
|
vtcons += invoice_line_dict['amount']
|
||||||
|
vtexen += invoice_line_dict['vexen']
|
||||||
|
invoice_lines.append(invoice_line_dict)
|
||||||
|
cp = etree.SubElement(root, "cp")
|
||||||
|
cp.set("cpto", "1")
|
||||||
|
cp.set("tdoc", supplier.type_document)
|
||||||
|
cp.set("ndoc", supplier.id_number)
|
||||||
|
if supplier.type_document == '31':
|
||||||
|
cp.set("razsoc", supplier.name)
|
||||||
|
else:
|
||||||
|
cp.set("apl1", supplier.patient.first_family_name)
|
||||||
|
cp.set("apl2", supplier.patient.second_family_name)
|
||||||
|
cp.set("nom1", supplier.first_name)
|
||||||
|
cp.set("nom2", supplier.second_name)
|
||||||
|
cp.set("cantfac", "1")
|
||||||
|
cp.set("vtcons", f"{vtcons:.6f}")
|
||||||
|
cp.set("vtexen", f"{vtexen:.6f}")
|
||||||
|
cp.set("flimexp", flimexp)
|
||||||
|
cp.set("nitems", str(len(invoice_lines)))
|
||||||
|
for line in invoice_lines:
|
||||||
|
cphoja2 = etree.SubElement(cp, "cphoja2")
|
||||||
|
cphoja2.set("nfact", line['nfact'])
|
||||||
|
cphoja2.set("ffac", line['ffac'])
|
||||||
|
cphoja2.set("resfac", line['resfac'])
|
||||||
|
cphoja2.set("fres", line['fres'])
|
||||||
|
cphoja2.set("tipo", '1')
|
||||||
|
cphoja2.set("subp", line['subp'])
|
||||||
|
cphoja2.set("desc", line['desc'])
|
||||||
|
cphoja2.set("cunfi", line['cunfi'])
|
||||||
|
cphoja2.set("unco", 'NAR')
|
||||||
|
cphoja2.set("vuni", f"{line['vuni']:.6f}")
|
||||||
|
cphoja2.set("vtotal", f"{line['amount']:.6f}")
|
||||||
|
cphoja2.set("tiva", '19.00')
|
||||||
|
cphoja2.set("vexen", f"{line['vexen']:.6f}")
|
||||||
|
cphoja2.set("codins", line['codins'])
|
||||||
|
|
||||||
|
tree = etree.ElementTree(root)
|
||||||
|
record.xml_certificate = etree.tostring(tree, xml_declaration=True, pretty_print=True, encoding="ISO-8859-1").decode("ISO-8859-1")
|
||||||
|
record.save()
|
||||||
|
|
||||||
|
def set_number(self):
|
||||||
|
pool = Pool()
|
||||||
|
Config = pool.get('account.configuration')
|
||||||
|
config = Config(1)
|
||||||
|
if self.number:
|
||||||
|
return
|
||||||
|
if not config.sequence_supplier_certificate:
|
||||||
|
raise UserError('No existe secuencia de certificado de proveedor')
|
||||||
|
number = config.certificate_sequence.get()
|
||||||
|
self.write([self], {'number': number})
|
||||||
|
|
||||||
|
|
||||||
|
class SupplierCetificateInvoiceLine(ModelSQL):
|
||||||
|
'Supplier certificate - invoice Line'
|
||||||
|
__name__ = 'farming.supplier_certificate-account_invoice_line'
|
||||||
|
_table = 'supplier_certificate-account_invoice_line'
|
||||||
|
supplier_certificate = fields.Many2One('farming.supplier_certificate',
|
||||||
|
'Supplier Certificate', select=True, required=True, ondelete='CASCADE')
|
||||||
|
invoice_line = fields.Many2One('account.invoice.line', 'Invoice Line',
|
||||||
|
ondelete='CASCADE', select=True, required=True)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __setup__(cls):
|
||||||
|
super(SupplierCetificateInvoiceLine, cls).__setup__()
|
||||||
|
table = cls.__table__()
|
||||||
|
|
||||||
|
cls._sql_constraints += [
|
||||||
|
('invoice_line_uniq', Unique(table, table.invoice_line),
|
||||||
|
'invoice line already exists!'),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SupplierCetificateParty(ModelSQL):
|
||||||
|
'Supplier certificate - invoice Line'
|
||||||
|
__name__ = 'farming.supplier_certificate-party.party'
|
||||||
|
_table = 'supplier_certificate-party_party'
|
||||||
|
supplier_certificate = fields.Many2One('farming.supplier_certificate',
|
||||||
|
'Supplier Certificate', select=True, required=True, ondelete='CASCADE')
|
||||||
|
party = fields.Many2One('party.party', 'Party',
|
||||||
|
ondelete='CASCADE', select=True, required=True)
|
|
@ -0,0 +1,68 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part product_barcode module for Tryton.
|
||||||
|
The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. -->
|
||||||
|
<tryton>
|
||||||
|
<data>
|
||||||
|
<record model="ir.ui.view" id="supplier_certificate_view_form">
|
||||||
|
<field name="model">farming.supplier_certificate</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="name">supplier_certificate_form</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.ui.view" id="supplier_certificate_view_tree">
|
||||||
|
<field name="model">farming.supplier_certificate</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="name">supplier_certificate_tree</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="supplier_certificate_line_view_form">
|
||||||
|
<field name="model">farming.supplier_certificate.line</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="name">supplier_certificate_line_form</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.ui.view" id="supplier_certificate_line_view_tree">
|
||||||
|
<field name="model">farming.supplier_certificate.line</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="name">supplier_certificate_line_tree</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.action.act_window" id="act_supplier_certificate_form">
|
||||||
|
<field name="name">Supplier Certificate</field>
|
||||||
|
<field name="res_model">farming.supplier_certificate</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.act_window.view"
|
||||||
|
id="act_supplier_certificate_form_view1">
|
||||||
|
<field name="sequence" eval="10"/>
|
||||||
|
<field name="view" ref="supplier_certificate_view_tree"/>
|
||||||
|
<field name="act_window" ref="act_supplier_certificate_form"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.act_window.view"
|
||||||
|
id="act_supplier_certificate_form_view2">
|
||||||
|
<field name="sequence" eval="20"/>
|
||||||
|
<field name="view" ref="supplier_certificate_view_form"/>
|
||||||
|
<field name="act_window" ref="act_supplier_certificate_form"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
parent="account_invoice.menu_invoices"
|
||||||
|
action="act_supplier_certificate_form"
|
||||||
|
sequence="10"
|
||||||
|
id="menu_invoice_in_form"/>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="add_invoice_lines_start_view_form">
|
||||||
|
<field name="model">farming.add_invoice_line.start</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="name">add_invoice_line_start_form</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.wizard" id="wizard_add_invoice_lines">
|
||||||
|
<field name="name">Add Invoice Lines</field>
|
||||||
|
<field name="wiz_name">farming.add_invoice_line</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.keyword" id="action_create_order_line_keyword">
|
||||||
|
<field name="keyword">form_action</field>
|
||||||
|
<field name="model">farming.supplier_certificate,-1</field>
|
||||||
|
<field name="action" ref="wizard_add_invoice_lines"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</tryton>
|
|
@ -33,3 +33,4 @@ xml:
|
||||||
work.xml
|
work.xml
|
||||||
genetics.xml
|
genetics.xml
|
||||||
message.xml
|
message.xml
|
||||||
|
supplier_certificate.xml
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<form>
|
||||||
|
<label name="name"/>
|
||||||
|
<field name="name"/>
|
||||||
|
<label name="code"/>
|
||||||
|
<field name="code"/>
|
||||||
|
<label name="uom"/>
|
||||||
|
<field name="uom"/>
|
||||||
|
</form>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<tree>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name="uom"/>
|
||||||
|
</tree>
|
|
@ -9,4 +9,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="freight_forwader"/>
|
<field name="freight_forwader"/>
|
||||||
<field name="customs_globals" colspan="4"/>
|
<field name="customs_globals" colspan="4"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<xpath expr="/form/notebook/page[@id='supplier']" position="inside">
|
||||||
|
<label name="invoice_authorization"/>
|
||||||
|
<field name="invoice_authorization"/>
|
||||||
|
</xpath>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<form>
|
||||||
|
<label name="number"/>
|
||||||
|
<field name="number"/>
|
||||||
|
<label name="start_date"/>
|
||||||
|
<field name="start_date"/>
|
||||||
|
<label name="end_date"/>
|
||||||
|
<field name="end_date"/>
|
||||||
|
<!-- <label name="provider_link"/>
|
||||||
|
<field name="provider_link" widget="url" xexpand="1" width="40"/> -->
|
||||||
|
<notebook colspan="6">
|
||||||
|
<page string="Suppliers" id="suppliers" col="4">
|
||||||
|
<field name="suppliers" colspan="4"/>
|
||||||
|
</page>
|
||||||
|
<page string="Invoice Lines" id="main_info" col="4">
|
||||||
|
<field name="invoice_lines" colspan="4"/>
|
||||||
|
<group col="2" colspan="2" id="states" yfill="1">
|
||||||
|
<label name="state"/>
|
||||||
|
<field name="state"/>
|
||||||
|
<newline/>
|
||||||
|
</group>
|
||||||
|
<group col="2" colspan="2" id="totals" yfill="1">
|
||||||
|
<label name="total_amount" xalign="1.0" xexpand="1"/>
|
||||||
|
<field name="total_amount" symbol="currency" xalign="1.0" xexpand="0"/>
|
||||||
|
<label name="vat_amount" xalign="1.0" xexpand="1"/>
|
||||||
|
<field name="vat_amount" symbol="currency" xalign="1.0" xexpand="0"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page string="xml" id="xml_cp" col="1">
|
||||||
|
<label name="xml_certificate"/>
|
||||||
|
<field name="xml_certificate"/>
|
||||||
|
</page>
|
||||||
|
|
||||||
|
</notebook>
|
||||||
|
<group col='4' colspan='4' id="buttons">
|
||||||
|
<button name="draft" string="Draft" icon="tryton-clear"/>
|
||||||
|
<button name="process" string="Process" icon="tryton-forward"/>
|
||||||
|
<button name="create_certificate" string="create_certificate" icon="tryton-forward"/>
|
||||||
|
<button name="done" string="Done" icon="tryton-forward"/>
|
||||||
|
<button name="cancel" string="cancel" icon="tryton-forward"/>
|
||||||
|
</group>
|
||||||
|
</form>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<form>
|
||||||
|
<label name="invoice"/>
|
||||||
|
<field name="invoice"/>
|
||||||
|
<label name="invoice_line"/>
|
||||||
|
<field name="invoice_line"/>
|
||||||
|
</form>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<tree>
|
||||||
|
<field name="invoice"/>
|
||||||
|
<field name="invoice_line"/>
|
||||||
|
</tree>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<tree>
|
||||||
|
<field name="number"/>
|
||||||
|
<!-- <field name="supplier"/> -->
|
||||||
|
<field name="state"/>
|
||||||
|
<field name="start_date"/>
|
||||||
|
<field name="end_date"/>
|
||||||
|
</tree>
|
|
@ -11,4 +11,9 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<label name="hts"/>
|
<label name="hts"/>
|
||||||
<field name="hts"/>
|
<field name="hts"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<xpath expr="/form/notebook/page[@id='suppliers']/field[@name='purchase_uom']"
|
||||||
|
position="after">
|
||||||
|
<label name="harmonized_tariff_schedule"/>
|
||||||
|
<field name="harmonized_tariff_schedule"/>
|
||||||
|
</xpath>
|
||||||
</data>
|
</data>
|
||||||
|
|
Loading…
Reference in New Issue