Compare commits

...

44 Commits
master ... 6.4

Author SHA1 Message Date
sinergia 9eb010092c Se permite informar distintos impuestos en linea de factura 2023-10-24 16:27:31 -05:00
root 71197dd031 update on_change_party 2023-06-15 20:12:35 +00:00
raskolnikov1984 9bc044da19 add value none to tax 2023-05-09 13:08:49 -05:00
sinergia dc2b6bee58 add UserError to invoice 2023-03-19 00:28:02 -05:00
raskolnikov 45a7d1c953 add traslation to account_invoice_facho 2023-02-06 18:09:07 -05:00
raskolnikov 7ffa890a42 add RTE to account_invoice_facho 2023-02-06 17:32:44 -05:00
raskolnikov ca7ca1105e hide page fe_colombia 2022-12-15 03:02:02 -05:00
alnus 9c98807b3a Update 'view/invoice_fe_colombia_form.xml' 2022-11-20 21:29:26 -05:00
yo 47a777e6c7 stringddd
Signed-off-by: yo <yo@yo>
2022-11-20 16:12:05 -05:00
raskolnikov 89b448d954 page fe_colombia invisible when subtype not is fe_document 2022-11-14 19:28:36 -05:00
sinergia e95ae54d53 update account_invoice_facho 2022-11-12 18:53:44 -05:00
sinergia d0cb5d3a14 add traslation to Send FE closed #35 2022-10-31 11:32:15 -05:00
sinergia f0d38cd623 add wizard Fe_Send Invoices closed #35 2022-10-31 11:12:35 -05:00
sinergia c6f2380bcd change field fe_document with field party 2022-10-28 11:22:49 -05:00
sinergia fcf37d675f solution issue closed #27 2022-10-27 15:02:38 -05:00
sinergia 035efc90d8 update account_invoice_facho 2022-10-27 14:18:28 -05:00
sinergia a19c1850bf solution issue closed #34 2022-10-27 11:56:21 -05:00
sinergia a94e5c8274 solution issue closed #22 2022-10-27 11:40:31 -05:00
sinergia dd8c3332f2 update account_invoice_facho 2022-10-27 10:12:33 -05:00
sinergia c40b0a402d solution issued resolved #8 2022-10-25 05:26:31 -05:00
sinergia 5bf69b9b04 solution issued closed #33 2022-10-23 20:09:53 -05:00
sinergia aa41b45419 forbbiden that fields 'Fe Colombia' duplicate closed#32 2022-10-23 20:03:37 -05:00
sinergia 9430553907 add conditional for invoices 'in', and 'out' of tigger 2022-10-23 19:47:17 -05:00
sinergia 356f718faa add field fe_document 2022-10-22 21:07:15 -05:00
sinergia 96a4f50842 change to SupportDocumentCreditNote 2022-08-31 00:56:03 -05:00
Alnus Tmp 5faa82734b fix DSAZ10, DSAZ12 2022-08-30 03:09:04 +00:00
sinergia 210883b436 Support Document 2022-08-29 16:49:00 -05:00
sinergia 17b7d11528 Support Document 2022-08-29 16:46:27 -05:00
raskolnikov1984 c11e3c09e0 cambio a la version 6.2 2022-08-22 16:34:11 -05:00
espurio 433dd02fbf translate 'Configuration' on menu of facho 2022-04-12 00:57:12 -05:00
cosmos 800e5cab75 Change credit note status True to False if they are not debit credit notes #28 2022-04-11 15:18:47 -05:00
espurio 1fa2cf2128 change 'mockpolicy=False' by 'localpolicy=True' on xml_signed 2022-04-05 13:22:25 -05:00
espurio 3557c33d9b Change 'mockpolicy=False by localpolicy=True' 2022-04-01 18:20:50 -05:00
espurio 393d76617e fe_operation_type readonly when invoice state different to draft 2022-03-21 12:18:53 -05:00
cosmos da03f0499c Return Translate Error Document Reference #24 2022-03-17 19:34:26 -05:00
cosmos 87f51d7fb4 Translate Document Reference #24 2022-03-17 19:00:08 -05:00
Alnus Tmp 5c5df59394 fixed billing resolution reading from subtype 2022-03-08 20:56:28 -05:00
Alnus Tmp ae7e83885d Condicionales en las facturas a enviar en el cron 2022-03-02 23:29:18 +00:00
Alnus Tmp b2efcc9104 allow send FE in state paid 2021-10-05 14:33:28 -05:00
Alnus Tmp 1416a10d9e change invoice for cls, validate CUDE and CUFE 2021-10-05 13:57:18 -05:00
Alnus Tmp 5721999de7 add name type='IVA' 2021-09-07 09:55:10 -05:00
onecluster e969cc151b Se agrego el self a los metodos de instancia y se cambio el cls por self en los metodos de clase 2021-08-05 16:56:22 -05:00
onecluster c854650ff2 Increase version 6.0 2021-07-29 19:14:50 -05:00
onecluster c7053336a5 Update version 5.8 2021-07-28 14:53:36 -05:00
31 changed files with 2512 additions and 308 deletions

View File

@ -2,8 +2,9 @@ from trytond.pool import Pool
from . import configuration
from . import invoice
from . import facho
from . import tax
from . import dian
from . import ir
__all__ = ['register']
@ -12,18 +13,23 @@ def register():
Pool.register(
configuration.Configuration,
configuration.ConfigurationDianFECompany,
facho.FEGenericCode,
invoice.Invoice,
invoice.InvoiceLine,
invoice.Product,
invoice.PartyFeIdentifier,
invoice.PartyFeOrganization,
invoice.Party,
invoice.InvoiceSubtype,
invoice.PaymentTerm,
invoice.PaymentMethod,
#invoice.PartyFeOrganization,
#invoice.Party,
invoice.Cron,
dian.RangoFacturacion,
dian.InvoiceResolution,
ir.Trigger,
tax.Tax,
module='account_invoice_facho', type_='model')
Pool.register(
dian.SincronizarRangoFacturacion,
invoice.SendInvoice,
module='account_invoice_facho', type_='wizard')
Pool.register(
invoice.InvoiceReportDianZip,
module='account_invoice_facho', type_='report')

View File

@ -9,35 +9,53 @@ class Configuration(
'Facho Configuration'
__name__ = 'account_invoice_facho.configuration'
dian_fe_habilitacion = fields.MultiValue(fields.Boolean('Habilitacion'))
dian_fe_key= fields.MultiValue(fields.Char('Dian FE KEY'))
dian_fe_llave_publica = fields.MultiValue(fields.Char('Publica PCKS#12'))
dian_fe_llave_privada = fields.MultiValue(fields.Char('Privada PCKS#12'))
dian_fe_llave_frasepaso = fields.MultiValue(fields.Char('Frasepaso PCKS#12'))
dian_fe_test_setid = fields.MultiValue(fields.Char('Dian testsetid'))
dian_fe_NITProveedorTecnologico = fields.MultiValue(fields.Char('NIT Proveedor Tecnologico'))
dian_fe_NITObligadoFacturarElectronicamente = fields.MultiValue(fields.Char('NIT Obligactior FE'))
dian_fe_IdentificadorSoftware = fields.MultiValue(fields.Char('IdentificadorSoftware'))
dian_fe_habilitation = fields.MultiValue(fields.Boolean('Habilitation'))
dian_fe_debit_note = fields.MultiValue(fields.Boolean('Debit Note'))
dian_fe_public_key = fields.MultiValue(fields.Binary('Public Key',
help="PCKS#12"))
dian_fe_private_key = fields.MultiValue(fields.Binary('Private Key',
help="PCKS#12"))
dian_fe_cert = fields.MultiValue(fields.Binary('Cert',
help="PCKS#12"))
dian_fe_cert_passpharase = fields.MultiValue(fields.Char('Cert Passpharase'))
dian_fe_test_setid = fields.MultiValue(fields.Char('Testsetid Dian'))
dian_fe_technologic_supplier = fields.MultiValue(fields.Many2One('party.party',
'Technologic Supplier'))
dian_fe_obliged_bill = fields.MultiValue(fields.Many2One('party.party',
'Obliged to bill'))
dian_fe_software_identification = fields.MultiValue(fields.Char('Software Identification'))
dian_fe_pin = fields.MultiValue(fields.Char('PIN'))
dian_fe_invoice_resolution = fields.MultiValue(fields.Many2One('account.invoice.resolution',
'Invoice Resolution'))
@classmethod
def multivalue_model(cls, field):
pool = Pool()
return pool.get('account_invoice_facho.dian_fe_company')
class ConfigurationDianFECompany(ModelSQL, CompanyValueMixin):
'Configuration - DianFECompany'
__name__ = 'account_invoice_facho.dian_fe_company'
configuration = fields.Many2One('account_invoice_facho.configuration', 'Configuration',
required=True, ondelete='CASCADE')
dian_fe_habilitacion = fields.Boolean('Habilitacion')
dian_fe_key = fields.Char('Dian key')
dian_fe_llave_publica = fields.Char('Publica PCKS#12')
dian_fe_llave_privada = fields.Char('Publica PCKS#12')
dian_fe_test_setid = fields.Char('Dian testsetid')
dian_fe_llave_frasepaso = fields.Char('Frasepaso PCKS#12')
dian_fe_NITProveedorTecnologico = fields.Char('NIT Proveedor Tecnologico')
dian_fe_NITObligadoFacturarElectronicamente = fields.Char('NIT Obligactior FE')
dian_fe_IdentificadorSoftware = fields.Char('IdentificadorSoftware')
dian_fe_habilitation = fields.Boolean('Habilitation')
dian_fe_debit_note = fields.Boolean('Debit Note')
dian_fe_public_key = fields.Binary('Public Key',
help="PCKS#12")
dian_fe_private_key = fields.Binary('Private Key',
help="PCKS#12")
dian_fe_test_setid = fields.Char('Testsetid Dian')
dian_fe_cert = fields.Binary('Cert',
help="PCKS#12")
dian_fe_cert_passpharase = fields.Char('Cert Passpharase')
dian_fe_technologic_supplier = fields.Many2One('party.party',
'Technologic Supplier')
dian_fe_obliged_bill = fields.Many2One(
'party.party',
'Obliged to bill')
dian_fe_software_identification = fields.Char('Software Identification')
dian_fe_pin = fields.Char('PIN')
dian_fe_invoice_resolution = fields.Many2One('account.invoice.resolution',
'Invoice Resolution')

View File

@ -1,12 +1,14 @@
<?xml version="1.0"?>
<tryton>
<data>
<record model="ir.action.act_window" id="act_configuration_form">
<record model="ir.action.act_window" id="act_configuration_facho_form">
<field name="name">Configuration</field>
<field name="res_model">account_invoice_facho.configuration</field>
</record>
<menuitem name="Facho" id="menu_facho"
parent="account.menu_account_configuration"/>
<menuitem parent="menu_facho"
action="act_configuration_form"
action="act_configuration_facho_form"
id="menu_configuration"
sequence="10"/>
<record model="ir.ui.view" id="configuration_view_form">
@ -18,7 +20,7 @@
id="act_configuration_view1">
<field name="sequence" eval="1"/>
<field name="view" ref="configuration_view_form"/>
<field name="act_window" ref="act_configuration_form"/>
<field name="act_window" ref="act_configuration_facho_form"/>
</record>
</data>

19
dian.py
View File

@ -1,20 +1,13 @@
from trytond.model import ModelSQL, ModelView, fields
from trytond.wizard import Wizard, StateTransition
from trytond.pool import Pool
from trytond.pool import Pool, PoolMeta
class RangoFacturacion(ModelSQL, ModelView):
'Rango Facturacion'
__name__ = 'account_invoice_facho.dian_rango_facturacion'
class InvoiceResolution(metaclass=PoolMeta):
'Invoice Resolution'
__name__ = 'account.invoice.resolution'
NumeroResolucion = fields.Char('Numero Resolucion')
FechaResolucion = fields.Date('Fecha Resolucion')
Prefijo = fields.Char('Prefijo')
RangoInicial = fields.Integer('Rango Inicial')
RangoFinal = fields.Integer('Rango Final')
FechaVigenciaDesde = fields.Date('Fecha Vigencia Desde')
FechaVigenciaHasta = fields.Date('Fecha Vigencia Hasta')
ClaveTecnica = fields.Char('Clave Tecnica')
technical_key = fields.Char('Technical Key')
@ -27,7 +20,7 @@ class SincronizarRangoFacturacion(Wizard):
def transition_start(self):
pool = Pool()
config = pool.get('account_invoice_facho.configuration')(1)
RangoFacturacion = pool.get('account_invoice_facho.dian_rango_facturacion')
RangoFacturacion = pool.get('account.invoice.resolution')
from .exceptions import DianClientError
from facho.fe.client import dian

View File

@ -1,28 +1,20 @@
<?xml version="1.0"?>
<tryton>
<data>
<record model="ir.action.act_window" id="act_dian_rango_facturacion">
<field name="name">Rango Facturacion</field>
<field name="res_model">account_invoice_facho.dian_rango_facturacion</field>
</record>
<data>
<menuitem parent="menu_facho"
name="Dian"
id="menu_dian"/>
<menuitem parent="menu_dian"
id="menu_dian_rango_facturacion"
action="act_dian_rango_facturacion"/>
<record model="ir.action.wizard" id="sincronizar_dian_rango_facturacion">
<field name="name">Sincronizar Rango Facturacion</field>
<field name="wiz_name">account_invoice_facho.sincronizar_rango_facturacion</field>
<field name="model">account_invoice_facho.dian_rango_facturacion</field>
</record>
<record model="ir.action.keyword" id="sincronizar_dian_rango_facturacion_keyword">
<field name="keyword">form_action</field>
<field name="model">account_invoice_facho.dian_rango_facturacion,-1</field>
<field name="action" ref="sincronizar_dian_rango_facturacion"/>
<record model="ir.ui.view" id="invoice_resolution_view_form">
<field name="model">account.invoice.resolution</field>
<field name="inherit" ref="account_invoice_subtype.invoice_resolution_view_form"/>
<field name="name">invoice_resolution_form</field>
</record>
</data>
</tryton>

26
email_invoice.html Normal file
View File

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html xmlns:py="http://genshi.edgewall.org/" xmlns:i18n="http://genshi.edgewall.org/i18n">
<head>
<title>Factura electr&oacute;nica</title>
</head>
<body>
<div style="display: block; text-align: center">
<div>
<h3>Estimado cliente</h3>
<p>
Adjunto a este correo encontrar&aacute; la factura correspondiente adquisici&oacute;n de Productos.<br/>
La factura electr&oacute;nica que usted est&aacute; recibiendo se conforma por dos archivos:<br/>
La representaci&oacute;n gr&aacute;fica en formato .pdf que usted podr&aacute; imprimir<br/>
La representaci&oacute;n electr&oacute;nica en formato .xml que usted deber&aacute; conservar<br/>
Si su factura presenta alg&uacute;n error, le agradecemos a m&aacute;s tardar dentro de las siguientes<br/>
48 horas, notificar en el:<br/>
Correo de autorespuesta: ${record.company.party.email}<br/>
Saludos cordiales<br/>
</p>
</div>
<hr style="margin-top: 20px; border-style: solid none none; border-color: #EEE"></hr>
<div style="font-size: 80%; color: #777">
</div>
</div>
</body>
</html>

237
icons/facho-mail-fail.svg Normal file
View File

@ -0,0 +1,237 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="30"
height="30"
viewBox="0 0 7.9374999 7.9375003"
version="1.1"
id="svg168"
inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
sodipodi:docname="facho-mail-fail.svg">
<defs
id="defs162">
<linearGradient
id="linearGradient2876"
osb:paint="solid">
<stop
style="stop-color:#f3ecec;stop-opacity:1;"
offset="0"
id="stop2874" />
</linearGradient>
<radialGradient
cx="20.687"
cy="46.616001"
r="12.228"
id="5"
xlink:href="#2"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8204677,0,0,0.1341645,4.4416214,38.87484)" />
<linearGradient
id="2">
<stop
id="9"
stop-color="#2e3436" />
<stop
id="A"
offset="1"
stop-color="#2e3436"
stop-opacity="0" />
</linearGradient>
<linearGradient
y1="4.5500002"
x2="0"
y2="44.23"
id="6"
xlink:href="#4"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="4">
<stop
id="D"
stop-color="#fff"
stop-opacity="0.8" />
<stop
id="E"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<linearGradient
id="3">
<stop
id="B"
stop-color="#fff" />
<stop
id="C"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2876"
id="linearGradient2878"
x1="94.434196"
y1="114.862"
x2="210.5658"
y2="114.862"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2876"
id="linearGradient2970"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-1.6156714,-24.298035)"
x1="94.434196"
y1="114.862"
x2="210.5658"
y2="114.862" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2876"
id="linearGradient2972"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-1.6156712,-24.298036)"
x1="94.434196"
y1="114.862"
x2="210.5658"
y2="114.862" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2026"
id="linearGradient3457"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.65718,0,0,0.65718,-16.966,114.63)"
x1="-344.14999"
y1="274.70999"
x2="-395.85001"
y2="425.39999" />
<linearGradient
id="linearGradient2026"
y2="425.39999"
gradientUnits="userSpaceOnUse"
x2="-395.85001"
gradientTransform="matrix(-0.65718,0,0,0.65718,-16.966,114.63)"
y1="274.70999"
x1="-344.14999"
inkscape:collect="always">
<stop
id="stop2557"
style="stop-color:#ffffff"
offset="0" />
<stop
id="stop2559"
style="stop-color:#ffffff;stop-opacity:0"
offset="1" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.25"
inkscape:cx="12"
inkscape:cy="14.431163"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="1359"
inkscape:window-height="768"
inkscape:window-x="1426"
inkscape:window-y="133"
inkscape:window-maximized="0" />
<metadata
id="metadata165">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g2938"
transform="matrix(0.07655872,0,0,0.07655872,-0.82698095,-70.45226)"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
style="fill:#3465a3;fill-opacity:1">
<g
id="g2926"
transform="matrix(0.88372,0,0,0.88372,-70.642,889.36)"
style="fill:#3465a3;fill-opacity:1;stroke:url(#linearGradient2878)">
<path
id="path2922"
sodipodi:nodetypes="ccccc"
style="fill:#3465a3;fill-opacity:1;stroke:url(#linearGradient2970);stroke-width:1.1316px"
d="M 93.384329,48.063965 V 133.06397 H 208.38433 V 48.063965 l -115.000001,-3e-6 z" />
<path
id="path2924"
sodipodi:nodetypes="ccccccc"
style="fill:#3465a3;fill-opacity:1;stroke:url(#linearGradient2972)"
d="m 93.384329,51.076965 55.000001,50.985005 60,-50.985005 v -3.013 l -60,50.998005 -55.000001,-50.998005 z" />
</g>
</g>
<g
id="g2071"
transform="matrix(0.02600553,0,0,0.02600553,-0.42621541,-5.4013957)"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<rect
id="rect3417"
style="fill:#f00a10;fill-rule:evenodd"
inkscape:export-ydpi="7.7063322"
rx="39.431"
transform="scale(-1,1)"
ry="39.431"
width="145.82001"
inkscape:export-xdpi="7.7063322"
y="318.34"
x="-318.76001"
height="144.64"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png" />
<g
id="g3479"
inkscape:export-ydpi="7.7063322"
inkscape:export-xdpi="7.7063322"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png"
transform="matrix(0.65718,0,0,0.65718,-102.64,-95.387)">
<path
id="path3419"
style="fill:#cb1e0e"
d="m 554.13,739.6 35.77,-35.77 c 3.75,-3.75 5.63,-7.9 5.63,-12.44 -0.23,-4.09 -2.1,-7.9 -5.63,-11.42 -3.18,-3.18 -6.92,-4.99 -11.24,-5.45 -4.43,-0.34 -8.63,1.48 -12.61,5.45 l -35.78,35.78 -35.77,-35.78 c -3.64,-3.63 -7.73,-5.45 -12.27,-5.45 -4.43,0.34 -8.29,2.16 -11.58,5.45 -2.84,2.84 -4.49,6.53 -4.95,11.08 -0.45,4.77 1.2,9.03 4.95,12.78 l 35.77,35.77 -35.77,35.78 c -3.18,3.18 -4.95,7.33 -5.29,12.44 0.34,4.43 2.11,8.23 5.29,11.41 2.95,2.96 6.7,4.77 11.24,5.45 4.43,0.35 8.63,-1.47 12.61,-5.45 l 35.77,-35.77 35.78,35.77 c 3.75,3.75 7.9,5.4 12.44,4.94 4.66,-0.34 8.46,-1.98 11.41,-4.94 2.73,-2.72 4.38,-6.41 4.95,-11.07 0.68,-4.54 -0.97,-8.8 -4.95,-12.78 L 554.13,739.6" />
<path
id="path3421"
style="fill:#ffffff"
d="m 552.28,739.6 32.99,-32.98 c 3.45,-3.46 5.18,-7.28 5.18,-11.47 -0.21,-3.77 -1.94,-7.28 -5.18,-10.53 -2.94,-2.93 -6.39,-4.6 -10.37,-5.02 -4.08,-0.32 -7.96,1.36 -11.62,5.02 l -32.99,32.99 -32.99,-32.99 c -3.35,-3.35 -7.12,-5.02 -11.31,-5.02 -4.08,0.31 -7.64,1.99 -10.68,5.02 -2.62,2.62 -4.14,6.03 -4.56,10.22 -0.41,4.39 1.1,8.32 4.56,11.78 l 32.99,32.98 -32.99,32.99 c -2.93,2.93 -4.56,6.75 -4.87,11.47 0.31,4.08 1.94,7.59 4.87,10.52 2.72,2.72 6.18,4.4 10.37,5.03 4.08,0.31 7.96,-1.36 11.62,-5.03 l 32.99,-32.99 32.99,32.99 c 3.45,3.46 7.27,4.98 11.46,4.56 4.3,-0.32 7.8,-1.84 10.53,-4.56 2.51,-2.51 4.03,-5.92 4.55,-10.21 0.63,-4.19 -0.89,-8.11 -4.55,-11.78 L 552.28,739.6" />
</g>
<path
id="path3423"
style="fill:url(#linearGradient3457);fill-rule:evenodd"
d="m 280.23,324.53 h -68.77 c -18.2,0 -32.86,14.65 -32.86,32.86 v 66.55 c 0.59,14.21 2.86,5.23 7.17,-10.51 5.02,-18.29 21.35,-34.27 41.23,-46.25 15.18,-9.15 32.17,-14.99 63.1,-15.54 17.54,-0.32 15.99,-22.58 -9.87,-27.11 z"
inkscape:export-ydpi="7.7063322"
sodipodi:nodetypes="ccccsssc"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png"
inkscape:export-xdpi="7.7063322" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

204
icons/facho-mail-ok.svg Normal file
View File

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="30"
height="30"
viewBox="0 0 7.9374999 7.9375003"
version="1.1"
id="svg168"
inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
sodipodi:docname="facho-mail-ok.svg">
<defs
id="defs162">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2876"
id="linearGradient3453"
gradientUnits="userSpaceOnUse"
x1="94.434196"
y1="114.862"
x2="210.5658"
y2="114.862" />
<linearGradient
id="linearGradient2876"
osb:paint="solid">
<stop
style="stop-color:#f3ecec;stop-opacity:1;"
offset="0"
id="stop2874" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2876"
id="linearGradient3449"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-1.6156714,-24.298035)"
x1="94.434196"
y1="114.862"
x2="210.5658"
y2="114.862" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2876"
id="linearGradient3451"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-1.6156712,-24.298036)"
x1="94.434196"
y1="114.862"
x2="210.5658"
y2="114.862" />
<radialGradient
cx="20.687"
cy="46.616001"
r="12.228"
id="5"
xlink:href="#2"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8204677,0,0,0.1341645,4.4416214,38.87484)" />
<linearGradient
id="2">
<stop
id="9"
stop-color="#2e3436" />
<stop
id="A"
offset="1"
stop-color="#2e3436"
stop-opacity="0" />
</linearGradient>
<linearGradient
y1="4.5500002"
x2="0"
y2="44.23"
id="6"
xlink:href="#4"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="4">
<stop
id="D"
stop-color="#fff"
stop-opacity="0.8" />
<stop
id="E"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#3"
id="linearGradient3455"
gradientUnits="userSpaceOnUse"
x1="18.389"
y1="-12.905"
x2="34.681"
y2="29.688" />
<linearGradient
id="3">
<stop
id="B"
stop-color="#fff" />
<stop
id="C"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.25"
inkscape:cx="12"
inkscape:cy="12"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="1359"
inkscape:window-height="768"
inkscape:window-x="1426"
inkscape:window-y="133"
inkscape:window-maximized="0" />
<metadata
id="metadata165">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g3735"
transform="matrix(0.06750311,0,0,0.06156108,-6.222416,-2.2032372)"
style="fill:#3465a3;fill-opacity:1;stroke:url(#linearGradient3453)">
<path
id="path2820"
sodipodi:nodetypes="ccccc"
style="fill:#3465a3;fill-opacity:1;stroke:url(#linearGradient3449);stroke-width:1.1316px"
d="M 93.384329,48.063965 V 133.06397 H 208.38433 V 48.063965 l -115.000001,-3e-6 z" />
<path
id="path3612"
sodipodi:nodetypes="ccccccc"
style="fill:#3465a3;fill-opacity:1;stroke:url(#linearGradient3451)"
d="m 93.384329,51.076965 55.000001,50.985005 60,-50.985005 v -3.013 l -60,50.998005 -55.000001,-50.998005 z" />
</g>
<g
transform="matrix(0.0954752,0,0,0.0870709,3.5183606,1.9253427)"
id="8">
<path
d="m 31.44716,45.129018 c 0,0.906037 -4.491673,1.640524 -10.032432,1.640524 -5.540759,0 -10.032431,-0.734487 -10.032431,-1.640524 0,-0.906036 4.491672,-1.640523 10.032431,-1.640523 5.540759,0 10.032432,0.734487 10.032432,1.640523 z"
id="F"
opacity="0.8"
fill="url(#5)"
style="fill:url(#5)" />
<path
d="M 37.395259,3.9928032 C 36.751767,3.881258 36.084975,4.1531965 35.70893,4.7391151 L 19.687179,29.697689 11.077028,21.800115 C 10.295804,21.298722 9.2618142,21.512776 8.7604174,22.294002 l -4.4617137,4.963236 c -0.5013867,0.781219 -0.2742552,1.815825 0.5069644,2.317217 0,0 15.6848449,14.93278 15.7046779,14.94441 0.183096,0.117517 0.37856,0.183941 0.579198,0.223816 0.65542,0.130262 1.354145,-0.132654 1.738024,-0.730775 L 44.435002,10.35218 C 44.936393,9.570958 44.709267,8.5363529 43.928039,8.0349601 L 38.026151,4.2321538 C 37.830842,4.1068047 37.609756,4.0299838 37.395259,3.9928032 Z"
id="G"
fill="#8bb300"
stroke="#445800"
stroke-linejoin="round"
stroke-linecap="round"
stroke-width="1.061" />
<path
d="m 37,5.09375 c -0.222462,0.068582 -0.368311,0.2935582 -0.6875,0.75 l -8.125,12.71875 -7.25,11.1875 c -0.07531,0.06635 -0.114229,0.155323 -0.15625,0.25 -0.04202,0.09468 -0.09546,0.182583 -0.15625,0.28125 -0.121581,0.197334 -0.311651,0.38921 -0.75,0.46875 -0.306118,0.05555 -0.454585,0.03303 -0.625,-0.0625 -0.170415,-0.09553 -0.338659,-0.262637 -0.65625,-0.5 L 11,23.25 c -0.211436,-0.196035 -0.366685,-0.338043 -0.5,-0.4375 -0.133315,-0.09946 -0.255459,-0.151284 -0.375,-0.15625 -0.119541,-0.005 -0.23023,0.04256 -0.34375,0.125 C 9.66773,22.863687 9.5440059,22.977083 9.375,23.125 l -3.53125,3.84375 c -0.4763125,0.442708 -0.6947169,0.828134 -0.65625,1.21875 0.038467,0.390616 0.3182284,0.733606 0.84375,1.125 0,0 3.557027,3.391995 7.125,6.78125 1.783986,1.694627 3.566493,3.38424 4.90625,4.65625 0.669879,0.636005 1.233193,1.159628 1.625,1.53125 0.195903,0.185811 0.363216,0.337601 0.46875,0.4375 0.05277,0.04995 0.09738,0.09896 0.125,0.125 0.01381,0.01302 0.02395,0.02442 0.03125,0.03125 0.0011,9.44e-4 0.03118,-4.3e-5 0.03125,0 0.08073,0.05181 0.08877,0.0943 0.1875,0.1875 0.09873,0.0932 0.255536,0.234231 0.625,0.53125 0.139903,0.11247 0.326711,0.128203 0.46875,0.0625 0.142039,-0.0657 0.254912,-0.193662 0.375,-0.34375 0.240177,-0.300175 0.448124,-0.693175 0.625,-0.96875 L 43.40625,10.0625 C 43.524201,9.8787288 43.630105,9.7136106 43.6875,9.59375 43.744895,9.4738894 43.775145,9.3861103 43.75,9.28125 43.724855,9.1763897 43.635632,9.0844462 43.53125,9 43.426868,8.9155538 43.309755,8.8373201 43.125,8.71875 c -0.01033,-0.00186 -0.02092,-0.00186 -0.03125,0 L 37.8125,5.4375 C 37.622121,5.3160067 37.502367,5.215151 37.375,5.15625 37.247633,5.097349 37.114744,5.0583758 37,5.09375 Z"
id="H"
opacity="0.8"
fill="none"
stroke="url(#6)"
stroke-linejoin="round"
stroke-linecap="round"
stroke-width="1.061"
style="stroke:url(#6)" />
<path
d="M 36.96875,4.5 C 36.634637,4.5401947 36.326814,4.7168023 36.125,5.03125 L 25.25,21.9375 c 4.538877,-1.517457 9.095334,-2.802858 13.65625,-3.875 l 5.125,-8 c 0.357447,-0.5569403 0.180055,-1.2687651 -0.375,-1.625 L 37.75,4.625 C 37.638068,4.553162 37.498851,4.5323019 37.3125,4.5 37.200153,4.4805254 37.080121,4.4866018 36.96875,4.5 Z M 9.875,22.0625 c -0.2851202,0.06083 -0.5453222,0.229783 -0.71875,0.5 C 9.1473,22.58404 9.13686,22.60492 9.125,22.625 l -4.40625,4.90625 c -0.00619,0.0096 0.00588,0.02152 0,0.03125 -0.3339753,0.552285 -0.1704409,1.243682 0.375,1.59375 0.021536,0.0089 0.04242,0.01939 0.0625,0.03125 0,0 0.496977,0.467173 0.53125,0.5 3.0185158,-1.352167 6.036186,-2.634284 9.0625,-3.84375 l -3.96875,-3.625 c -0.0098,-0.0063 -0.02139,0.006 -0.03125,0 -0.279841,-0.169766 -0.58988,-0.217075 -0.875,-0.15625 z"
id="I"
opacity="0.8"
fill="url(#7)"
stroke-width="1.061"
style="fill:url(#linearGradient3455)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

196
icons/facho-not-posted.svg Normal file
View File

@ -0,0 +1,196 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="30"
height="30"
viewBox="0 0 7.9374999 7.9375003"
version="1.1"
id="svg168"
inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
sodipodi:docname="facho-mail-ok.svg">
<defs
id="defs162">
<linearGradient
id="linearGradient2876"
osb:paint="solid">
<stop
style="stop-color:#f3ecec;stop-opacity:1;"
offset="0"
id="stop2874" />
</linearGradient>
<radialGradient
cx="20.687"
cy="46.616001"
r="12.228"
id="5"
xlink:href="#2"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8204677,0,0,0.1341645,4.4416214,38.87484)" />
<linearGradient
id="2">
<stop
id="9"
stop-color="#2e3436" />
<stop
id="A"
offset="1"
stop-color="#2e3436"
stop-opacity="0" />
</linearGradient>
<linearGradient
y1="4.5500002"
x2="0"
y2="44.23"
id="6"
xlink:href="#4"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="4">
<stop
id="D"
stop-color="#fff"
stop-opacity="0.8" />
<stop
id="E"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<linearGradient
id="3">
<stop
id="B"
stop-color="#fff" />
<stop
id="C"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.25"
inkscape:cx="12"
inkscape:cy="15.5597"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="1680"
inkscape:window-height="1020"
inkscape:window-x="1366"
inkscape:window-y="1"
inkscape:window-maximized="1"
showguides="false" />
<metadata
id="metadata165">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g2079"
transform="matrix(0,-0.1771524,0.13864384,0,-0.19369734,9.3184576)">
<path
id="path2077"
sodipodi:nodetypes="cccccc"
style="color:#000000;display:block;fill:none;stroke:#ffffff;stroke-width:7.1343;stroke-linecap:round;stroke-linejoin:round"
d="M 11.75,54.375 V 5.625 h 27.688 l 8.812,8.813 v 39.937 z" />
<path
id="rect1089"
sodipodi:nodetypes="cccccc"
style="color:#000000;display:block;fill:#ffffff;fill-opacity:1;stroke:#3465a4;stroke-width:2.3781;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 11.75,54.375 V 5.625 h 27.688 l 8.812,8.813 v 39.937 z" />
<path
id="path1713"
sodipodi:nodetypes="cccc"
style="color:#000000;display:block;fill:#3465a4;fill-opacity:1;stroke:#3465a4;stroke-width:2.3781;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 39.437,14.438 V 5.625 l 8.813,8.813 z" />
</g>
<path
id="path1326"
style="fill:none;stroke:#3465a4;stroke-width:0.372681;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 4.7335098,3.2555105 V 1.7920186" />
<g
id="g1344"
style="fill:#3465a4;fill-opacity:1;stroke:#3465a4;stroke-opacity:1"
transform="matrix(-0.05219354,0,0,-0.16850794,4.816813,10.366819)"
inkscape:transform-center-x="-0.4252448"
inkscape:transform-center-y="0.16642046">
<path
id="path1346"
sodipodi:nodetypes="cc"
style="fill:#3465a4;fill-opacity:1;stroke:#3465a4;stroke-width:3.9739;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 17.052,22.068 H 45.951" />
<path
id="path1348"
sodipodi:nodetypes="cc"
style="fill:#3465a4;fill-opacity:1;stroke:#3465a4;stroke-width:3.9739;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 17.052,27.13 H 37.878" />
<path
id="path1350"
sodipodi:nodetypes="cc"
style="fill:#3465a4;fill-opacity:1;stroke:#3465a4;stroke-width:3.9739;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 17.052,32.192 H 50.529" />
<path
id="path1352"
sodipodi:nodetypes="cc"
style="fill:#3465a4;fill-opacity:1;stroke:#3465a4;stroke-width:3.9739;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 17.052,42.316 H 34.849" />
<path
id="path1354"
sodipodi:nodetypes="cc"
style="fill:#3465a4;fill-opacity:1;stroke:#3465a4;stroke-width:3.9739;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="m 17.052,37.254 h 30.95" />
</g>
<path
id="path2120"
sodipodi:nodetypes="cc"
style="fill:none;stroke:#3465a4;stroke-width:0.372681;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 5.6848078,1.7948457 H 6.4493072" />
<path
id="path2122"
sodipodi:nodetypes="cc"
style="fill:none;stroke:#3465a4;stroke-width:0.372681;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 5.6848077,3.147133 H 6.4493073" />
<path
id="path2124"
sodipodi:nodetypes="cc"
style="fill:none;stroke:#3465a4;stroke-width:0.372681;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 5.6848078,2.4475845 H 6.4493072" />
<g
id="Capa_x0020_1"
style="fill-rule:evenodd"
transform="matrix(0,-0.83556362,0.6539327,0,2.6037086,7.892856)">
<path
id="path58241"
style="fill:#949096;stroke:#2c2c2c;stroke-width:0.106927;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:162"
d="m 2.7227232,3.1073611 c -0.1464898,0 -0.2892372,0.01535 -0.4277075,0.04344 v 0.330805 c -0.1855181,0.04485 -0.3592743,0.116801 -0.5175261,0.213854 L 1.5433197,3.4615571 c -0.1197581,0.07946 -0.2293581,0.172676 -0.3309387,0.274 -0.1010459,0.101303 -0.1946069,0.210903 -0.27373285,0.330821 l 0.23363535,0.233903 c -0.096769,0.158626 -0.1689445,0.332115 -0.21385385,0.5179 h -0.3304041 c -0.028336,0.138203 -0.04384,0.281271 -0.04384,0.427708 0,0.146436 0.015504,0.289504 0.04384,0.427707 h 0.3304041 c 0.0449091,0.185786 0.11708495,0.359275 0.21385385,0.517954 l -0.23363535,0.233903 c 0.0791261,0.119865 0.17268695,0.229465 0.27373285,0.330778 0.1015806,0.101313 0.2111806,0.194553 0.3309387,0.274 l 0.2341699,-0.233902 c 0.1582518,0.09709 0.332008,0.168997 0.5175261,0.213853 v 0.330832 c 0.1384703,0.02807 0.2812177,0.04341 0.4277075,0.04341 0.1464898,0 0.2897718,-0.01534 0.4277075,-0.04341 v -0.330832 c 0.1860528,-0.04486 0.3592744,-0.116764 0.5180608,-0.213853 l 0.2341698,0.233902 c 0.1197583,-0.07945 0.2293583,-0.172687 0.3304043,-0.274 0.1015806,-0.101313 0.1946069,-0.210913 0.2742674,-0.330778 L 4.2731631,6.1915491 c 0.097303,-0.158679 0.1689446,-0.332168 0.213854,-0.517954 h 0.3309387 c 0.028335,-0.138203 0.043305,-0.281271 0.043305,-0.427707 0,-0.146437 -0.01497,-0.289505 -0.043305,-0.427708 H 4.4870171 c -0.044909,-0.185785 -0.1165506,-0.359274 -0.213854,-0.5179 L 4.507333,4.0663771 C 4.4276725,3.9464591 4.3346462,3.8368591 4.2330656,3.7355561 4.1320196,3.6342321 4.0224196,3.5410131 3.9026613,3.4615561 L 3.6684915,3.6954591 C 3.5097051,3.5984061 3.3364835,3.5264551 3.1504307,3.4816051 V 3.1508001 C 3.012495,3.1227101 2.869213,3.1073601 2.7227232,3.1073611 Z m 0,1.069269 c 0.5902364,0 1.0692688,0.479032 1.0692688,1.069268 0,0.590237 -0.4790324,1.069269 -1.0692688,1.069269 -0.5902363,0 -1.0692688,-0.479032 -1.0692688,-1.069269 0,-0.590236 0.4790325,-1.069268 1.0692688,-1.069268 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

192
icons/facho-send-fail.svg Normal file
View File

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="30"
height="30"
viewBox="0 0 7.9374999 7.9375003"
version="1.1"
id="svg168"
inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
sodipodi:docname="facho-send-fail.svg">
<defs
id="defs162">
<linearGradient
id="linearGradient2876"
osb:paint="solid">
<stop
style="stop-color:#f3ecec;stop-opacity:1;"
offset="0"
id="stop2874" />
</linearGradient>
<radialGradient
cx="20.687"
cy="46.616001"
r="12.228"
id="5"
xlink:href="#2"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8204677,0,0,0.1341645,4.4416214,38.87484)" />
<linearGradient
id="2">
<stop
id="9"
stop-color="#2e3436" />
<stop
id="A"
offset="1"
stop-color="#2e3436"
stop-opacity="0" />
</linearGradient>
<linearGradient
y1="4.5500002"
x2="0"
y2="44.23"
id="6"
xlink:href="#4"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="4">
<stop
id="D"
stop-color="#fff"
stop-opacity="0.8" />
<stop
id="E"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<linearGradient
id="3">
<stop
id="B"
stop-color="#fff" />
<stop
id="C"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2026"
id="linearGradient2986"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.65718,0,0,0.65718,-16.966,114.63)"
x1="-344.14999"
y1="274.70999"
x2="-395.85001"
y2="425.39999" />
<linearGradient
id="linearGradient2026"
y2="425.39999"
gradientUnits="userSpaceOnUse"
x2="-395.85001"
gradientTransform="matrix(-0.65718,0,0,0.65718,-16.966,114.63)"
y1="274.70999"
x1="-344.14999"
inkscape:collect="always">
<stop
id="stop2557"
style="stop-color:#ffffff"
offset="0" />
<stop
id="stop2559"
style="stop-color:#ffffff;stop-opacity:0"
offset="1" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.25"
inkscape:cx="12"
inkscape:cy="21.622174"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="1359"
inkscape:window-height="768"
inkscape:window-x="1426"
inkscape:window-y="133"
inkscape:window-maximized="0" />
<metadata
id="metadata165">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1">
<path
d="M 0.09278877,4.4518483 2.0366828,5.1808129 3.0086299,7.8536629 4.3989997,5.997257 6.896417,6.8817159 7.8683641,0.07809049 Z M 3.5767326,5.6376418 3.1315811,6.8452816 2.6038135,5.3300201 6.6869631,1.6215368 Z"
id="path2952"
style="fill:#3465a3;fill-opacity:1;stroke-width:0.485974"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<g
id="g2984"
transform="matrix(0.02745618,0,0,0.02745618,-0.91663178,-4.853659)"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<rect
id="rect2974"
style="fill:#f00a10;fill-rule:evenodd"
inkscape:export-ydpi="7.7063322"
rx="39.431"
transform="scale(-1,1)"
ry="39.431"
width="145.82001"
inkscape:export-xdpi="7.7063322"
y="318.34"
x="-318.76001"
height="144.64"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png" />
<g
id="g2980"
inkscape:export-ydpi="7.7063322"
inkscape:export-xdpi="7.7063322"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png"
transform="matrix(0.65718,0,0,0.65718,-102.64,-95.387)">
<path
id="path2976"
style="fill:#cb1e0e"
d="m 554.13,739.6 35.77,-35.77 c 3.75,-3.75 5.63,-7.9 5.63,-12.44 -0.23,-4.09 -2.1,-7.9 -5.63,-11.42 -3.18,-3.18 -6.92,-4.99 -11.24,-5.45 -4.43,-0.34 -8.63,1.48 -12.61,5.45 l -35.78,35.78 -35.77,-35.78 c -3.64,-3.63 -7.73,-5.45 -12.27,-5.45 -4.43,0.34 -8.29,2.16 -11.58,5.45 -2.84,2.84 -4.49,6.53 -4.95,11.08 -0.45,4.77 1.2,9.03 4.95,12.78 l 35.77,35.77 -35.77,35.78 c -3.18,3.18 -4.95,7.33 -5.29,12.44 0.34,4.43 2.11,8.23 5.29,11.41 2.95,2.96 6.7,4.77 11.24,5.45 4.43,0.35 8.63,-1.47 12.61,-5.45 l 35.77,-35.77 35.78,35.77 c 3.75,3.75 7.9,5.4 12.44,4.94 4.66,-0.34 8.46,-1.98 11.41,-4.94 2.73,-2.72 4.38,-6.41 4.95,-11.07 0.68,-4.54 -0.97,-8.8 -4.95,-12.78 L 554.13,739.6" />
<path
id="path2978"
style="fill:#ffffff"
d="m 552.28,739.6 32.99,-32.98 c 3.45,-3.46 5.18,-7.28 5.18,-11.47 -0.21,-3.77 -1.94,-7.28 -5.18,-10.53 -2.94,-2.93 -6.39,-4.6 -10.37,-5.02 -4.08,-0.32 -7.96,1.36 -11.62,5.02 l -32.99,32.99 -32.99,-32.99 c -3.35,-3.35 -7.12,-5.02 -11.31,-5.02 -4.08,0.31 -7.64,1.99 -10.68,5.02 -2.62,2.62 -4.14,6.03 -4.56,10.22 -0.41,4.39 1.1,8.32 4.56,11.78 l 32.99,32.98 -32.99,32.99 c -2.93,2.93 -4.56,6.75 -4.87,11.47 0.31,4.08 1.94,7.59 4.87,10.52 2.72,2.72 6.18,4.4 10.37,5.03 4.08,0.31 7.96,-1.36 11.62,-5.03 l 32.99,-32.99 32.99,32.99 c 3.45,3.46 7.27,4.98 11.46,4.56 4.3,-0.32 7.8,-1.84 10.53,-4.56 2.51,-2.51 4.03,-5.92 4.55,-10.21 0.63,-4.19 -0.89,-8.11 -4.55,-11.78 L 552.28,739.6" />
</g>
<path
id="path2982"
style="fill:url(#linearGradient2986);fill-rule:evenodd"
d="m 280.23,324.53 h -68.77 c -18.2,0 -32.86,14.65 -32.86,32.86 v 66.55 c 0.59,14.21 2.86,5.23 7.17,-10.51 5.02,-18.29 21.35,-34.27 41.23,-46.25 15.18,-9.15 32.17,-14.99 63.1,-15.54 17.54,-0.32 15.99,-22.58 -9.87,-27.11 z"
inkscape:export-ydpi="7.7063322"
sodipodi:nodetypes="ccccsssc"
inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png"
inkscape:export-xdpi="7.7063322" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

186
icons/facho-send-ok.svg Normal file
View File

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="30"
height="30"
viewBox="0 0 7.9374999 7.9375003"
version="1.1"
id="svg168"
inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
sodipodi:docname="facho-send-ok.svg">
<defs
id="defs162">
<linearGradient
id="linearGradient2876"
osb:paint="solid">
<stop
style="stop-color:#f3ecec;stop-opacity:1;"
offset="0"
id="stop2874" />
</linearGradient>
<radialGradient
cx="20.687"
cy="46.616001"
r="12.228"
id="5"
xlink:href="#2"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8204677,0,0,0.1341645,4.4416214,38.87484)" />
<linearGradient
id="2">
<stop
id="9"
stop-color="#2e3436" />
<stop
id="A"
offset="1"
stop-color="#2e3436"
stop-opacity="0" />
</linearGradient>
<linearGradient
y1="4.5500002"
x2="0"
y2="44.23"
id="6"
xlink:href="#4"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="4">
<stop
id="D"
stop-color="#fff"
stop-opacity="0.8" />
<stop
id="E"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<linearGradient
id="3">
<stop
id="B"
stop-color="#fff" />
<stop
id="C"
offset="1"
stop-color="#fff"
stop-opacity="0" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#2"
id="radialGradient2964"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8204677,0,0,0.1341645,4.4416214,38.87484)"
cx="20.687"
cy="46.616001"
r="12.228" />
<linearGradient
inkscape:collect="always"
xlink:href="#4"
id="linearGradient2966"
gradientUnits="userSpaceOnUse"
y1="4.5500002"
x2="0"
y2="44.23" />
<linearGradient
x1="18.389"
y1="-12.905"
x2="34.681"
y2="29.688"
id="7"
xlink:href="#3"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.25"
inkscape:cx="12"
inkscape:cy="9.0379046"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="1359"
inkscape:window-height="768"
inkscape:window-x="1426"
inkscape:window-y="133"
inkscape:window-maximized="0" />
<metadata
id="metadata165">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g133"
transform="matrix(1.4918618,0,0,1.4918618,-0.39893873,1.9512831)">
<path
d="m 0.325281,1.692508 1.299999,0.487504 0.649999,1.787497 0.9298275,-1.241492 1.670176,0.591492 0.649999,-4.55 z M 2.6552055,2.48552 2.357507,3.293144 2.004555,2.279795 4.7352065,-0.200294 Z"
id="path112"
style="fill:#3465a3;fill-opacity:1;stroke-width:0.325001"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<g
transform="matrix(0.06373488,0,0,0.06373488,2.265015,0.955526)"
id="g2962">
<path
d="m 31.44716,45.129018 c 0,0.906037 -4.491673,1.640524 -10.032432,1.640524 -5.540759,0 -10.032431,-0.734487 -10.032431,-1.640524 0,-0.906036 4.491672,-1.640523 10.032431,-1.640523 5.540759,0 10.032432,0.734487 10.032432,1.640523 z"
id="path2954"
opacity="0.8"
fill="url(#5)"
style="fill:url(#radialGradient2964)" />
<path
d="M 37.395259,3.9928032 C 36.751767,3.881258 36.084975,4.1531965 35.70893,4.7391151 L 19.687179,29.697689 11.077028,21.800115 C 10.295804,21.298722 9.2618142,21.512776 8.7604174,22.294002 l -4.4617137,4.963236 c -0.5013867,0.781219 -0.2742552,1.815825 0.5069644,2.317217 0,0 15.6848449,14.93278 15.7046779,14.94441 0.183096,0.117517 0.37856,0.183941 0.579198,0.223816 0.65542,0.130262 1.354145,-0.132654 1.738024,-0.730775 L 44.435002,10.35218 C 44.936393,9.570958 44.709267,8.5363529 43.928039,8.0349601 L 38.026151,4.2321538 C 37.830842,4.1068047 37.609756,4.0299838 37.395259,3.9928032 Z"
id="path2956"
fill="#8bb300"
stroke="#445800"
stroke-linejoin="round"
stroke-linecap="round"
stroke-width="1.061" />
<path
d="m 37,5.09375 c -0.222462,0.068582 -0.368311,0.2935582 -0.6875,0.75 l -8.125,12.71875 -7.25,11.1875 c -0.07531,0.06635 -0.114229,0.155323 -0.15625,0.25 -0.04202,0.09468 -0.09546,0.182583 -0.15625,0.28125 -0.121581,0.197334 -0.311651,0.38921 -0.75,0.46875 -0.306118,0.05555 -0.454585,0.03303 -0.625,-0.0625 -0.170415,-0.09553 -0.338659,-0.262637 -0.65625,-0.5 L 11,23.25 c -0.211436,-0.196035 -0.366685,-0.338043 -0.5,-0.4375 -0.133315,-0.09946 -0.255459,-0.151284 -0.375,-0.15625 -0.119541,-0.005 -0.23023,0.04256 -0.34375,0.125 C 9.66773,22.863687 9.5440059,22.977083 9.375,23.125 l -3.53125,3.84375 c -0.4763125,0.442708 -0.6947169,0.828134 -0.65625,1.21875 0.038467,0.390616 0.3182284,0.733606 0.84375,1.125 0,0 3.557027,3.391995 7.125,6.78125 1.783986,1.694627 3.566493,3.38424 4.90625,4.65625 0.669879,0.636005 1.233193,1.159628 1.625,1.53125 0.195903,0.185811 0.363216,0.337601 0.46875,0.4375 0.05277,0.04995 0.09738,0.09896 0.125,0.125 0.01381,0.01302 0.02395,0.02442 0.03125,0.03125 0.0011,9.44e-4 0.03118,-4.3e-5 0.03125,0 0.08073,0.05181 0.08877,0.0943 0.1875,0.1875 0.09873,0.0932 0.255536,0.234231 0.625,0.53125 0.139903,0.11247 0.326711,0.128203 0.46875,0.0625 0.142039,-0.0657 0.254912,-0.193662 0.375,-0.34375 0.240177,-0.300175 0.448124,-0.693175 0.625,-0.96875 L 43.40625,10.0625 C 43.524201,9.8787288 43.630105,9.7136106 43.6875,9.59375 43.744895,9.4738894 43.775145,9.3861103 43.75,9.28125 43.724855,9.1763897 43.635632,9.0844462 43.53125,9 43.426868,8.9155538 43.309755,8.8373201 43.125,8.71875 c -0.01033,-0.00186 -0.02092,-0.00186 -0.03125,0 L 37.8125,5.4375 C 37.622121,5.3160067 37.502367,5.215151 37.375,5.15625 37.247633,5.097349 37.114744,5.0583758 37,5.09375 Z"
id="path2958"
opacity="0.8"
fill="none"
stroke="url(#6)"
stroke-linejoin="round"
stroke-linecap="round"
stroke-width="1.061"
style="stroke:url(#linearGradient2966)" />
<path
d="M 36.96875,4.5 C 36.634637,4.5401947 36.326814,4.7168023 36.125,5.03125 L 25.25,21.9375 c 4.538877,-1.517457 9.095334,-2.802858 13.65625,-3.875 l 5.125,-8 c 0.357447,-0.5569403 0.180055,-1.2687651 -0.375,-1.625 L 37.75,4.625 C 37.638068,4.553162 37.498851,4.5323019 37.3125,4.5 37.200153,4.4805254 37.080121,4.4866018 36.96875,4.5 Z M 9.875,22.0625 c -0.2851202,0.06083 -0.5453222,0.229783 -0.71875,0.5 C 9.1473,22.58404 9.13686,22.60492 9.125,22.625 l -4.40625,4.90625 c -0.00619,0.0096 0.00588,0.02152 0,0.03125 -0.3339753,0.552285 -0.1704409,1.243682 0.375,1.59375 0.021536,0.0089 0.04242,0.01939 0.0625,0.03125 0,0 0.496977,0.467173 0.53125,0.5 3.0185158,-1.352167 6.036186,-2.634284 9.0625,-3.84375 l -3.96875,-3.625 c -0.0098,-0.0063 -0.02139,0.006 -0.03125,0 -0.279841,-0.169766 -0.58988,-0.217075 -0.875,-0.15625 z"
id="path2960"
opacity="0.8"
fill="url(#7)"
stroke-width="1.061"
style="fill:url(#7)" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

1001
invoice.py

File diff suppressed because it is too large Load Diff

View File

@ -1,31 +1,133 @@
<?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. -->
<tryton>
<data>
<record model="ir.action.act_window" id="act_invoice_in_form">
<field name="name">Invoices Fe</field>
<field name="res_model">account.invoice</field>
<field name="domain" eval="[('is_fe_colombia', '=', True)]" pyson="1"/>
<field name="context" eval="{'is_fe_colombia': True}" pyson="1"/>
</record>
<record model="ir.ui.view" id="invoice_fe_colombia_in_form">
<field name="model">account.invoice</field>
<field name="inherit" ref="account_invoice.invoice_view_form"/>
<field name="name">invoice_fe_colombia_form</field>
</record>
<record model="ir.ui.view" id="invoice_fe_page_in_form">
<field name="model">account.invoice</field>
<field name="inherit" ref="account_invoice.invoice_view_form"/>
<field name="name">invoice_page_form</field>
</record>
<record model="ir.ui.view" id="party_fe_colombia_form">
<field name="model">party.party</field>
<field name="inherit" ref="party.party_view_form"/>
<field name="name">party_form</field>
</record>
<menuitem name="Customer Invoice Fe Colombia"
parent="account_invoice.menu_invoices" action="act_invoice_in_form"
id="menu_invoice_fe_colombia_in_form" sequence="3"/>
</data>
<data>
<record model="ir.ui.view" id="invoice_fe_colombia_in_form">
<field name="model">account.invoice</field>
<field name="inherit" ref="account_invoice.invoice_view_form"/>
<field name="name">invoice_fe_colombia_form</field>
</record>
<record model="ir.ui.view" id="invoice_fe_colombia_in_tree">
<field name="model">account.invoice</field>
<field name="inherit" ref="account_invoice.invoice_view_tree"/>
<field name="name">invoice_fe_colombia_tree</field>
</record>
<record model="ir.ui.view" id="payment_term_fe_colombia_in_form">
<field name="model">account.invoice.payment_term</field>
<field name="inherit" ref="account_invoice.payment_term_view_form"/>
<field name="name">payment_term_fe_colombia_form</field>
</record>
<record model="ir.ui.view" id="payment_method_fe_colombia_in_form">
<field name="model">account.invoice.payment.method</field>
<field name="inherit" ref="account_invoice.payment_method_view_form"/>
<field name="name">payment_method_fe_colombia_form</field>
</record>
<record model="ir.ui.view" id="invoice_subtype_view_form">
<field name="model">account.invoice.subtype</field>
<field name="inherit" ref="account_invoice_subtype.invoice_subtype_view_form"/>
<field name="name">invoice_subtype_form</field>
</record>
<record model="ir.action.report" id="email_invoice_fe">
<field name="name">Send Email Invoice</field>
<field name="model">account.invoice</field>
<field name="report_name">account.invoice.email_invoice_fe</field>
<field name="report">account_invoice_facho/email_invoice.html</field>
<field name="template_extension">html</field>
<field name="single" eval="True"/>
</record>
<record model="ir.action.report" id="report_invoice_fe">
<field name="name">Invoice Fe</field>
<field name="report_name">account.invoice.dian.zip</field>
<field name="model">account.invoice</field>
<field name="report">account_invoice_subtype/invoice.fodt</field>
<field name="single" eval="True"/>
</record>
<record model="ir.action.keyword" id="report_invoice_keyword">
<field name="keyword">form_print</field>
<field name="model">account.invoice,-1</field>
<field name="action" ref="report_invoice_fe"/>
</record>
<record model="ir.ui.icon" id="facho_mail_ok">
<field name="name">facho-mail-ok</field>
<field name="path">icons/facho-mail-ok.svg</field>
</record>
<record model="ir.ui.icon" id="facho_mail_fail">
<field name="name">facho-mail-fail</field>
<field name="path">icons/facho-mail-fail.svg</field>
</record>
<record model="ir.ui.icon" id="facho_send_fail">
<field name="name">facho-send-fail</field>
<field name="path">icons/facho-send-fail.svg</field>
</record>
<record model="ir.ui.icon" id="facho_not_posted">
<field name="name">facho-not-posted</field>
<field name="path">icons/facho-not-posted.svg</field>
</record>
<record model="ir.model.button" id="facho_xml_button">
<field name="name">xml</field>
<field name="string">XML</field>
<field name="model" search="[('model', '=', 'account.invoice')]"/>
</record>
<record model="ir.model.button-res.group"
id="invoice_facho_button_group_account">
<field name="button" ref="facho_xml_button"/>
<field name="group" ref="account.group_account"/>
</record>
<record model="ir.model.button" id="facho_xml_signed_button">
<field name="name">xml_signed</field>
<field name="string">Xml Signed</field>
<field name="model" search="[('model', '=', 'account.invoice')]"/>
</record>
<record model="ir.model.button-res.group"
id="invoice_facho_xml_signed_button_group_account">
<field name="button" ref="facho_xml_signed_button"/>
<field name="group" ref="account.group_account"/>
</record>
<record model="ir.model.button" id="facho_fe_update_status_button">
<field name="name">fe_update_status</field>
<field name="string">FE Status</field>
<field name="model" search="[('model', '=', 'account.invoice')]"/>
</record>
<record model="ir.model.button-res.group"
id="invoice_facho_fe_update_status_button_group_account">
<field name="button" ref="facho_fe_update_status_button"/>
<field name="group" ref="account.group_account"/>
</record>
<record model="ir.model.button" id="facho_fe_send_button">
<field name="name">fe_send</field>
<field name="string">FE Send</field>
<field name="model" search="[('model', '=', 'account.invoice')]"/>
</record>
<record model="ir.model.button-res.group"
id="invoice_facho_fe_send_button_group_account">
<field name="button" ref="facho_fe_send_button"/>
<field name="group" ref="account.group_account"/>
</record>
<record model="ir.model.button" id="facho_fe_email_button">
<field name="name">fe_email</field>
<field name="string">Fe Email</field>
<field name="model" search="[('model', '=', 'account.invoice')]"/>
</record>
<record model="ir.model.button-res.group"
id="invoice_facho_fe_email_button_group_account">
<field name="button" ref="facho_fe_email_button"/>
<field name="group" ref="account.group_account"/>
</record>
<record model="ir.action.wizard" id="send_invoice">
<field name="name">Send Fe</field>
<field name="wiz_name">account.invoice.send_invoices</field>
<field name="model">account.invoice</field>
</record>
<record model="ir.action.keyword" id="send_invoice_keyword">
<field name="keyword">form_action</field>
<field name="model">account.invoice,-1</field>
<field name="action" ref="send_invoice"/>
</record>
<record model="ir.cron" id="cron_fe_delivery">
<field name="method">account.invoice|fe_delivery</field>
<field name="interval_number" eval="1"/>
<field name="interval_type">hours</field>
</record>
</data>
</tryton>

57
ir.py Normal file
View File

@ -0,0 +1,57 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import fields
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
from trytond.transaction import Transaction
class Trigger(metaclass=PoolMeta):
__name__ = 'ir.trigger'
@classmethod
def __setup__(cls):
super().__setup__()
cls.action.selection.append(
('account.invoice|trigger', "Account Invoice"),
)
@classmethod
def __register__(cls, module_name):
cursor = Transaction().connection.cursor()
table = cls.__table_handler__(cls, module_name)
sql_table = cls.__table__()
super(Trigger, cls).__register__(module_name)
table_h = cls.__table_handler__(module_name)
# Migration from 3.4:
# change minimum_delay into timedelta minimum_time_delay
if table.column_exist('minimum_delay'):
cursor.execute(*sql_table.select(
sql_table.id, sql_table.minimum_delay,
where=sql_table.minimum_delay != Null))
for id_, delay in cursor.fetchall():
delay = datetime.timedelta(hours=delay)
cursor.execute(*sql_table.update(
[sql_table.minimum_time_delay],
[delay],
where=sql_table.id == id_))
table.drop_column('minimum_delay')
# Migration from 5.4: merge action
if (table_h.column_exist('action_model')
and table_h.column_exist('action_function')):
pool = Pool()
Model = pool.get('ir.model')
model = Model.__table__()
action_model = model.select(
model.model, where=model.id == sql_table.action_model)
cursor.execute(*sql_table.update(
[sql_table.action],
[Concat(action_model, Concat(
'|', sql_table.action_function))]))
table_h.drop_column('action_model')
table_h.drop_column('action_function')

20
ir.xml Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<tryton>
<data>
<record model="ir.trigger" id="posted_invoice_trigger">
<field name="name">When a customer invoice is posted</field>
<field name="model" search="[('model', '=', 'account.invoice')]"/>
<field name="on_write" eval="True"/>
<field name="action">account.invoice|trigger</field>
<field name="condition" eval="And(Eval('self', {}).get('state', '') == 'posted', Or(Eval('self', {}).get('type') == 'in', Eval('self', {}).get('type') == 'out'))" pyson="1"/>
</record>
<record model="ir.trigger" id="fe_status_done_trigger">
<field name="name">When fe status is done</field>
<field name="model" search="[('model', '=', 'account.invoice')]"/>
<field name="on_write" eval="True"/>
<field name="action">notification.email|trigger</field>
<field name="condition" eval="And(Eval('self', {}).get('fe_delivery_state', '') == 'done', Eval('self', {}).get('type') == 'out')" pyson="1"/>
<field name="notification_email" ref="send_email_fe_invoice"/>
</record>
</data>
</tryton>

199
locale/es.po Normal file
View File

@ -0,0 +1,199 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.invoice,fe_delivery_trackid:"
msgid "Delivery TrackID"
msgstr "Pista del envío"
msgctxt "field:account.invoice,fe_delivery_state:"
msgid "Delivery State"
msgstr "Estado del envío"
msgctxt "field:account.invoice,fe_delivery_status_description:"
msgid "Status Description"
msgstr "Descripción del estado"
msgctxt "field:account.invoice,fe_delivery_error_message:"
msgid "Error Message"
msgstr "Mensaje de error"
msgctxt "field:account.invoice,fe_delivery_checked_at:"
msgid "Delivery Checked At"
msgstr "Hora del envío"
msgctxt "field:account.invoice,fe_qrcode:"
msgid "QR Code"
msgstr "Código QR"
msgctxt "field:account.invoice,fe_states:"
msgid "States"
msgstr "Estados"
msgctxt "field:account.invoice,fe_xml_file:"
msgid "Fe XML File"
msgstr "Archivo FE XML"
msgctxt "field:account.invoice,fe_operation_type:"
msgid "Operation Type"
msgstr "Tipo de Documento"
msgctxt "field:account.invoice,fe_document_reference:"
msgid "Document of Reference"
msgstr "Documento de Referencia"
msgctxt "field:account.invoice,fe_way_to_pay:"
msgid "Way to Pay"
msgstr "Forma de Pago"
msgctxt "field:account.invoice,fe_way_to_pay:"
msgid "Way to Pay"
msgstr "Forma de Pago"
msgctxt "field:account.invoice,fe_document:"
msgid "Fe Document"
msgstr "Documento FE"
msgctxt "field:account_invoice_facho.configuration,dian_fe_habilitation:"
msgid "Habilitation"
msgstr "Habilitación"
msgctxt "field:account_invoice_facho.configuration,dian_fe_debit_note:"
msgid "Debit Note"
msgstr "Nota Débito"
msgctxt "field:account_invoice_facho.configuration,dian_fe_public_key:"
msgid "Public Key"
msgstr "Llave Pública"
msgctxt "field:account_invoice_facho.configuration,dian_fe_private_key:"
msgid "Private Key"
msgstr "Llave Privada"
msgctxt "field:account_invoice_facho.configuration,dian_fe_test_setid:"
msgid "Testsetid Dian"
msgstr "Id Set pruebas Dian"
msgctxt "field:account_invoice_facho.configuration,dian_fe_cert:"
msgid "Cert"
msgstr "Certificado"
msgctxt "field:account_invoice_facho.configuration,dian_fe_cert_passpharase:"
msgid "Cert Passpharase"
msgstr "Clave de paso"
msgctxt "field:account_invoice_facho.configuration,dian_fe_technologic_supplier:"
msgid "Technologic Supplier"
msgstr "Proveedor Tecnológico"
msgctxt "field:account_invoice_facho.configuration,dian_fe_obliged_bill:"
msgid "Obliged to bill"
msgstr "Obligado a facturar"
msgctxt "field:account_invoice_facho.configuration,dian_fe_software_identification:"
msgid "Software Identification"
msgstr "Identificación de Software"
msgctxt "field:account_invoice_facho.configuration,dian_fe_invoice_resolution:"
msgid "Invoice Resolution"
msgstr "Resolución de Facturación"
msgctxt "field:account.invoice.subtype,fe_document:"
msgid "Fe Document"
msgstr "Documento FE"
msgctxt "field:account.invoice.payment_term,payment_method:"
msgid "Payment Method"
msgstr "Método de Pago"
msgctxt "field:account.invoice.payment.method,fe_method:"
msgid "Method Fe"
msgstr "Método Fe"
msgctxt "field:account.invoice.payment.method,fe_payment:"
msgid "Payment Fe"
msgstr "Pago Fe"
msgctxt "field:account.tax,fe_tax_type:"
msgid "Fe Tax Type"
msgstr "Tipo de Impuesto FE"
msgctxt "model:ir.model.button,string:facho_xml_button"
msgid "Xml"
msgstr "Crear Xml"
msgctxt "model:ir.model.button,string:facho_xml_signed_button"
msgid "Xml Signed"
msgstr "Firmar Xml"
msgctxt "model:ir.model.button,string:facho_fe_update_status_button"
msgid "FE Status"
msgstr "Estado FE"
msgctxt "model:ir.model.button,string:facho_fe_send_button"
msgid "FE Send"
msgstr "Enviar FE"
msgctxt "model:ir.action,name:send_invoice"
msgid "Send Fe"
msgstr "Enviar Facturas FE"
msgctxt "model:ir.model.button,string:facho_fe_email_button"
msgid "fe_email"
msgstr "Correo FE"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuración"
msgctxt "selection:account.invoice,fe_delivery_state:"
msgid "Draft"
msgstr "Borrador"
msgctxt "selection:account.invoice,fe_delivery_state:"
msgid "Draft"
msgstr "Borrador"
msgctxt "selection:account.invoice,fe_delivery_state:"
msgid "Queued"
msgstr "En Cola"
msgctxt "selection:account.invoice,fe_delivery_state:"
msgid "Delivered"
msgstr "Enviado"
msgctxt "selection:account.invoice,fe_delivery_state:"
msgid "Exception"
msgstr "Excepción"
msgctxt "selection:account.invoice,fe_delivery_state:"
msgid "Failure"
msgstr "Fallido"
msgctxt "selection:account.invoice,fe_delivery_state:"
msgid "Done"
msgstr "Hecho"
msgctxt "model:ir.action,name:act_configuration_facho_form"
msgid "Configuration"
msgstr "Configuración"
msgctxt "model:ir.trigger,name:posted_invoice_trigger"
msgid "When a customer invoice is posted"
msgstr "Cuando la factura de cliente esté contabilizada"
msgctxt "model:ir.trigger,name:fe_status_done_trigger"
msgid "When fe status is done"
msgstr "Cuando el estado de FE esté en hecho"
msgctxt "model:ir.action,name:email_invoice_fe"
msgid "Send Email Invoice"
msgstr "Enviar Factura por correo"
msgctxt "model:ir.action,name:report_invoice_fe"
msgid "Invoice FE"
msgstr "Factura FE"
msgctxt "selection:ir.cron,method:"
msgid "FE Delivery"
msgstr "Envío de FE"

7
message.xml Normal file
View File

@ -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. -->
<tryton>
<data grouped="1">
</data>
</tryton>

11
notification.xml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0"?>
<tryton>
<data>
<record model="notification.email" id="send_email_fe_invoice">
<field name="content" search="[('report_name', '=', 'account.invoice.email_invoice_fe')]"/>
<field name="subject">${record.company.party.identifiers[0].code};${record.company.rec_name};${record.number};${record.fe_operation_type};${record.company.rec_name}</field>
<field name="recipients" search="[('model.model', '=', 'account.invoice'), ('name', '=', 'party')]"/>
</record>
</data>
</tryton>

View File

@ -68,7 +68,7 @@ setup(name=name,
package_data={
'trytond.modules.account_invoice_facho': (info.get('xml', [])
+ ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.fodt',
'icons/*.svg', 'tests/*.rst']),
'*.html', 'icons/*.svg', 'tests/*.rst']),
},
classifiers=[
'Development Status :: 5 - Production/Stable',

30
tax.py Normal file
View File

@ -0,0 +1,30 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import fields, ModelView, ModelSQL
from trytond.pool import PoolMeta, Pool
from trytond.pyson import Eval, And, Or, If, Bool
class Tax(metaclass=PoolMeta):
__name__ = 'account.tax'
_states = {
'readonly': (Bool(Eval('template', -1))
& ~Eval('template_override', False)),
}
fe_tax_type = fields.Selection([('', ""),
('01', "Impuesto sobre las Ventas (IVA)"),
('02', "Impuesto al Consumo Departamenta Nominal (IC)"),
('03', "Impuesto de Industria, Comercio y Aviso (ICA)"),
('04', "Impuesto Nacional al Consumo (INC)"),
('05', "Retención sobre el IVA (ReteIVA)"),
('06', "Retención Sobre la Renta (ReteRenta)"),
('07', "Retención sobre el ICA (ReteICA)"),
('08', "Impuesto al Consumo Departamental Porcentual (IC Porcentual)"),
('20', "Cuota de Fomento Hortifrutícula (FtoHorticultura)"),
('21', "Impuesto de timbre (Timbre)"),
('22', "Impuesto Nacional al Consumo de Bolsa Plástica (INC Bolsas)"),
('23', "Impuesto Nacional del Carbono (INCarbono)"),
('24', "Impuesto Nacional a los Combustibles (INCombustibles)"),
('25', "Sobretasa a los combustibles (Sobretasa Combustibles)")], "Fe Tax Type", states=_states)

12
tax.xml Normal file
View File

@ -0,0 +1,12 @@
<?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. -->
<tryton>
<data>
<record model="ir.ui.view" id="tax_view_form">
<field name="model">account.tax</field>
<field name="inherit" ref="account.tax_view_form"/>
<field name="name">tax_form</field>
</record>
</data>
</tryton>

View File

@ -1,11 +1,18 @@
[tryton]
version=5.4.0
version=6.4.0
depends:
ir
company
account_co_co
account_invoice
account_invoice_subtype
notification_email
xml:
facho.xml
configuration.xml
dian.xml
invoice.xml
dian.xml
message.xml
notification.xml
ir.xml
tax.xml

View File

@ -1,21 +1,27 @@
<?xml version="1.0"?>
<form>
<label name="dian_fe_habilitacion"/>
<field name="dian_fe_habilitacion"/>
<label name="dian_fe_key"/>
<field name="dian_fe_key"/>
<label name="dian_fe_NITProveedorTecnologico"/>
<field name="dian_fe_NITProveedorTecnologico"/>
<label name="dian_fe_NITObligadoFacturarElectronicamente"/>
<field name="dian_fe_NITObligadoFacturarElectronicamente"/>
<label name="dian_fe_IdentificadorSoftware"/>
<field name="dian_fe_IdentificadorSoftware"/>
<label name="dian_fe_llave_publica"/>
<field name="dian_fe_llave_publica"/>
<label name="dian_fe_llave_privada"/>
<field name="dian_fe_llave_privada"/>
<label name="dian_fe_habilitation"/>
<field name="dian_fe_habilitation"/>
<label name="dian_fe_debit_note"/>
<field name="dian_fe_debit_note"/>
<label name="dian_fe_technologic_supplier"/>
<field name="dian_fe_technologic_supplier"/>
<label name="dian_fe_obliged_bill"/>
<field name="dian_fe_obliged_bill"/>
<label name="dian_fe_software_identification"/>
<field name="dian_fe_software_identification"/>
<label name="dian_fe_public_key"/>
<field name="dian_fe_public_key"/>
<label name="dian_fe_private_key"/>
<field name="dian_fe_private_key"/>
<label name="dian_fe_cert"/>
<field name="dian_fe_cert"/>
<label name="dian_fe_test_setid"/>
<field name="dian_fe_test_setid"/>
<label name="dian_fe_llave_frasepaso"/>
<field name="dian_fe_llave_frasepaso"/>
<label name="dian_fe_cert_passpharase"/>
<field name="dian_fe_cert_passpharase"/>
<label name="dian_fe_pin"/>
<field name="dian_fe_pin"/>
<label name="dian_fe_invoice_resolution"/>
<field name="dian_fe_invoice_resolution"/>
</form>

View File

@ -1,8 +1,43 @@
<?xml version="1.0"?>
<data>
<xpath expr="/form/field[@name='reference']"
<xpath expr="//field[@name='subtype']" position="after">
<label name="fe_document"/>
<field name="fe_document"/>
</xpath>
<xpath expr="//label[@name='payment_term']" position="before">
<label name="fe_way_to_pay"/>
<field name="fe_way_to_pay"/>
</xpath>
<xpath expr="/form/notebook/page[@id='payment']"
position="after">
<label name="fe_habilitacion"/>
<field name="fe_habilitacion"/>
<page string="FE Colombia" id="fe_colombia_invoice">
<label name="fe_delivery_state"/>
<field name="fe_delivery_state"/>
<label name="fe_delivery_status_description"/>
<field name="fe_delivery_status_description"/>
<newline/>
<label name="fe_delivery_error_message"/>
<field name="fe_delivery_error_message"/>
<newline/>
<label name="fe_delivery_trackid"/>
<field name="fe_delivery_trackid"/>
<label name="fe_delivery_checked_at"/>
<field name="fe_delivery_checked_at"/>
<label name="fe_qrcode"/>
<field name="fe_qrcode" widget="url"/>
<label name="fe_xml_file"/>
<field name="fe_xml_file"/>
<label name="fe_operation_type"/>
<field name="fe_operation_type"/>
<newline/>
<button name="xml" icon="tryton-ok"/>
<button name="xml_signed" icon="tryton-ok"/>
<button name="fe_send" icon="tryton-ok"/>
<button name="fe_update_status" icon="tryton-ok"/>
</page>
</xpath>
<xpath expr="//field[@name='credit_note']" position="after">
<label name="fe_document_reference"/>
<field name="fe_document_reference"/>
</xpath>
</data>

View File

@ -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. -->
<data>
<xpath expr="//field[@name='description']" position="after">
<field name="fe_delivery_state"/>
<field name="fe_states" icon="fe_states_icon"/>
<button name="fe_email"/>
</xpath>
</data>

View File

@ -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. -->
<data>
<xpath
expr="/form/field[@name='report_text']" position="after">
<label name="technical_key"/>
<field name="technical_key"/>
</xpath>
</data>

View File

@ -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. -->
<data>
<xpath expr="/form/field[@name='default_journal']" position="after">
<label name="fe_document"/>
<field name="fe_document"/>
</xpath>
</data>

View File

@ -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. -->
<data>
<xpath expr="/form/field[@name='default_journal']" position="after">
<label name="fe_document"/>
<field name="fe_document"/>
</xpath>
</data>

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<data>
<xpath expr="//field[@name='credit_account']" position="after">
<label name="fe_method"/>
<field name="fe_method"/>
<label name="fe_payment"/>
<field name="fe_payment"/>
</xpath>
</data>

View File

@ -0,0 +1,7 @@
<?xml version="1.0"?>
<data>
<xpath expr="//field[@name='active']" position="after">
<label name="payment_method"/>
<field name="payment_method"/>
</xpath>
</data>

10
view/tax_form.xml Normal file
View File

@ -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. -->
<data>
<xpath expr="//field[@name='credit_note_account']" position="after">
<newline/>
<label name="fe_tax_type"/>
<field name="fe_tax_type"/>
</xpath>
</data>