From a719340806e8521a6dd889070269cc0a9242ae98 Mon Sep 17 00:00:00 2001 From: Sando Date: Sun, 7 Apr 2019 23:19:13 -0300 Subject: [PATCH 01/11] WSFEv1: Agrego los cambios de FCE al branch py3k --- wsfev1.py | 60 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/wsfev1.py b/wsfev1.py index 45e801e54..f47653306 100644 --- a/wsfev1.py +++ b/wsfev1.py @@ -11,20 +11,21 @@ # for more details. """Módulo para obtener CAE/CAEA, código de autorización electrónico webservice -WSFEv1 de AFIP (Factura Electrónica Nacional - Proyecto Version 1 - 2.10) +WSFEv1 de AFIP (Factura Electrónica Nacional - Proyecto Version 1 - 2.12) Según RG 2485/08, RG 2757/2010, RG 2904/2010 y RG2926/10 (CAE anticipado), RG 3067/2011 (RS - Monotributo), RG 3571/2013 (Responsables inscriptos IVA), RG 3668/2014 (Factura A IVA F.8001), RG 3749/2015 (R.I. y exentos) RG 4004-E Alquiler de inmuebles con destino casa habitación). RG 4109-E Venta de bienes muebles registrables. RG 4291/2018 Régimen especial de emisión y almacenamiento electrónico +RG 4367/2018 Régimen de Facturas de Crédito Electrónicas MiPyMEs Ley 27.440 Más info: http://www.sistemasagiles.com.ar/trac/wiki/ProyectoWSFEv1 """ __author__ = "Mariano Reingart " -__copyright__ = "Copyright (C) 2010-2017 Mariano Reingart" +__copyright__ = "Copyright (C) 2010-2019 Mariano Reingart" __license__ = "GPL 3.0" -__version__ = "1.21a" +__version__ = "1.22a" import datetime import decimal @@ -42,7 +43,7 @@ class WSFEv1(BaseWS): - "Interfaz para el WebService de Factura Electrónica Version 1 - 2.10" + "Interfaz para el WebService de Factura Electrónica Version 1 - 2.12" _public_methods_ = ['CrearFactura', 'AgregarIva', 'CAESolicitar', 'AgregarTributo', 'AgregarCmpAsoc', 'AgregarOpcional', 'AgregarComprador', @@ -170,11 +171,13 @@ def EstablecerCampoFactura(self, campo, valor): else: return False - def AgregarCmpAsoc(self, tipo=1, pto_vta=0, nro=0, cuit=None, **kwarg): + def AgregarCmpAsoc(self, tipo=1, pto_vta=0, nro=0, cuit=None, fecha=None, **kwarg): "Agrego un comprobante asociado a una factura (interna)" cmp_asoc = {'tipo': tipo, 'pto_vta': pto_vta, 'nro': nro} if cuit is not None: cmp_asoc['cuit'] = cuit + if fecha is not None: + cmp_asoc['fecha'] = fecha self.factura['cbtes_asoc'].append(cmp_asoc) return True @@ -259,6 +262,7 @@ def CAESolicitar(self): 'PtoVta': cbte_asoc['pto_vta'], 'Nro': cbte_asoc['nro'], 'Cuit': cbte_asoc.get('cuit'), + 'CbteFch': cbte_asoc.get('fecha'), }} for cbte_asoc in f['cbtes_asoc']] or None, 'Tributos': f['tributos'] and [ @@ -1004,11 +1008,18 @@ def main(): if "--prueba" in sys.argv: print(wsfev1.client.help("FECAESolicitar").encode("latin1")) - tipo_cbte = 6 if '--usados' not in sys.argv else 49 + if '--usados' in sys.argv: + tipo_cbte = 49 + concepto = 1 + elif '--fce' in sys.argv: + tipo_cbte = 201 + concepto = 1 + else: + tipo_cbte = 6 + concepto = 3 if ('--rg4109' not in sys.argv) else 1 punto_vta = 4001 cbte_nro = int(wsfev1.CompUltimoAutorizado(tipo_cbte, punto_vta) or 0) fecha = datetime.datetime.now().strftime("%Y%m%d") - concepto = 2 if ('--usados' not in sys.argv and '--rg4109' not in sys.argv) else 1 tipo_doc = 80 if '--usados' not in sys.argv else 30 nro_doc = "30500010912" cbt_desde = cbte_nro + 1 @@ -1020,13 +1031,15 @@ def main(): imp_trib = "1.00" imp_op_ex = "0.00" fecha_cbte = fecha + fecha_venc_pago = fecha_serv_desde = fecha_serv_hasta = None # Fechas del período del servicio facturado y vencimiento de pago: if concepto > 1: fecha_venc_pago = fecha fecha_serv_desde = fecha fecha_serv_hasta = fecha - else: - fecha_venc_pago = fecha_serv_desde = fecha_serv_hasta = None + elif '--fce' in sys.argv: + # obligatorio en Factura de Crédito Electrónica MiPyMEs (FCE): + fecha_venc_pago = fecha moneda_id = 'PES' moneda_ctz = '1.000' @@ -1053,12 +1066,14 @@ def main(): wsfev1.EstablecerCampoFactura("caea", caea) # comprobantes asociados (notas de crédito / débito) - if tipo_cbte in (2, 3, 7, 8, 12, 13): - tipo = 3 - pto_vta = 2 - nro = 1234 + if tipo_cbte in (2, 3, 7, 8, 12, 13, 203, 208, 213): + tipo = 201 if tipo_cbte in (203, 208, 213) else 3 + pto_vta = 4001 + nro = 1 cuit = "20267565393" - wsfev1.AgregarCmpAsoc(tipo, pto_vta, nro, cuit) + # obligatorio en Factura de Crédito Electrónica MiPyMEs (FCE): + fecha_cbte = fecha if tipo_cbte in (203, 208, 213) else None + wsfev1.AgregarCmpAsoc(tipo, pto_vta, nro, cuit, fecha_cbte) # otros tributos: tributo_id = 99 @@ -1098,20 +1113,27 @@ def main(): if '--rg4004' in sys.argv: wsfev1.AgregarOpcional(17, "1") # Intermediario wsfev1.AgregarOpcional(1801, "30500010912") # CUIT Propietario - wsfev1.AgregarOpcional(1802, "BNA") # Nombr e Titular + wsfev1.AgregarOpcional(1802, "BNA") # Nombre Titular # datos de compradores RG 4109-E bienes muebles registrables (%) if '--rg4109' in sys.argv: wsfev1.AgregarComprador(80, "30500010912", 99.99) wsfev1.AgregarComprador(80, "30999032083", 0.01) + # datos de Factura de Crédito Electrónica MiPyMEs (FCE): + if '--fce' in sys.argv: # 0110001900000000000000 + wsfev1.AgregarOpcional(2101, "2850590940090418135201") # CBU + wsfev1.AgregarOpcional(2102, "pyafipws") # alias + if tipo_cbte in (203, 208, 213): + wsfev1.AgregarOpcional(22, "S") # Anulación + # agregar la factura creada internamente para solicitud múltiple: if "--multiple" in sys.argv: wsfev1.AgregarFacturaX() - import time + # import time t0 = time.time() - if not '--caea' in sys.argv: - if not "--multiple" in sys.argv: + if '--caea' not in sys.argv: + if "--multiple" not in sys.argv: wsfev1.CAESolicitar() else: cant = wsfev1.CAESolicitarX() @@ -1139,7 +1161,7 @@ def main(): open("xmlrequest.xml", "wb").write(wsfev1.XmlRequest) open("xmlresponse.xml", "wb").write(wsfev1.XmlResponse) - if not "--multiple" in sys.argv: + if "--multiple" not in sys.argv: wsfev1.AnalizarXml("XmlResponse") p_assert_eq(wsfev1.ObtenerTagXml('CAE'), str(wsfev1.CAE)) p_assert_eq(wsfev1.ObtenerTagXml('Concepto'), '2') From 0ff70c28b10cc55b6216b6056dc002128ee2487b Mon Sep 17 00:00:00 2001 From: Facundo Batista Date: Mon, 21 Dec 2020 15:24:20 -0300 Subject: [PATCH 02/11] Traje cambios de funcionalidad (pero no todo por mal unicodes). --- conf/afip_ca_info.crt | 217 +++++------------------------------------- cot.py | 15 +-- iibb.py | 2 +- rece1.py | 15 ++- requirements.txt | 1 + utils.py | 15 ++- wsaa.py | 2 +- wsbfev1.py | 59 +++++++++++- wsfev1.py | 66 ++++++------- wsfexv1.py | 42 +++++++- wsmtx.py | 61 ++++++++++-- 11 files changed, 240 insertions(+), 255 deletions(-) diff --git a/conf/afip_ca_info.crt b/conf/afip_ca_info.crt index 684776332..e1687d6fb 100644 --- a/conf/afip_ca_info.crt +++ b/conf/afip_ca_info.crt @@ -1,195 +1,26 @@ -----BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIGPzCCBSegAwIBAgIQPnsDxBUUgfhED3t2/785ZjANBgkqhkiG9w0BAQUFADCB -iTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxLzAtBgNV -BAMTJkNPTU9ETyBIaWdoLUFzc3VyYW5jZSBTZWN1cmUgU2VydmVyIENBMB4XDTEz -MDEzMDAwMDAwMFoXDTE1MDEzMDIzNTk1OVowggE7MQswCQYDVQQGEwJBUjENMAsG -A1UEERMEMTA4NjEoMCYGA1UECBMfQ2l1ZGFkIEF1dG9ub21hIGRlIEJ1ZW5vcyBB -aXJlczEYMBYGA1UEBxMPQ2FwaXRhbCBGZWRlcmFsMR8wHQYDVQQJExZIaXBvbGl0 -byBZaXJpZ295ZW4gMzcwMTQwMgYDVQQKEytBRE1JTklTVFJBQ0lPTiBGRURFUkFM -IERFIElOR1JFU09TIFBVQkxJQ09TMUkwRwYDVQQLE0BJc3N1ZWQgdGhyb3VnaCBB -RE1JTklTVFJBQ0lPTiBGRURFUkFMIERFIElOR1JFU09TIFBVQkxJQ09TIEUtUEtJ -MRMwEQYDVQQLEwpJbnN0YW50U1NMMSIwIAYDVQQDExlzZXJ2aWNpb3NqYXZhLmFm -aXAuZ29iLmFyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoR6MVZFU -lvhL8HyrwkOmAYdYGF+Jmon/Ut6ypr6tA3+v+5PlJ4C95VHEdYzkX4A58HQXdBAi -zFvYqh0VE7rjmLmpuM741ID81tgsEUUAObn532jmklJWC8o+PvGcbzPMQ0HRyTEO -YZUuacywagyl11c1pZTndNMFMlAcxfJq9avq2/22m0rrKo7Qw7xT8EjXU4jzxgqB -g/d3oUUxx2kd1oixfJ0R8o5bhwu/frMZYHsHqjcWqm6QOVCIcC61r1tu+9FmeCVt -YYDREeSJmO1sthfeNJA+j6mp+SmkROmDGFSDsllGYsPdUaXnDV3nCsvHkKvKqVER -1Lz4F8zW6rVHRQIDAQABo4IB7DCCAegwHwYDVR0jBBgwFoAUP9W10NZEeVBKF6Ob -jErcuLAiZGswHQYDVR0OBBYEFHbY+v6k8C06XxyvhWq5zfkaDOZDMA4GA1UdDwEB -/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF -BQcDAjBQBgNVHSAESTBHMDsGDCsGAQQBsjEBAgEDBDArMCkGCCsGAQUFBwIBFh1o -dHRwczovL3NlY3VyZS5jb21vZG8uY29tL0NQUzAIBgZngQwBAgIwTwYDVR0fBEgw -RjBEoEKgQIY+aHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RPSGlnaC1Bc3N1 -cmFuY2VTZWN1cmVTZXJ2ZXJDQS5jcmwwgYAGCCsGAQUFBwEBBHQwcjBKBggrBgEF -BQcwAoY+aHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPSGlnaC1Bc3N1cmFu -Y2VTZWN1cmVTZXJ2ZXJDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNv -bW9kb2NhLmNvbTBDBgNVHREEPDA6ghlzZXJ2aWNpb3NqYXZhLmFmaXAuZ29iLmFy -gh13d3cuc2VydmljaW9zamF2YS5hZmlwLmdvYi5hcjANBgkqhkiG9w0BAQUFAAOC -AQEAq2nMhqVh7UQ/Z4TjZfl1gU3DabY25pbVcDWk94X/xoM/XxZqzgSgiNFhP/al -ztDgsM1Js0WlSj2xX1DwBlGbuer9Asy/JBC2WYfZ/4T5e2h4TUgHahxJJXClsJA8 -UbIWmP1nwVPyDMGQkWoqg54eHgl1QPml5tXtYKgB/Vp0RFxoxB6WzQ2knLebwvab -TU3Ll69Qv5rSUw5bevJ6o3tThOOu7awJCWgD/hayeWFRBR5Txq0wG6p9wcWol2DS -FpmhynLJ7NgcGoTULIo5i+0YdJXAjM5CSLR4V0y96x9NNFaZvXJguZhYiokDVIRh -bvtOXCMfBS/cH3z80XnHX/oDjg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk -ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF -eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow -gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO -BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD -VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw -AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6 -2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr -ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt -4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq -m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/ -vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT -8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE -IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO -KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO -GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/ -s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g -JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD -AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9 -MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy -bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6 -Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ -zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj -Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY -Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5 -B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx -PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR -pu/xO28QOG8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIGDjCCA/agAwIBAgIQNoJef7WkgZN+9tFza7k8pjANBgkqhkiG9w0BAQwFADCB -hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV -BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy -MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBljELMAkGA1UEBhMCR0IxGzAZBgNVBAgT -EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxPDA6BgNVBAMTM0NPTU9ETyBSU0EgT3JnYW5pemF0 -aW9uIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBALkU2YXyQURX/zBEHtw8RKMXuG4B+KNfwqkhHc5Z9Ozz -iKkJMjyxi2OkPic284/5OGYuB5dBj0um3cNfnnM858ogDU98MgXPwS5IZUqF0B9W -MW2O5cYy1Bu8n32W/JjXT/j0WFb440W+kRiC5Iq+r81SN1GHTx6Xweg6rvn/RuRl -Pz/DR4MvzLhCXi1+91porl1LwKY1IfWGo8hJi5hjYA3JIUjCkjBlRrKGNQRCJX6t -p05LEkAAeohoXG+fo6R4ESGuPQsOvkUUI8/rddf2oPG8RWxevKEy7PNYeEIoCzoB -dvDFoJ7BaXDej0umed/ydrbjDxN8GDuxUWxqIDnOnmkCAwEAAaOCAWUwggFhMB8G -A1UdIwQYMBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSa8yvaz61P -ti+7KkhIKhK3G0LBJDAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIB -ADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRV -HSAAMAgGBmeBDAECAjBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9k -b2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggr -BgEFBQcBAQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29t -L0NPTU9ET1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz -cC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAGmKNmiaHjtlC+B8z6ar -cTuvYaQ/5GQBSRDTHY/i1e1n055bl71CHgf50Ltt9zKVWiIpYvgMnFlWJzagIhIR -+kf0UclZeylKpUg1fMWXZuAnJTsVejJ1SpH7pmue4lP6DYwT+yO4CxIsru3bHUeQ -1dCTaXaROBU01xjqfrxrWN4qOZADRARKVtho5fV8aX6efVRL0NiGq2dmE1deiSoX -rS2uvUAOZu2K/1S0wQHLqeBHuhFhj62uI0gqxiV5iRxBBJXAEepXK9a0l/qx6RVi -7Epxd/3zoZza9msAKcUy5/pO6rMqpxiXHFinQjZf7BTP+HsO993MiBWamlzI8SDH -0YZyoRebrrr+bKgy0QB2SXP3PyeHPLbJLfqqkJDJCgmfyWkfBxmpv966+AuIgkQW -EH8HwIAiX3+8MN66zQd5ZFbY//NPnDC7bh5RS+bNvRfExb/IP46xH4pGtwZDb2It -z1GdRcqK6ROLwMeRvlu2+jdKif7wndoTJiIsBpA+ixOYoBnW3dpKSH89D4mdJHJL -DntE/9Q2toN2I1iLFGy4XfdhbTl27d0SPWuHiJeRvsBGAh52HN22r1xP9QDWnE2p -4J6ijvyxFnlcIdNFgZoMOWxtKNcl0rcRkND23m9e9Pqki2Z3ci+bkEAsUhJg+f+1 -cC6JmnkJiYEt7Fx4b4GH8fxV ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- + diff --git a/cot.py b/cot.py index 5fcba832d..01ea13e9c 100644 --- a/cot.py +++ b/cot.py @@ -45,7 +45,7 @@ class COT: 'Version', 'Excepcion', 'Traceback', 'InstallDir', 'CuitEmpresa', 'NumeroComprobante', 'CodigoIntegridad', 'NombreArchivo', 'TipoError', 'CodigoError', 'MensajeError', - 'NumeroUnico', 'Procesado', + 'NumeroUnico', 'Procesado', 'COT', ] _reg_progid_ = "COT" @@ -68,7 +68,7 @@ def limpiar(self): self.XmlResponse = "" self.Excepcion = self.Traceback = "" self.TipoError = self.CodigoError = self.MensajeError = "" - self.CuitEmpresa = self.NumeroComprobante = "" + self.CuitEmpresa = self.NumeroComprobante = self.COT = "" self.NombreArchivo = self.CodigoIntegridad = "" self.NumeroUnico = self.Procesado = "" @@ -84,10 +84,10 @@ def PresentarRemito(self, filename, testing=""): self.Excepcion = "Archivo no encontrado: %s" % filename return False - archivo = open(filename, "rb") + archivo = open(filename, "r") if not testing: - response = self.client(user=self.Usuario, password=self.Password, - file=archivo) + response = self.client( + user=self.Usuario, password=self.Password, file=archivo) else: response = open(testing).read() self.XmlResponse = response @@ -99,6 +99,8 @@ def PresentarRemito(self, filename, testing=""): if 'cuitEmpresa' in self.xml: self.CuitEmpresa = str(self.xml.cuitEmpresa) self.NumeroComprobante = str(self.xml.numeroComprobante) + if 'cot' in self.xml: + self.COT = str(self.xml.cot) self.NombreArchivo = str(self.xml.nombreArchivo) self.CodigoIntegridad = str(self.xml.codigoIntegridad) if 'validacionesRemitos' in self.xml: @@ -111,7 +113,7 @@ def PresentarRemito(self, filename, testing=""): if 'errores' in remito: for error in remito.errores.error: d['Errores'].append(( - str(error.codigo), + str(error.codigo), str(error.descripcion))) self.remitos.append(d) # establecer valores del primer remito (sin eliminarlo) @@ -238,6 +240,7 @@ def ObtenerTagXml(self, *tags): # datos generales: print("CUIT Empresa:", cot.CuitEmpresa) print("Numero Comprobante:", cot.NumeroComprobante) + print("COT:", cot.COT) print("Nombre Archivo:", cot.NombreArchivo) print("Codigo Integridad:", cot.CodigoIntegridad) diff --git a/iibb.py b/iibb.py index c4559359e..c3f511e4e 100644 --- a/iibb.py +++ b/iibb.py @@ -100,7 +100,7 @@ def ConsultarContribuyentes(self, fecha_desde, fecha_hasta, cuit_contribuyente): self.xml.fechaHasta = fecha_hasta self.xml.contribuyentes.contribuyente.cuitContribuyente = cuit_contribuyente - xml = self.xml.as_xml() + xml = self.xml.as_xml().encode('utf8') self.CodigoHash = md5(xml).hexdigest() nombre = "DFEServicioConsulta_%s.xml" % self.CodigoHash diff --git a/rece1.py b/rece1.py index 4d5342031..cdf4b198a 100644 --- a/rece1.py +++ b/rece1.py @@ -15,7 +15,7 @@ __author__ = "Mariano Reingart (reingart@gmail.com)" __copyright__ = "Copyright (C) 2010-2015 Mariano Reingart" __license__ = "GPL 3.0" -__version__ = "1.37b" +__version__ = "1.37d" import datetime import os @@ -111,6 +111,8 @@ ('tipo_reg', 1, N), # 3: comprobante asociado ('tipo', 3, N), ('pto_vta', 4, N), ('nro', 8, N), + ('fecha', 8, N), + ('cuit', 11, N), ] OPCIONAL = [ @@ -159,7 +161,7 @@ def autorizar(ws, entrada, salida, informar_caea=False): ] dic = leer_dbf(formatos, conf_dbf) - # rearmar estructura asociando id (comparando, si se útiliza) + # rearmar estructura asociando id (comparando, si se utiliza) for encabezado in encabezados: for tributo in tributos: if tributo.get("id") == encabezado.get("id"): @@ -271,6 +273,9 @@ def autorizar(ws, entrada, salida, informar_caea=False): 'motivos_obs': ws.Obs, 'err_code': str(ws.ErrCode), 'err_msg': ws.ErrMsg, + 'cbt_desde': ws.CbtDesde, + 'cbt_hasta': ws.CbtHasta, + 'fecha_cbte': ws.FechaCbte, 'reproceso': ws.Reproceso, 'emision_tipo': ws.EmisionTipo, }) @@ -479,7 +484,7 @@ def depurar_xml(client, ruta="."): if '/prueba' in sys.argv: # generar el archivo de prueba para la próxima factura - tipo_cbte = 1 + tipo_cbte = 3 punto_vta = 4002 cbte_nro = ws.CompUltimoAutorizado(tipo_cbte, punto_vta) if not cbte_nro: @@ -515,7 +520,9 @@ def depurar_xml(client, ruta="."): tipo = 1 pto_vta = 2 nro = 1234 - ws.AgregarCmpAsoc(tipo, pto_vta, nro) + fecha = "20190601" + cuit = "20267565393" + ws.AgregarCmpAsoc(tipo, pto_vta, nro, cuit, fecha) if '--proyectos' in sys.argv: ws.AgregarOpcional(2, "1234") # identificador del proyecto diff --git a/requirements.txt b/requirements.txt index df47d9581..07590abc9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,4 @@ fpdf>=1.7.2 dbf>=0.88.019 Pillow>=2.0.0 #pywin32==219 +certifi>=2020.4.5.1 diff --git a/utils.py b/utils.py index 719298543..4b819e763 100644 --- a/utils.py +++ b/utils.py @@ -222,9 +222,13 @@ def Conectar(self, cache=None, wsdl=None, proxy="", wrapper=None, cacert=None, t # deshabilitar verificación cert. servidor si es nulo falso vacio if not cacert: cacert = None - elif cacert is True: + elif cacert is True or cacert.lower() == 'default': # usar certificados predeterminados que vienen en la biblioteca - cacert = os.path.join(httplib2.__path__[0], 'cacerts.txt') + try: + import certifi + cacert = certifi.where() + except ImportError: + cacert = os.path.join(httplib2.__path__[0], 'cacerts.txt') elif cacert.startswith("-----BEGIN CERTIFICATE-----"): pass else: @@ -883,8 +887,11 @@ def get_install_dir(): if hasattr(sys, "frozen"): # we are running as py2exe-packed executable - import pythoncom - pythoncom.frozen = 1 + try: + import pythoncom + pythoncom.frozen = 1 + except ModuleNotFoundError: + pass sys.argv[0] = sys.executable return os.path.dirname(os.path.abspath(basepath)) diff --git a/wsaa.py b/wsaa.py index 4b33db295..5cefbcb94 100644 --- a/wsaa.py +++ b/wsaa.py @@ -83,7 +83,7 @@ def create_tra(service=SERVICE, ttl=2400): tra.header.add_child('generationTime', str(date('c', date('U') - ttl))) tra.header.add_child('expirationTime', str(date('c', date('U') + ttl))) tra.add_child('service', service) - return tra.as_xml() + return tra.as_xml().encode('utf-8') def sign_tra(tra, cert=CERT, privatekey=PRIVATEKEY, passphrase=""): diff --git a/wsbfev1.py b/wsbfev1.py index 34f6b90fc..6e94b280c 100644 --- a/wsbfev1.py +++ b/wsbfev1.py @@ -33,7 +33,7 @@ class WSBFEv1(BaseWS): "Interfaz para el WebService de Bono Fiscal Electrónico V1 (FE Bs. Capital)" - _public_methods_ = ['CrearFactura', 'AgregarItem', 'Authorize', 'GetCMP', + _public_methods_ = ['CrearFactura', 'AgregarItem', 'Authorize', 'GetCMP', 'AgregarOpcional', 'AgregarCmpAsoc', 'GetParamMon', 'GetParamTipoCbte', 'GetParamUMed', 'GetParamTipoIVA', 'GetParamNCM', 'GetParamZonas', 'GetParamTipoDoc', @@ -91,7 +91,7 @@ def CrearFactura(self, tipo_doc=80, nro_doc=23111111113, imp_total=0.0, imp_neto=0.0, impto_liq=0.0, imp_tot_conc=0.0, impto_liq_rni=0.00, imp_op_ex=0.00, imp_perc=0.00, imp_iibb=0.00, imp_perc_mun=0.00, imp_internos=0.00, - imp_moneda_id=0, imp_moneda_ctz=1.0, **kwargs): + imp_moneda_id=0, imp_moneda_ctz=1.0, fecha_venc_pago=None, **kwargs): "Creo un objeto factura (interna)" # Creo una factura para bonos fiscales electrónicos @@ -104,7 +104,9 @@ def CrearFactura(self, tipo_doc=80, nro_doc=23111111113, 'imp_perc': imp_perc, 'imp_perc_mun': imp_perc_mun, 'imp_iibb': imp_iibb, 'imp_internos': imp_internos, 'imp_moneda_id': imp_moneda_id, 'imp_moneda_ctz': imp_moneda_ctz, + 'fecha_venc_pago': fecha_venc_pago, 'cbtes_asoc': [], + 'opcionales': [], 'iva': [], 'detalles': [], } @@ -127,6 +129,22 @@ def AgregarItem(self, ncm, sec, ds, qty, umed, precio, bonif, iva_id, imp_total, }) return True + def AgregarCmpAsoc(self, tipo=1, pto_vta=0, nro=0, cuit=None, fecha=None, **kwarg): + "Agrego un comprobante asociado a una factura (interna)" + cmp_asoc = {'tipo': tipo, 'pto_vta': pto_vta, 'nro': nro} + if cuit is not None: + cmp_asoc['cuit'] = cuit + if fecha is not None: + cmp_asoc['fecha'] = fecha + self.factura['cbtes_asoc'].append(cmp_asoc) + return True + + def AgregarOpcional(self, opcional_id=0, valor="", **kwarg): + "Agrego un dato opcional a una factura (interna)" + op = { 'opcional_id': opcional_id, 'valor': valor } + self.factura['opcionales'].append(op) + return True + @inicializar_y_capturar_excepciones def Authorize(self, id): "Autoriza la factura cargada en memoria" @@ -150,6 +168,7 @@ def Authorize(self, id): 'Imp_perc': f['imp_perc'], 'Imp_perc_mun': f['imp_perc_mun'], 'Imp_iibb': f['imp_iibb'], 'Imp_internos': f['imp_internos'], + 'Fecha_vto_pago': f['fecha_venc_pago'], 'Items': [ {'Item': { 'Pro_codigo_ncm': d['ncm'], @@ -162,6 +181,20 @@ def Authorize(self, id): 'Imp_total': d['imp_total'], 'Iva_id': d['iva_id'], }} for d in f['detalles']], + 'CbtesAsoc': f['cbtes_asoc'] and [ + {'CbteAsoc': { + 'Tipo_cbte': cbte_asoc['tipo'], + 'Punto_vta': cbte_asoc['pto_vta'], + 'Cbte_nro': cbte_asoc['nro'], + 'Cuit': cbte_asoc.get('cuit'), + 'Fecha_cbte': cbte_asoc.get('fecha'), + }} + for cbte_asoc in f['cbtes_asoc']] or None, + 'Opcionales': [ + {'Opcional': { + 'Id': opcional['opcional_id'], + 'Valor': opcional['valor'], + }} for opcional in f['opcionales']] or None, }) result = ret['BFEAuthorizeResult'] @@ -480,7 +513,7 @@ def p_assert_eq(a, b): if "--prueba" in sys.argv: try: # Establezco los valores de la factura a autorizar: - tipo_cbte = '--nc' in sys.argv and 3 or 1 # FC/NC Expo (ver tabla de parámetros) + tipo_cbte = '--nc' in sys.argv and 3 or 201 # FC/NC Expo (ver tabla de parámetros) punto_vta = 5 tipo_doc = 80 nro_doc = 23111111113 @@ -495,6 +528,7 @@ def p_assert_eq(a, b): impto_liq_rni = imp_tot_conc = imp_op_ex = "0.00" imp_perc = imp_iibb = imp_perc_mun = imp_internos = "0.00" imp_total = "471.90" + fecha_venc_pago = fecha_cbte if "--fce" in sys.argv else None # Creo una factura (internamente, no se llama al WebService): ok = wsbfev1.CrearFactura(tipo_doc, nro_doc, @@ -502,7 +536,7 @@ def p_assert_eq(a, b): imp_total, imp_neto, impto_liq, imp_tot_conc, impto_liq_rni, imp_op_ex, imp_perc, imp_iibb, imp_perc_mun, imp_internos, - imp_moneda_id, imp_moneda_ctz) + imp_moneda_id, imp_moneda_ctz, fecha_venc_pago) # Agrego un item: ncm = '7308.10.00' @@ -528,6 +562,23 @@ def p_assert_eq(a, b): imp_total = "229.90" ok = wsbfev1.AgregarItem(ncm, sec, ds, qty, umed, precio, bonif, iva_id, imp_total) + # comprobantes asociados (notas de crédito / débito) + if True: + tipo = 91 + pto_vta = 4001 + nro = 1 + cuit = "20267565393" + # obligatorio en Factura de Crédito Electrónica MiPyMEs (FCE): + fecha_cbte = fecha_cbte if "--fce" in sys.argv else None + wsbfev1.AgregarCmpAsoc(tipo, pto_vta, nro, cuit, fecha_cbte) + + # datos de Factura de Crédito Electrónica MiPyMEs (FCE): + if '--fce' in sys.argv: + wsbfev1.AgregarOpcional(2101, "2850590940090418135201") # CBU + wsbfev1.AgregarOpcional(2102, "pyafipws") # alias + if tipo_cbte in (203, 208, 213): + wsbfev1.AgregarOpcional(22, "S") # Anulación + # id = "99000000000100" # número propio de transacción # obtengo el último ID y le adiciono 1 # (advertencia: evitar overflow y almacenar!) diff --git a/wsfev1.py b/wsfev1.py index f47653306..e5cfe951b 100644 --- a/wsfev1.py +++ b/wsfev1.py @@ -23,12 +23,11 @@ """ __author__ = "Mariano Reingart " -__copyright__ = "Copyright (C) 2010-2019 Mariano Reingart" +__copyright__ = "Copyright (C) 2010-2017 Mariano Reingart" __license__ = "GPL 3.0" -__version__ = "1.22a" +__version__ = "1.22b" import datetime -import decimal import os import sys from .utils import verifica, inicializar_y_capturar_excepciones, BaseWS, get_install_dir @@ -74,7 +73,7 @@ class WSFEv1(BaseWS): 'Reprocesar', 'Reproceso', 'EmisionTipo', 'CAEA', 'CbteNro', 'CbtDesde', 'CbtHasta', 'FechaCbte', 'ImpTotal', 'ImpNeto', 'ImptoLiq', - 'ImpIVA', 'ImpOpEx', 'ImpTrib', ] + 'ImpIVA', 'ImpOpEx', 'ImpTrib', 'FchCotiz',] _reg_progid_ = "WSFEv1" _reg_clsid_ = "{CA0E604D-E3D7-493A-8880-F6CDD604185E}" @@ -103,6 +102,7 @@ def inicializar(self): self.ImpTotal = self.ImpIVA = self.ImpOpEx = self.ImpNeto = self.ImptoLiq = self.ImpTrib = None self.EmisionTipo = self.Periodo = self.Orden = "" self.FechaCbte = self.FchVigDesde = self.FchVigHasta = self.FchTopeInf = self.FchProceso = "" + self.FchCotiz = None def __analizar_errores(self, ret): "Comprueba y extrae errores si existen en la respuesta XML" @@ -131,11 +131,12 @@ def Dummy(self): # los siguientes métodos no están decorados para no limpiar propiedades def CrearFactura(self, concepto=1, tipo_doc=80, nro_doc="", tipo_cbte=1, punto_vta=0, - cbt_desde=0, cbt_hasta=0, imp_total=0.00, imp_tot_conc=0.00, imp_neto=0.00, - imp_iva=0.00, imp_trib=0.00, imp_op_ex=0.00, fecha_cbte="", fecha_venc_pago=None, - fecha_serv_desde=None, fecha_serv_hasta=None, # -- - moneda_id="PES", moneda_ctz="1.0000", caea=None, **kwargs - ): + cbt_desde=0, cbt_hasta=0, imp_total=0.00, imp_tot_conc=0.00, imp_neto=0.00, + imp_iva=0.00, imp_trib=0.00, imp_op_ex=0.00, fecha_cbte="", fecha_venc_pago=None, + fecha_serv_desde=None, fecha_serv_hasta=None, #-- + moneda_id="PES", moneda_ctz="1.0000", caea=None, fecha_hs_gen=None, **kwargs + ): + "Creo un objeto factura (interna)" # Creo una factura electronica de exportación fact = {'tipo_doc': tipo_doc, 'nro_doc': nro_doc, @@ -147,7 +148,7 @@ def CrearFactura(self, concepto=1, tipo_doc=80, nro_doc="", tipo_cbte=1, punto_v 'fecha_cbte': fecha_cbte, 'fecha_venc_pago': fecha_venc_pago, 'moneda_id': moneda_id, 'moneda_ctz': moneda_ctz, - 'concepto': concepto, + 'concepto': concepto, 'fecha_hs_gen': fecha_hs_gen, 'cbtes_asoc': [], 'tributos': [], 'iva': [], @@ -165,7 +166,7 @@ def CrearFactura(self, concepto=1, tipo_doc=80, nro_doc="", tipo_cbte=1, punto_v return True def EstablecerCampoFactura(self, campo, valor): - if campo in self.factura or campo in ('fecha_serv_desde', 'fecha_serv_hasta', 'caea', 'fch_venc_cae'): + if campo in self.factura or campo in ('fecha_serv_desde', 'fecha_serv_hasta', 'caea', 'fch_venc_cae', 'fecha_hs_gen'): self.factura[campo] = valor return True else: @@ -251,9 +252,6 @@ def CAESolicitar(self): 'FchServDesde': f.get('fecha_serv_desde'), 'FchServHasta': f.get('fecha_serv_hasta'), 'FchVtoPago': f.get('fecha_venc_pago'), - 'FchServDesde': f.get('fecha_serv_desde'), - 'FchServHasta': f.get('fecha_serv_hasta'), - 'FchVtoPago': f['fecha_venc_pago'], 'MonId': f['moneda_id'], 'MonCotiz': f['moneda_ctz'], 'CbtesAsoc': f['cbtes_asoc'] and [ @@ -400,6 +398,7 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False): 'PtoVta': cbte_asoc['pto_vta'], 'Nro': cbte_asoc['nro'], 'Cuit': cbte_asoc.get('cuit'), + 'CbteFch': cbte_asoc.get('fecha') or None, }} for cbte_asoc in f['cbtes_asoc']], 'Tributos': [ @@ -461,7 +460,9 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False): 'tipo': cbte_asoc['CbteAsoc']['Tipo'], 'pto_vta': cbte_asoc['CbteAsoc']['PtoVta'], 'nro': cbte_asoc['CbteAsoc']['Nro'], - 'cuit': cbte_asoc['CbteAsoc'].get('Cuit')} + 'cuit': cbte_asoc['CbteAsoc'].get('Cuit'), + 'fecha': cbte_asoc['CbteAsoc'].get('CbteFch'), + } for cbte_asoc in resultget.get('CbtesAsoc', [])], 'tributos': [ { @@ -571,9 +572,6 @@ def CAESolicitarX(self): 'FchServDesde': f.get('fecha_serv_desde'), 'FchServHasta': f.get('fecha_serv_hasta'), 'FchVtoPago': f.get('fecha_venc_pago'), - 'FchServDesde': f.get('fecha_serv_desde'), - 'FchServHasta': f.get('fecha_serv_hasta'), - 'FchVtoPago': f['fecha_venc_pago'], 'MonId': f['moneda_id'], 'MonCotiz': f['moneda_ctz'], 'CbtesAsoc': [ @@ -582,6 +580,7 @@ def CAESolicitarX(self): 'PtoVta': cbte_asoc['pto_vta'], 'Nro': cbte_asoc['nro'], 'Cuit': cbte_asoc.get('cuit'), + 'CbteFch': cbte_asoc.get('fecha'), }} for cbte_asoc in f['cbtes_asoc']] or None, 'Tributos': [ @@ -762,9 +761,6 @@ def CAEARegInformativo(self): 'FchServDesde': f.get('fecha_serv_desde'), 'FchServHasta': f.get('fecha_serv_hasta'), 'FchVtoPago': f.get('fecha_venc_pago'), - 'FchServDesde': f.get('fecha_serv_desde'), - 'FchServHasta': f.get('fecha_serv_hasta'), - 'FchVtoPago': f['fecha_venc_pago'], 'MonId': f['moneda_id'], 'MonCotiz': f['moneda_ctz'], 'CbtesAsoc': [ @@ -773,6 +769,7 @@ def CAEARegInformativo(self): 'PtoVta': cbte_asoc['pto_vta'], 'Nro': cbte_asoc['nro'], 'Cuit': cbte_asoc.get('cuit'), + 'CbteFch': cbte_asoc.get('fecha'), }} for cbte_asoc in f['cbtes_asoc']] if f['cbtes_asoc'] else None, @@ -794,8 +791,14 @@ def CAEARegInformativo(self): }} for iva in f['iva']] if f['iva'] else None, + 'Opcionales': [ + {'Opcional': { + 'Id': opcional['opcional_id'], + 'Valor': opcional['valor'], + }} for opcional in f['opcionales']] or None, 'CAEA': f['caea'], - } + 'CbteFchHsGen': f.get('fecha_hs_gen'), + } }] }) @@ -943,6 +946,7 @@ def ParamGetCotizacion(self, moneda_id): ) self.__analizar_errores(ret) res = ret['FEParamGetCotizacionResult']['ResultGet'] + self.FchCotiz = res.get("FchCotiz") return str(res.get('MonCotiz', "")) @inicializar_y_capturar_excepciones @@ -1012,10 +1016,10 @@ def main(): tipo_cbte = 49 concepto = 1 elif '--fce' in sys.argv: - tipo_cbte = 201 + tipo_cbte = 203 concepto = 1 else: - tipo_cbte = 6 + tipo_cbte = 3 concepto = 3 if ('--rg4109' not in sys.argv) else 1 punto_vta = 4001 cbte_nro = int(wsfev1.CompUltimoAutorizado(tipo_cbte, punto_vta) or 0) @@ -1035,13 +1039,11 @@ def main(): # Fechas del período del servicio facturado y vencimiento de pago: if concepto > 1: fecha_venc_pago = fecha - fecha_serv_desde = fecha - fecha_serv_hasta = fecha + fecha_serv_desde = fecha; fecha_serv_hasta = fecha elif '--fce' in sys.argv: # obligatorio en Factura de Crédito Electrónica MiPyMEs (FCE): fecha_venc_pago = fecha - moneda_id = 'PES' - moneda_ctz = '1.000' + moneda_id = 'PES'; moneda_ctz = '1.000' # inicializar prueba de multiples comprobantes por solicitud if "--multiple" in sys.argv: @@ -1064,6 +1066,7 @@ def main(): orden = 1 if datetime.datetime.today().day < 15 else 2 caea = wsfev1.CAEAConsultar(periodo, orden) wsfev1.EstablecerCampoFactura("caea", caea) + wsfev1.EstablecerCampoFactura("fecha_hs_gen", "yyyymmddhhmiss") # comprobantes asociados (notas de crédito / débito) if tipo_cbte in (2, 3, 7, 8, 12, 13, 203, 208, 213): @@ -1120,7 +1123,7 @@ def main(): wsfev1.AgregarComprador(80, "30999032083", 0.01) # datos de Factura de Crédito Electrónica MiPyMEs (FCE): - if '--fce' in sys.argv: # 0110001900000000000000 + if '--fce' in sys.argv: wsfev1.AgregarOpcional(2101, "2850590940090418135201") # CBU wsfev1.AgregarOpcional(2102, "pyafipws") # alias if tipo_cbte in (203, 208, 213): @@ -1130,10 +1133,9 @@ def main(): if "--multiple" in sys.argv: wsfev1.AgregarFacturaX() - # import time t0 = time.time() - if '--caea' not in sys.argv: - if "--multiple" not in sys.argv: + if not '--caea' in sys.argv: + if not "--multiple" in sys.argv: wsfev1.CAESolicitar() else: cant = wsfev1.CAESolicitarX() diff --git a/wsfexv1.py b/wsfexv1.py index 26677d10c..11f5d6ebd 100644 --- a/wsfexv1.py +++ b/wsfexv1.py @@ -39,6 +39,7 @@ class WSFEXv1(BaseWS): 'GetParamIdiomas', 'GetParamUMed', 'GetParamIncoterms', 'GetParamDstPais', 'GetParamDstCUIT', 'GetParamIdiomas', 'GetParamIncoterms', 'GetParamDstCUIT', + 'GetParamMonConCotizacion', 'GetParamPtosVenta', 'GetParamCtz', 'LoadTestXML', 'AnalizarXml', 'ObtenerTagXml', 'DebugLog', 'SetParametros', 'SetTicketAcceso', 'GetParametro', @@ -50,7 +51,7 @@ class WSFEXv1(BaseWS): 'Resultado', 'Obs', 'Reproceso', 'CAE', 'Vencimiento', 'Eventos', 'ErrCode', 'ErrMsg', 'FchVencCAE', 'Excepcion', 'LanzarExcepciones', 'Traceback', "InstallDir", - 'PuntoVenta', 'CbteNro', 'FechaCbte', 'ImpTotal'] + 'PuntoVenta', 'CbteNro', 'FechaCbte', 'ImpTotal', 'FchCotiz'] _reg_progid_ = "WSFEXv1" _reg_clsid_ = "{8106F039-D132-4F87-8AFE-ADE47B5503D4}" @@ -69,6 +70,7 @@ def inicializar(self): self.CbteNro = self.FechaCbte = self.PuntoVenta = self.ImpTotal = None self.InstallDir = INSTALL_DIR self.FchVencCAE = "" # retrocompatibilidad + self.FchCotiz = None def __analizar_errores(self, ret): "Comprueba y extrae errores si existen en la respuesta XML" @@ -90,7 +92,7 @@ def CrearFactura(self, tipo_cbte=19, punto_vta=1, cbte_nro=0, fecha_cbte=None, nombre_cliente="", cuit_pais_cliente="", domicilio_cliente="", id_impositivo="", moneda_id="PES", moneda_ctz=1.0, obs_comerciales="", obs_generales="", forma_pago="", incoterms="", - idioma_cbte=7, incoterms_ds=None, **kwargs): + idioma_cbte=7, incoterms_ds=None, fecha_pago=None, **kwargs): "Creo un objeto factura (interna)" # Creo una factura electronica de exportación @@ -114,6 +116,7 @@ def CrearFactura(self, tipo_cbte=19, punto_vta=1, cbte_nro=0, fecha_cbte=None, 'cbtes_asoc': [], 'permisos': [], 'detalles': [], + 'fecha_pago': fecha_pago, } self.factura = fact @@ -198,6 +201,7 @@ def Authorize(self, id): 'Pro_bonificacion': d['bonif'], 'Pro_total_item': d['importe'], }} for d in f['detalles']], + 'Fecha_pago': f['fecha_pago'], }) result = ret['FEXAuthorizeResult'] @@ -496,10 +500,41 @@ def GetParamCtz(self, moneda_id): res = ret['FEXGetPARAM_CtzResult'].get('FEXResultGet') if res: ctz = str(res.get('Mon_ctz', "")) + self.FchCotiz = res.get("Mon_fecha") else: ctz = '' return ctz + @inicializar_y_capturar_excepciones + def GetParamMonConCotizacion(self, fecha=None, sep="|"): + "Recupera el listado de monedas que tengan cotizacion de ADUANA" + if not fecha: + fecha = datetime.date.today().strftime("%Y%m%d") + + ret = self.client.FEXGetPARAM_MON_CON_COTIZACION( + Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, + Fecha_CTZ=fecha) + result = ret['FEXGetPARAM_MON_CON_COTIZACIONResult'] + self.__analizar_errores(result) + + mons = [] # monedas + for u in result['FEXResultGet']: + u = u['ClsFEXResponse_Mon_CON_Cotizacion'] + try: + mon = {'id': u.get('Mon_Id'), 'ctz': u.get('Mon_ctz'), + 'fecha': u.get('Fecha_ctz')} + except Exception as e: + print(e) + if u is None: + # WTF! + mon = {'id':'', 'ctz':'','fecha':''} + mons.append(mon) + if sep: + return [("\t%(id)s\t%(ctz)s\t%(fecha)s\t" + % it).replace("\t", sep) for it in mons] + else: + return mons + @inicializar_y_capturar_excepciones def GetParamPtosVenta(self, sep="|"): "Recupera el listado de los puntos de venta para exportacion y estado" @@ -757,5 +792,8 @@ def p_assert_eq(a, b): if "--ctz" in sys.argv: print(wsfexv1.GetParamCtz('DOL')) + if "--monctz" in sys.argv: + print(wsfexv1.GetParamMonConCotizacion()) + if "--ptosventa" in sys.argv: print(wsfexv1.GetParamPtosVenta()) diff --git a/wsmtx.py b/wsmtx.py index d0b457f7b..c36e607d4 100644 --- a/wsmtx.py +++ b/wsmtx.py @@ -18,7 +18,7 @@ __author__ = "Mariano Reingart " __copyright__ = "Copyright (C) 2010-2015 Mariano Reingart" __license__ = "GPL 3.0" -__version__ = "1.13a" +__version__ = "1.14a" import datetime import decimal @@ -34,7 +34,7 @@ class WSMTXCA(BaseWS): "Interfaz para el WebService de Factura Electrónica Mercado Interno WSMTXCA" _public_methods_ = ['CrearFactura', 'EstablecerCampoFactura', 'AgregarIva', 'AgregarItem', - 'AgregarTributo', 'AgregarCmpAsoc', 'EstablecerCampoItem', + 'AgregarTributo', 'AgregarCmpAsoc', 'EstablecerCampoItem', 'AgregarOpcional', 'AutorizarComprobante', 'CAESolicitar', 'AutorizarAjusteIVA', 'SolicitarCAEA', 'ConsultarCAEA', 'ConsultarCAEAEntreFechas', 'InformarComprobanteCAEA', 'InformarAjusteIVACAEA', @@ -48,7 +48,7 @@ class WSMTXCA(BaseWS): 'ConsultarCondicionesIVA', 'ConsultarMonedas', 'ConsultarUnidadesMedida', - 'ConsultarTiposTributo', + 'ConsultarTiposTributo', 'ConsultarTiposDatosAdicionales', 'ConsultarCotizacionMoneda', 'ConsultarPuntosVentaCAE', 'ConsultarPuntosVentaCAEA', @@ -152,7 +152,7 @@ def EstablecerCampoFactura(self, campo, valor): else: return False - def AgregarCmpAsoc(self, tipo=1, pto_vta=0, nro=0, cuit=None, **kwargs): + def AgregarCmpAsoc(self, tipo=1, pto_vta=0, nro=0, cuit=None, fecha=None, **kwargs): "Agrego un comprobante asociado a una factura (interna)" cmp_asoc = { 'tipo': tipo, @@ -160,6 +160,8 @@ def AgregarCmpAsoc(self, tipo=1, pto_vta=0, nro=0, cuit=None, **kwargs): 'nro': nro} if cuit is not None: cmp_asoc['cuit'] = cuit + if fecha is not None: + cmp_asoc['fecha'] = fecha self.factura['cbtes_asoc'].append(cmp_asoc) return True @@ -215,6 +217,16 @@ def EstablecerCampoItem(self, campo, valor): else: return False + def AgregarOpcional(self, opcional_id=0, valor=None, valor2=None, + valor3=None, valor4=None, valor5=None, + valor6=None, **kwarg): + "Agrego un dato adicional a una factura (interna)" + op = { 'opcional_id': opcional_id, 'valor': valor, 'valor2': valor2, + 'valor3': valor3, 'valor4': valor4, 'valor5': valor5, + 'valor6': valor6 } + self.factura['opcionales'].append(op) + return True + @inicializar_y_capturar_excepciones def AutorizarComprobante(self): f = self.factura @@ -240,8 +252,9 @@ def AutorizarComprobante(self): 'numeroPuntoVenta': cbte_asoc['pto_vta'], 'numeroComprobante': cbte_asoc['nro'], 'cuit': cbte_asoc.get('cuit'), - }} for cbte_asoc in f['cbtes_asoc']] or None, - 'arrayOtrosTributos': f['tributos'] and [{'otroTributo': { + 'fechaEmision': cbte_asoc.get('fecha'), + }} for cbte_asoc in f['cbtes_asoc']] or None, + 'arrayOtrosTributos': f['tributos'] and [ {'otroTributo': { 'codigo': tributo['tributo_id'], 'descripcion': tributo['desc'], 'baseImponible': tributo['base_imp'], @@ -264,7 +277,16 @@ def AutorizarComprobante(self): 'importeIVA': it['imp_iva'] if int(f['tipo_cbte']) not in (6, 7, 8) and it['imp_iva'] is not None else None, 'importeItem': it['imp_subtotal'], }} for it in f['detalles']] or None, - } + 'arrayDatosAdicionales': f['opcionales'] and [{'datoAdicional': { + 't': dato['opcional_id'], + 'c1': dato.get('valor'), + 'c2': dato.get('valor2'), + 'c3': dato.get('valor3'), + 'c4': dato.get('valor4'), + 'c5': dato.get('valor5'), + 'c6': dato.get('valor6'), + }} for dato in f['opcionales']] or None, + } ret = self.client.autorizarComprobante( authRequest={'token': self.Token, 'sign': self.Sign, 'cuitRepresentada': self.Cuit}, @@ -370,7 +392,16 @@ def AutorizarAjusteIVA(self): 'importeIVA': it['imp_iva'] if int(f['tipo_cbte']) not in (6, 7, 8) and it['imp_iva'] is not None else None, 'importeItem': it['imp_subtotal'], }} for it in f['detalles']] or None, - } + 'arrayDatosAdicionales': f['opcionales'] and [{'datoAdicional': { + 't': dato['opcional_id'], + 'c1': dato.get('valor'), + 'c2': dato.get('valor2'), + 'c3': dato.get('valor3'), + 'c4': dato.get('valor4'), + 'c5': dato.get('valor5'), + 'c6': dato.get('valor6'), + }} for dato in f['opcionales']] or None, + } ret = self.client.autorizarAjusteIVA( authRequest={'token': self.Token, 'sign': self.Sign, 'cuitRepresentada': self.Cuit}, @@ -876,6 +907,15 @@ def ConsultarTiposTributo(self): return ["%(codigo)s: %(descripcion)s" % p['codigoDescripcion'] for p in ret['arrayTiposTributo']] + @inicializar_y_capturar_excepciones + def ConsultarTiposDatosAdicionales(self): + "Este método permite consultar los tipos de datos adicionales." + ret = self.client.consultarTiposDatosAdicionales( + authRequest={'token': self.Token, 'sign': self.Sign, 'cuitRepresentada': self.Cuit}, + ) + return ["%(codigo)s: %(descripcion)s" % p['codigoDescripcion'] + for p in ret['arrayTiposDatosAdicionales']] + @inicializar_y_capturar_excepciones def ConsultarCotizacionMoneda(self, moneda_id): "Este método permite consultar los tipos de comprobantes habilitados en este WS" @@ -1034,6 +1074,10 @@ def main(): # wsmtxca.AgregarItem(u_mtx, cod_mtx, codigo, ds, 1, umed, # 0, 0, iva_id, 0, 0) + # datos de Factura de Credito Electrónica MiPyMEs (FCE): + if '--fce' in sys.argv: + wsmtxca.AgregarOpcional(21, "2850590940090418135201") # CBU + print(wsmtxca.factura) if '--caea' in sys.argv: @@ -1153,6 +1197,7 @@ def main(): print(wsmtxca.ConsultarMonedas()) print(wsmtxca.ConsultarUnidadesMedida()) print(wsmtxca.ConsultarTiposTributo()) + print(wsmtxca.ConsultarTiposDatosAdicionales()) if "--cotizacion" in sys.argv: print(wsmtxca.ConsultarCotizacionMoneda('DOL')) From b7582f3591f6f19ddea7990cea910ce7330771ff Mon Sep 17 00:00:00 2001 From: utkarsh Date: Thu, 25 Mar 2021 10:53:37 +0530 Subject: [PATCH 03/11] Tests deleted --- tests/trazamed.py | 221 ----------- tests/wscdc.py | 88 ----- tests/wsfev1.py | 212 ----------- tests/wslpg.py | 544 ---------------------------- tests/wslpg_cert_autorizar_resp.xml | 31 -- tests/wsmtx.py | 246 ------------- tests/xml/wsltv_aut_test.xml | 90 ----- 7 files changed, 1432 deletions(-) delete mode 100644 tests/trazamed.py delete mode 100644 tests/wscdc.py delete mode 100644 tests/wsfev1.py delete mode 100644 tests/wslpg.py delete mode 100644 tests/wslpg_cert_autorizar_resp.xml delete mode 100644 tests/wsmtx.py delete mode 100644 tests/xml/wsltv_aut_test.xml diff --git a/tests/trazamed.py b/tests/trazamed.py deleted file mode 100644 index cd79d7da3..000000000 --- a/tests/trazamed.py +++ /dev/null @@ -1,221 +0,0 @@ -#!/usr/bin/python -# -*- coding: latin-1 -*- -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. - -from pyafipws.trazamed import TrazaMed -"Pruebas para Trazabilidad de Medicamentos ANMAT - PAMI - INSSJP Disp. 3683/11" - -__author__ = "Mariano Reingart " -__copyright__ = "Copyright (C) 2013 Mariano Reingart" -__license__ = "GPL 3.0" - -import unittest -import os -import time -import sys -from decimal import Decimal -import datetime - -sys.path.append("/home/reingart") # TODO: proper packaging - - -WSDL = "https://servicios.pami.org.ar/trazamed.WebService?wsdl" -CACHE = "/home/reingart/pyafipws/cache" - - -class TestTZM(unittest.TestCase): - - def setUp(self): - sys.argv.append("--trace") # TODO: use logging - self.ws = ws = TrazaMed() - - ws.Username = 'testwservice' - ws.Password = 'testwservicepsw' - - ws.Conectar(CACHE, WSDL) - - def test_basico(self): - "Prueba básica para informar un medicamento" - ws = self.ws - ws.SetParametro('nro_asociado', "9999999999999") - ws.SendMedicamentos( - usuario='pruebasws', password='pruebasws', - f_evento=datetime.datetime.now().strftime("%d/%m/%Y"), - h_evento=datetime.datetime.now().strftime("%H:%M"), - gln_origen="9999999999918", gln_destino="glnws", - n_remito="1234", n_factura="1234", - vencimiento=(datetime.datetime.now() + datetime.timedelta(30)).strftime("%d/%m/%Y"), - gtin="GTIN1", lote=datetime.datetime.now().strftime("%Y"), - numero_serial=int(time.time() * 10), - id_obra_social=None, id_evento=134, - cuit_origen="20267565393", cuit_destino="20267565393", - apellido="Reingart", nombres="Mariano", - tipo_documento="96", n_documento="26756539", sexo="M", - direccion="Saraza", numero="1234", piso="", depto="", - localidad="Hurlingham", provincia="Buenos Aires", - n_postal="1688", fecha_nacimiento="01/01/2000", - telefono="5555-5555", - ) - self.assertFalse(ws.Excepcion) - self.assertTrue(ws.Resultado) - self.assertIsInstance(ws.CodigoTransaccion, str) - self.assertEqual(len(ws.CodigoTransaccion), len("23312897")) - - def test_fraccion(self): - "Prueba básica para informar un medicamento fraccionado" - ws = self.ws - ws.SetParametro('nro_asociado', "9999999999999") - ws.SetParametro('cantidad', 5) - ws.SendMedicamentosFraccion( - usuario='pruebasws', password='pruebasws', - f_evento=datetime.datetime.now().strftime("%d/%m/%Y"), - h_evento=datetime.datetime.now().strftime("%H:%M"), - gln_origen="9999999999918", gln_destino="glnws", - n_remito="1234", n_factura="1234", - vencimiento=(datetime.datetime.now() + datetime.timedelta(30)).strftime("%d/%m/%Y"), - gtin="GTIN1", lote=datetime.datetime.now().strftime("%Y"), - numero_serial=int(time.time() * 10), - id_obra_social=None, id_evento=134, - cuit_origen="20267565393", cuit_destino="20267565393", - apellido="Reingart", nombres="Mariano", - tipo_documento="96", n_documento="26756539", sexo="M", - direccion="Saraza", numero="1234", piso="", depto="", - localidad="Hurlingham", provincia="Buenos Aires", - n_postal="1688", fecha_nacimiento="01/01/2000", - telefono="5555-5555",) - self.assertFalse(ws.Resultado) - # verificar error "Su tipo de agente no esta habilitado para fraccionar" - self.assertEqual(ws.Errores[0][:4], "3105") - - def test_dh(self): - "Prueba básica para informar un medicamento desde - hasta" - ws = self.ws - ws.SetParametro('nro_asociado', "1234") - ws.SendMedicamentosDHSerie( - usuario='pruebasws', password='pruebasws', - f_evento=datetime.datetime.now().strftime("%d/%m/%Y"), - h_evento=datetime.datetime.now().strftime("%H:%M"), - gln_origen="9999999999918", gln_destino="glnws", - n_remito="1234", n_factura="1234", - vencimiento=(datetime.datetime.now() + datetime.timedelta(30)).strftime("%d/%m/%Y"), - gtin="GTIN1", lote=datetime.datetime.now().strftime("%Y"), - desde_numero_serial=int(time.time() * 10) - 1, hasta_numero_serial=int(time.time() * 10) + 1, - id_obra_social=None, id_evento=134, - ) - self.assertTrue(ws.Resultado) - self.assertIsInstance(ws.CodigoTransaccion, str) - self.assertEqual(len(ws.CodigoTransaccion), len("23312897")) - - def test_cancela_parcial(self): - "Prueba de cancelación parcial" - ws = self.ws - ws.SendCancelacTransaccParcial( - usuario='pruebasws', password='pruebasws', - codigo_transaccion="23312897", - gtin_medicamento="GTIN1", - numero_serial="13788431940") - # por el momento ANMAT devuelve error en pruebas: - self.assertFalse(ws.Resultado) - # verificar error "3: Transaccion NO encontrada, NO se puede anular." - self.assertEqual(ws.Errores[0][:2], "3:") - - def test_consultar(self): - "Prueba para obtener las transacciones no confirmadas" - ws = self.ws - ws.GetTransaccionesNoConfirmadas( - usuario='pruebasws', password='pruebasws', - id_medicamento="GTIN1", - ) - - self.assertFalse(ws.HayError) - q = 0 - while ws.LeerTransaccion(): - q += 1 - for clave in '_id_transaccion', '_gtin', '_lote', '_numero_serial': - valor = ws.GetParametro(clave) - self.assertIsNot(valor, None) - self.assertTrue(q) - - def test_consultar_alertadas(self): - "Prueba para obtener las transacciones propias alertadas" - ws = self.ws - ws.GetEnviosPropiosAlertados( - usuario='pruebasws', password='pruebasws', - id_medicamento="GTIN1", - ) - - self.assertFalse(ws.HayError) - q = 0 - while ws.LeerTransaccion(): - q += 1 - for clave in '_id_transaccion', '_gtin', '_lote', '_numero_serial': - valor = ws.GetParametro(clave) - self.assertIsNot(valor, None) - self.assertTrue(q) - - def test_confirmar(self): - "Prueba para confirmar las transacciones no confirmadas" - ws = self.ws - # obtengo las transacciones pendientes para confirmar: - ws.GetTransaccionesNoConfirmadas( - usuario='pruebasws', password='pruebasws', - id_medicamento="GTIN1", - ) - # no debería haber error: - self.assertFalse(ws.HayError) - # - while ws.LeerTransaccion(): - _id_transaccion = ws.GetParametro('_id_transaccion') - _f_operacion = datetime.datetime.now().strftime("%d/%m/%Y") - # confirmo la transacción: - ws.SendConfirmaTransacc( - usuario='pruebasws', password='pruebasws', - p_ids_transac=_id_transaccion, - f_operacion=_f_operacion, - ) - # verifico que se haya confirmado correctamente: - self.assertTrue(ws.Resultado) - # verifico que haya devuelto id_transac_asociada: - self.assertIsInstance(ws.CodigoTransaccion, str) - self.assertEqual(len(ws.CodigoTransaccion), len("23312897")) - # salgo del ciclo (solo confirmo una transacción) - break - else: - self.fail("no se devolvieron transacciones para confirmar!") - - def test_alertar(self): - "Prueba para alertar (rechazar) una transaccion no confirmada" - ws = self.ws - # obtengo las transacciones pendientes para confirmar: - ws.GetTransaccionesNoConfirmadas( - usuario='pruebasws', password='pruebasws', - id_medicamento="GTIN1", - ) - # no debería haber error: - self.assertFalse(ws.HayError) - # - while ws.LeerTransaccion(): - _id_transaccion = ws.GetParametro('_id_transaccion') - # alerto la transacción: - ws.SendAlertaTransacc( - usuario='pruebasws', password='pruebasws', - p_ids_transac_ws=_id_transaccion, - ) - # verifico que se haya confirmado correctamente: - self.assertTrue(ws.Resultado) - # salgo del ciclo (solo alerto una transacción) - break - else: - self.fail("no se devolvieron transacciones para alertar!") - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/wscdc.py b/tests/wscdc.py deleted file mode 100644 index 4c4e66ded..000000000 --- a/tests/wscdc.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf8 -*- -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. - -import pysimplesoap.client -from pyafipws.wscdc import WSCDC -from pyafipws.wsaa import WSAA -from pyafipws import utils -"Pruebas para el servicio web Constatación de Comprobantes de AFIP" - -__author__ = "Mariano Reingart " -__copyright__ = "Copyright (C) 2013 Mariano Reingart" -__license__ = "GPL 3.0" - - -import unittest -import sys -from decimal import Decimal - -sys.path.append("/home/reingart") # TODO: proper packaging - - -print(pysimplesoap.client.__version__) -#assert pysimplesoap.client.__version__ >= "1.08c" - - -WSDL = "https://wswhomo.afip.gov.ar/WSCDC/service.asmx?WSDL" -CUIT = 20267565393 -CERT = "/home/reingart/pyafipws/reingart.crt" -PRIVATEKEY = "/home/reingart/pyafipws/reingart.key" -CACERT = "/home/reingart/pyafipws/afip_root_desa_ca.crt" -CACHE = "/home/reingart/pyafipws/cache" - -# Autenticación: -wsaa = WSAA() -tra = wsaa.CreateTRA(service="wscdc") -cms = wsaa.SignTRA(tra, CERT, PRIVATEKEY) -wsaa.Conectar() -wsaa.LoginCMS(cms) - - -class TestWSCDC(unittest.TestCase): - - def setUp(self): - sys.argv.append("--trace") # TODO: use logging - self.wscdc = wslpg = WSCDC() - wslpg.LanzarExcepciones = True - wslpg.Conectar(wsdl=WSDL, cacert=None, cache=CACHE) - wslpg.Cuit = CUIT - wslpg.Token = wsaa.Token - wslpg.Sign = wsaa.Sign - - def test_constatacion_no(self): - "Prueba de Constatación de Comprobantes (facturas electrónicas)" - wscdc = self.wscdc - cbte_modo = "CAE" - cuit_emisor = "20267565393" - pto_vta = 4002 - cbte_tipo = 1 - cbte_nro = 109 - cbte_fch = "20131227" - imp_total = "121.0" - cod_autorizacion = "63523178385550" - doc_tipo_receptor = 80 - doc_nro_receptor = "30628789661" - ok = wscdc.ConstatarComprobante(cbte_modo, cuit_emisor, pto_vta, cbte_tipo, - cbte_nro, cbte_fch, imp_total, cod_autorizacion, - doc_tipo_receptor, doc_nro_receptor) - self.assertTrue(ok) - self.assertEqual(wscdc.Resultado, "R") # Rechazado - self.assertEqual(wscdc.Obs, "100: El N° de CAI/CAE/CAEA consultado no existe en las bases del organismo.") - self.assertEqual(wscdc.PuntoVenta, pto_vta) - self.assertEqual(wscdc.CbteNro, cbte_nro) - self.assertEqual(wscdc.ImpTotal, imp_total) - self.assertEqual(wscdc.CAE, cod_autorizacion) - self.assertEqual(wscdc.EmisionTipo, "CAE") - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/wsfev1.py b/tests/wsfev1.py deleted file mode 100644 index ead3251b3..000000000 --- a/tests/wsfev1.py +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/python -# -*- coding: latin-1 -*- -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. - -from pyafipws.wsaa import WSAA -from pyafipws.wsfev1 import WSFEv1 -"Pruebas para WSFEv1 de AFIP (Factura Electrónica Mercado Interno sin detalle)" - -__author__ = "Mariano Reingart " -__copyright__ = "Copyright (C) 2010 Mariano Reingart" -__license__ = "GPL 3.0" - -import unittest -import os -import time -import sys -from decimal import Decimal -import datetime - -sys.path.append("/home/reingart") # TODO: proper packaging - - -WSDL = "https://wswhomo.afip.gov.ar/wsfev1/service.asmx?WSDL" -CUIT = 20267565393 -CERT = "/home/reingart/pyafipws/reingart.crt" -PRIVATEKEY = "/home/reingart/pyafipws/reingart.key" -CACERT = "/home/reingart/pyafipws/afip_root_desa_ca.crt" -CACHE = "/home/reingart/pyafipws/cache" - -# Autenticación: -wsaa = WSAA() -tra = wsaa.CreateTRA(service="wsfe") -cms = wsaa.SignTRA(tra, CERT, PRIVATEKEY) -wsaa.Conectar() -wsaa.LoginCMS(cms) - - -class TestFE(unittest.TestCase): - - def setUp(self): - sys.argv.append("--trace") # TODO: use logging - self.wsfev1 = wsfev1 = WSFEv1() - wsfev1.Cuit = CUIT - wsfev1.Token = wsaa.Token - wsfev1.Sign = wsaa.Sign - wsfev1.Conectar(CACHE, WSDL) - - def atest_dummy(self): - print(wsfev1.client.help("dummy")) - wsfev1.Dummy() - print("AppServerStatus", wsfev1.AppServerStatus) - print("DbServerStatus", wsfev1.DbServerStatus) - print("AuthServerStatus", wsfev1.AuthServerStatus) - - def test_autorizar_comprobante(self, tipo_cbte=1, cbte_nro=None, servicios=True): - "Prueba de autorización de un comprobante (obtención de CAE)" - wsfev1 = self.wsfev1 - - # datos generales del comprobante: - punto_vta = 4000 - if not cbte_nro: - # si no me especifícan nro de comprobante, busco el próximo - cbte_nro = wsfev1.CompUltimoAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(cbte_nro) + 1 - fecha = datetime.datetime.now().strftime("%Y%m%d") - tipo_doc = 80 - nro_doc = "30000000007" # "30500010912" # CUIT BNA - cbt_desde = cbte_nro - cbt_hasta = cbt_desde - imp_total = "122.00" - imp_tot_conc = "0.00" - imp_neto = "100.00" - imp_trib = "1.00" - imp_op_ex = "0.00" - imp_iva = "21.00" - fecha_cbte = fecha - # Fechas del período del servicio facturado (solo si concepto = 1?) - if servicios: - concepto = 3 - fecha_venc_pago = fecha - fecha_serv_desde = fecha - fecha_serv_hasta = fecha - else: - concepto = 1 - fecha_venc_pago = fecha_serv_desde = fecha_serv_hasta = None - moneda_id = 'PES' - moneda_ctz = '1.000' - obs = "Observaciones Comerciales, libre" - - wsfev1.CrearFactura(concepto, tipo_doc, nro_doc, tipo_cbte, punto_vta, - cbt_desde, cbt_hasta, imp_total, imp_tot_conc, imp_neto, - imp_iva, imp_trib, imp_op_ex, fecha_cbte, fecha_venc_pago, - fecha_serv_desde, fecha_serv_hasta, # -- - moneda_id, moneda_ctz) - - # agrego un comprobante asociado (solo notas de crédito / débito) - if tipo_cbte in (2, 3): - tipo = 1 - pv = 2 - nro = 1234 - wsfev1.AgregarCmpAsoc(tipo, pv, nro) - - # agrego otros tributos: - tributo_id = 99 - desc = 'Impuesto Municipal Matanza' - base_imp = "100.00" - alic = "1.00" - importe = "1.00" - wsfev1.AgregarTributo(tributo_id, desc, base_imp, alic, importe) - - # agrego el subtotal por tasa de IVA: - iva_id = 5 # 21% - base_im = 100 - importe = 21 - wsfev1.AgregarIva(iva_id, base_imp, importe) - - # llamo al websevice para obtener el CAE: - wsfev1.CAESolicitar() - - self.assertEqual(wsfev1.Resultado, "A") # Aprobado! - self.assertIsInstance(wsfev1.CAE, str) - self.assertEqual(len(wsfev1.CAE), len("63363178822329")) - self.assertEqual(len(wsfev1.Vencimiento), len("20130907")) - wsfev1.AnalizarXml("XmlResponse") - # observación "... no se encuentra registrado en los padrones de AFIP.": - self.assertEqual(wsfev1.ObtenerTagXml('Obs', 0, 'Code'), '10017') - - def test_consulta(self): - "Prueba de obtener los datos de un comprobante autorizado" - wsfev1 = self.wsfev1 - # autorizo un comprobante: - tipo_cbte = 1 - self.test_autorizar_comprobante(tipo_cbte) - # obtengo datos para comprobar - cae = wsfev1.CAE - wsfev1.AnalizarXml("XmlRequest") - imp_total = float(wsfev1.ObtenerTagXml('ImpTotal')) - concepto = int(wsfev1.ObtenerTagXml('Concepto')) - punto_vta = wsfev1.PuntoVenta - cbte_nro = wsfev1.CbteNro - - # llamo al webservice para consultar y validar manualmente el CAE: - wsfev1.CompConsultar(tipo_cbte, punto_vta, cbte_nro) - - self.assertEqual(wsfev1.CAE, cae) - self.assertEqual(wsfev1.CbteNro, cbte_nro) - self.assertEqual(wsfev1.ImpTotal, imp_total) - - wsfev1.AnalizarXml("XmlResponse") - self.assertEqual(wsfev1.ObtenerTagXml('CodAutorizacion'), str(wsfev1.CAE)) - self.assertEqual(wsfev1.ObtenerTagXml('Concepto'), str(concepto)) - - def test_reproceso_servicios(self): - "Prueba de reproceso de un comprobante (recupero de CAE por consulta)" - wsfev1 = self.wsfev1 - # obtengo el próximo número de comprobante - tipo_cbte = 1 - punto_vta = 4000 - nro = wsfev1.CompUltimoAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(nro) + 1 - # obtengo CAE - wsfev1.Reprocesar = True - self.test_autorizar_comprobante(tipo_cbte, cbte_nro) - self.assertEqual(wsfev1.Reproceso, "") - # intento reprocesar: - self.test_autorizar_comprobante(tipo_cbte, cbte_nro) - self.assertEqual(wsfev1.Reproceso, "S") - - def test_reproceso_productos(self): - "Prueba de reproceso de un comprobante (recupero de CAE por consulta)" - wsfev1 = self.wsfev1 - # obtengo el próximo número de comprobante - tipo_cbte = 1 - punto_vta = 4000 - nro = wsfev1.CompUltimoAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(nro) + 1 - # obtengo CAE - wsfev1.Reprocesar = True - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsfev1.Reproceso, "") - # intento reprocesar: - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsfev1.Reproceso, "S") - - def test_reproceso_nota_debito(self): - "Prueba de reproceso de un comprobante (recupero de CAE por consulta)" - # N/D con comprobantes asociados - wsfev1 = self.wsfev1 - # obtengo el próximo número de comprobante - tipo_cbte = 2 - punto_vta = 4000 - nro = wsfev1.CompUltimoAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(nro) + 1 - # obtengo CAE - wsfev1.Reprocesar = True - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsfev1.Reproceso, "") - # intento reprocesar: - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsfev1.Reproceso, "S") - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/wslpg.py b/tests/wslpg.py deleted file mode 100644 index 484cb51a4..000000000 --- a/tests/wslpg.py +++ /dev/null @@ -1,544 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf8 -*- -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. - -import pysimplesoap.client -from pyafipws.wslpg import WSLPG -from pyafipws.wsaa import WSAA -from pyafipws import utils -"Pruebas Liquidación Primaria Electrónica de Granos web service WSLPG (AFIP)" - -__author__ = "Mariano Reingart " -__copyright__ = "Copyright (C) 2013 Mariano Reingart" -__license__ = "GPL 3.0" - - -import unittest -import sys -from decimal import Decimal - -sys.path.append("/home/reingart") # TODO: proper packaging - - -print(pysimplesoap.client.__version__) -#assert pysimplesoap.client.__version__ >= "1.08c" - - -WSDL = "https://fwshomo.afip.gov.ar/wslpg/LpgService?wsdl" -CUIT = 20267565393 -CERT = "/home/reingart/pyafipws/reingart.crt" -PRIVATEKEY = "/home/reingart/pyafipws/reingart.key" -CACERT = "/home/reingart/pyafipws/afip_root_desa_ca.crt" -CACHE = "/home/reingart/pyafipws/cache" - -# Autenticación: -wsaa = WSAA() -tra = wsaa.CreateTRA(service="wslpg") -cms = wsaa.SignTRA(tra, CERT, PRIVATEKEY) -wsaa.Conectar() -wsaa.LoginCMS(cms) - - -class TestIssues(unittest.TestCase): - - def setUp(self): - sys.argv.append("--trace") # TODO: use logging - self.wslpg = wslpg = WSLPG() - wslpg.LanzarExcepciones = True - wslpg.Conectar(url=WSDL, cacert=None, cache=CACHE) - wslpg.Cuit = CUIT - wslpg.Token = wsaa.Token - wslpg.Sign = wsaa.Sign - - def test_liquidacion(self): - "Prueba de autorización (obtener COE) liquidación electrónica de granos" - wslpg = self.wslpg - pto_emision = 99 - ok = wslpg.ConsultarUltNroOrden(pto_emision) - self.assertTrue(ok) - ok = wslpg.CrearLiquidacion( - pto_emision=pto_emision, - nro_orden=wslpg.NroOrden + 1, - cuit_comprador=wslpg.Cuit, - nro_act_comprador=29, nro_ing_bruto_comprador=wslpg.Cuit, - cod_tipo_operacion=1, - es_liquidacion_propia='N', es_canje='N', - cod_puerto=14, des_puerto_localidad="DETALLE PUERTO", - cod_grano=31, - cuit_vendedor=23000000019, nro_ing_bruto_vendedor=23000000019, - actua_corredor="N", liquida_corredor="N", - cuit_corredor=0, - comision_corredor=0, nro_ing_bruto_corredor=0, - fecha_precio_operacion="2013-02-07", - precio_ref_tn=2000, - cod_grado_ref="G1", - cod_grado_ent="FG", - factor_ent=98, val_grado_ent=1.02, - precio_flete_tn=10, - cont_proteico=20, - alic_iva_operacion=10.5, - campania_ppal=1213, - cod_localidad_procedencia=5544, - cod_prov_procedencia=12, - datos_adicionales="DATOS ADICIONALES", - peso_neto_sin_certificado=10000, - cod_prov_procedencia_sin_certificado=1, - cod_localidad_procedencia_sin_certificado=15124, - ) - - wslpg.AgregarRetencion( - codigo_concepto="RI", - detalle_aclaratorio="DETALLE DE IVA", - base_calculo=1000, - alicuota=10.5, - ) - wslpg.AgregarRetencion( - codigo_concepto="RG", - detalle_aclaratorio="DETALLE DE GANANCIAS", - base_calculo=100, - alicuota=15, - ) - ok = wslpg.AutorizarLiquidacion() - self.assertTrue(ok) - self.assertIsInstance(wslpg.COE, str) - self.assertEqual(len(wslpg.COE), len("330100013142")) - - def test_liquidacion_contrato(self, nro_contrato=26): - "Prueba de obtener COE variante con contrato / corredor (WSLPGv1.4)" - wslpg = self.wslpg - pto_emision = 99 - ok = wslpg.ConsultarUltNroOrden(pto_emision) - self.assertTrue(ok) - nro_orden = wslpg.NroOrden + 1 - - # probar todas las actividades en caso de que devuelva error AFIP: - # 1106: La actividad seleccionada no corresponde al comprador - actividades = (40, 41, 29, 33, 31, 30, 35, 44, 47, 46, 48, 49, 51, 50, - 45, 59, 57, 52, 34, 28, 36, 55, 39, 37) - - for actid in actividades: - ok = wslpg.CrearLiquidacion( - pto_emision=pto_emision, - nro_orden=nro_orden, - nro_contrato=nro_contrato, - cuit_comprador=20400000000, - nro_act_comprador=actid, nro_ing_bruto_comprador=20400000000, - cod_tipo_operacion=1, - es_liquidacion_propia='N', es_canje='N', - cod_puerto=14, des_puerto_localidad="DETALLE PUERTO", - cod_grano=31, - cuit_vendedor=23000000019, nro_ing_bruto_vendedor=23000000019, - actua_corredor="S", liquida_corredor="S", - cuit_corredor=20267565393, - comision_corredor=1, nro_ing_bruto_corredor=20267565393, - fecha_precio_operacion="2013-02-07", - precio_ref_tn=2000, - cod_grado_ref="G1", - cod_grado_ent="FG", - factor_ent=98, val_grado_ent=1.02, - precio_flete_tn=10, - cont_proteico=20, - alic_iva_operacion=10.5, - campania_ppal=1213, - cod_localidad_procedencia=5544, - cod_prov_procedencia=12, - datos_adicionales="DATOS ADICIONALES", - peso_neto_sin_certificado=10000, - cod_prov_procedencia_sin_certificado=1, - cod_localidad_procedencia_sin_certificado=15124, - ) - - wslpg.AgregarRetencion( - codigo_concepto="RI", - detalle_aclaratorio="DETALLE DE IVA", - base_calculo=1000, - alicuota=10.5, - ) - wslpg.AgregarRetencion( - codigo_concepto="RG", - detalle_aclaratorio="DETALLE DE GANANCIAS", - base_calculo=100, - alicuota=15, - ) - ok = wslpg.AutorizarLiquidacion() - if wslpg.COE: - # print "Actividad OK", actid - break - - self.assertTrue(ok) - self.assertIsInstance(wslpg.COE, str) - self.assertEqual(len(wslpg.COE), len("330100013142")) - self.assertEqual(wslpg.NroContrato, nro_contrato) - - def test_anular(self, coe=None): - "Prueba de anulación de una liquidación electrónica de granos" - wslpg = self.wslpg - if not coe: - self.test_liquidacion() # autorizo una nueva liq. - coe = wslpg.COE - ok = wslpg.AnularLiquidacion(coe) # la anulo - self.assertTrue(ok) - self.assertEqual(wslpg.Resultado, "A") - - def test_ajuste_unificado(self): - "Prueba de ajuste unificado de una liquidación de granos (WSLPGv1.4)" - wslpg = self.wslpg - # solicito una liquidación para tener el COE autorizado a ajustar: - self.test_liquidacion() - coe = wslpg.COE - # solicito el último nro de orden para la nueva liquidación de ajuste: - pto_emision = 55 - ok = wslpg.ConsultarUltNroOrden(pto_emision) - self.assertTrue(ok) - nro_orden = wslpg.NroOrden + 1 - # creo el ajuste base y agrego los datos de certificado: - wslpg.CrearAjusteBase(pto_emision=pto_emision, - nro_orden=nro_orden, - coe_ajustado=coe, - cod_provincia=1, - cod_localidad=5, - ) - wslpg.AgregarCertificado(tipo_certificado_deposito=5, - nro_certificado_deposito=555501200729, - peso_neto=10000, - cod_localidad_procedencia=3, - cod_prov_procedencia=1, - campania=1213, - fecha_cierre='2013-01-13', - peso_neto_total_certificado=10000) - # creo el ajuste de crédito (ver documentación AFIP) - wslpg.CrearAjusteCredito( - diferencia_peso_neto=1000, diferencia_precio_operacion=100, - cod_grado="G2", val_grado=1.0, factor=100, - diferencia_precio_flete_tn=10, - datos_adicionales='AJUSTE CRED UNIF', - concepto_importe_iva_0='Alicuota Cero', - importe_ajustar_Iva_0=900, - concepto_importe_iva_105='Alicuota Diez', - importe_ajustar_Iva_105=800, - concepto_importe_iva_21='Alicuota Veintiuno', - importe_ajustar_Iva_21=700, - ) - wslpg.AgregarDeduccion(codigo_concepto="AL", - detalle_aclaratorio="Deduc Alm", - dias_almacenaje="1", - precio_pkg_diario=0.01, - comision_gastos_adm=1.0, - base_calculo=1000.0, - alicuota=10.5, ) - wslpg.AgregarRetencion(codigo_concepto="RI", - detalle_aclaratorio="Ret IVA", - base_calculo=1000, - alicuota=10.5, ) - # creo el ajuste de débito (ver documentación AFIP) - wslpg.CrearAjusteDebito( - diferencia_peso_neto=500, diferencia_precio_operacion=100, - cod_grado="G2", val_grado=1.0, factor=100, - diferencia_precio_flete_tn=0.01, - datos_adicionales='AJUSTE DEB UNIF', - concepto_importe_iva_0='Alic 0', - importe_ajustar_Iva_0=250, - concepto_importe_iva_105='Alic 10.5', - importe_ajustar_Iva_105=200, - concepto_importe_iva_21='Alicuota 21', - importe_ajustar_Iva_21=50, - ) - wslpg.AgregarDeduccion(codigo_concepto="AL", - detalle_aclaratorio="Deduc Alm", - dias_almacenaje="1", - precio_pkg_diario=0.01, - comision_gastos_adm=1.0, - base_calculo=500.0, - alicuota=10.5, ) - wslpg.AgregarRetencion(codigo_concepto="RI", - detalle_aclaratorio="Ret IVA", - base_calculo=100, - alicuota=10.5, ) - # autorizo el ajuste: - ok = wslpg.AjustarLiquidacionUnificado() - self.assertTrue(ok) - # verificar respuesta general: - self.assertIsInstance(wslpg.COE, str) - self.assertEqual(len(wslpg.COE), len("330100013133")) - coe_ajustado = coe - coe = wslpg.COE - try: - self.assertEqual(wslpg.Estado, "AC") - self.assertEqual(wslpg.Subtotal, Decimal("-734.10")) - self.assertEqual(wslpg.TotalIva105, Decimal("-77.61")) - self.assertEqual(wslpg.TotalIva21, Decimal("0")) - self.assertEqual(wslpg.TotalRetencionesGanancias, Decimal("0")) - self.assertEqual(wslpg.TotalRetencionesIVA, Decimal("-94.50")) - self.assertEqual(wslpg.TotalNetoAPagar, Decimal("-716.68")) - self.assertEqual(wslpg.TotalIvaRg2300_07, Decimal("16.89")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("-733.57")) - # verificar ajuste credito - ok = wslpg.AnalizarAjusteCredito() - self.assertTrue(ok) - self.assertEqual(wslpg.GetParametro("precio_operacion"), "1.900") - self.assertEqual(wslpg.GetParametro("total_peso_neto"), "1000") - self.assertEqual(wslpg.TotalDeduccion, Decimal("11.05")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("2780.95")) - self.assertEqual(wslpg.GetParametro("importe_iva"), "293.16") - self.assertEqual(wslpg.GetParametro("operacion_con_iva"), "3085.16") - self.assertEqual(wslpg.GetParametro("deducciones", 0, "importe_iva"), "1.05") - # verificar ajuste debito - ok = wslpg.AnalizarAjusteDebito() - self.assertTrue(ok) - self.assertEqual(wslpg.GetParametro("precio_operacion"), "2.090") - self.assertEqual(wslpg.GetParametro("total_peso_neto"), "500") - self.assertEqual(wslpg.TotalDeduccion, Decimal("5.52")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("2047.38")) - self.assertEqual(wslpg.GetParametro("importe_iva"), "215.55") - self.assertEqual(wslpg.GetParametro("operacion_con_iva"), "2268.45") - self.assertEqual(wslpg.GetParametro("retenciones", 0, "importe_retencion"), "10.50") - - finally: - # anulo el ajuste para evitar subsiguiente validación AFIP: - if coe: - self.test_anular(coe) - if coe_ajustado: - self.test_anular(coe_ajustado) # anulo también la liq. orig. - - def test_ajuste_contrato(self, nro_contrato=27): - "Prueba de ajuste por contrato de una liquidación de granos (WSLPGv1.4)" - wslpg = self.wslpg - # solicito una liquidación para tener el COE autorizado a ajustar: - self.test_liquidacion_contrato(nro_contrato) - coe_ajustado = wslpg.COE - # solicito el último nro de orden para la nueva liquidación de ajuste: - pto_emision = 55 - ok = wslpg.ConsultarUltNroOrden(pto_emision) - self.assertTrue(ok) - nro_orden = wslpg.NroOrden + 1 - wslpg.CrearAjusteBase(pto_emision=55, nro_orden=nro_orden, - nro_contrato=nro_contrato, - coe_ajustado=coe_ajustado, - nro_act_comprador=40, - cod_grano=31, - cuit_vendedor=23000000019, - cuit_comprador=20400000000, - cuit_corredor=20267565393, - precio_ref_tn=100, - cod_grado_ent="G1", - val_grado_ent=1.01, - precio_flete_tn=1000, - cod_puerto=14, - des_puerto_localidad="Desc Puerto", - cod_provincia=1, - cod_localidad=5, - ) - wslpg.CrearAjusteCredito( - concepto_importe_iva_0='Ajuste IVA al 0%', - importe_ajustar_Iva_0=100, - ) - wslpg.CrearAjusteDebito( - concepto_importe_iva_105='Ajuste IVA al 10.5%', - importe_ajustar_Iva_105=100, - ) - wslpg.AgregarDeduccion(codigo_concepto="OD", - detalle_aclaratorio="Otras Deduc", - dias_almacenaje="1", - base_calculo=100.0, - alicuota=10.5, ) - - # autorizo el ajuste: - ok = wslpg.AjustarLiquidacionContrato() - self.assertTrue(ok) - # verificar respuesta general: - coe = wslpg.COE - self.assertIsInstance(wslpg.COE, str) - self.assertEqual(len(wslpg.COE), len("330100013133")) - try: - self.assertEqual(wslpg.Estado, "AC") - self.assertEqual(wslpg.Subtotal, Decimal("-100.00")) - self.assertEqual(wslpg.TotalIva105, Decimal("0")) - self.assertEqual(wslpg.TotalIva21, Decimal("0")) - self.assertEqual(wslpg.TotalRetencionesGanancias, Decimal("0")) - self.assertEqual(wslpg.TotalRetencionesIVA, Decimal("0")) - self.assertEqual(wslpg.TotalNetoAPagar, Decimal("-110.50")) - self.assertEqual(wslpg.TotalIvaRg2300_07, Decimal("0")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("-110.50")) - # self.assertEqual(wslpg.NroContrato, nro_contrato) # no devuelto AFIP - # verificar campos globales no documentados (directamente desde el XML): - wslpg.AnalizarXml() - v = wslpg.ObtenerTagXml("totalesUnificados", "subTotalDebCred") - self.assertEqual(v, "0") - v = wslpg.ObtenerTagXml("totalesUnificados", "totalBaseDeducciones") - self.assertEqual(v, "100.0") - v = wslpg.ObtenerTagXml("totalesUnificados", "ivaDeducciones") - self.assertEqual(v, "10.50") - # verificar ajuste credito - ok = wslpg.AnalizarAjusteCredito() - self.assertTrue(ok) - self.assertEqual(wslpg.GetParametro("precio_operacion"), "0.000") - self.assertEqual(wslpg.GetParametro("total_peso_neto"), "0") - self.assertEqual(wslpg.TotalDeduccion, Decimal("0.000")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("0.000")) - self.assertEqual(float(wslpg.GetParametro("importe_iva")), 0.00) - self.assertEqual(float(wslpg.GetParametro("operacion_con_iva")), 0.00) - # verificar ajuste debito - ok = wslpg.AnalizarAjusteDebito() - self.assertTrue(ok) - self.assertEqual(float(wslpg.GetParametro("precio_operacion")), 0.00) - self.assertEqual(float(wslpg.GetParametro("total_peso_neto")), 0) - self.assertEqual(wslpg.TotalDeduccion, Decimal("110.50")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("-110.50")) - self.assertEqual(float(wslpg.GetParametro("importe_iva")), 0.00) - self.assertEqual(float(wslpg.GetParametro("operacion_con_iva")), 0.00) - self.assertEqual(float(wslpg.GetParametro("deducciones", 0, "importe_iva")), 10.50) - self.assertEqual(float(wslpg.GetParametro("deducciones", 0, "importe_deduccion")), 110.50) - - finally: - # anulo el ajuste para evitar subsiguiente validación AFIP: - # 2105: No puede relacionar la liquidacion con el contrato, porque el contrato tiene un Ajuste realizado. - # 2106: No puede ajustar el contrato, porque tiene liquidaciones relacionadas con ajuste. - # anular primero el ajuste para evitar la validación de AFIP: - # 2108: No puede anular la liquidación porque está relacionada a un contrato con ajuste vigente. - if coe: - self.test_anular(coe) - if coe_ajustado: - self.test_anular(coe_ajustado) # anulo también el COE ajustado - - def atest_ajuste_papel(self): - # deshabilitado ya que el método esta "en estudio" por parte de AFIP - wslpg = self.wslpg - wslpg.CrearAjusteBase(pto_emision=50, - nro_orden=1, - tipo_formulario=6, - nro_formulario="000101800999", - actividad=46, - cuit_comprador=99999999999, - nro_ing_bruto_comprador=99999999999, - tipo_operacion=1, - cod_grano=31, - cuit_vendedor=30000000007, - nro_ing_bruto_vendedor=30000000007, - cod_provincia=1, - cod_localidad=5) - wslpg.AgregarCertificado(tipo_certificado_deposito=5, - nro_certificado_deposito=555501200802, - peso_neto=10000, - cod_localidad_procedencia=5, - cod_prov_procedencia=1, - campania=1213, - fecha_cierre='2013-07-12') - wslpg.CrearAjusteCredito( - concepto_importe_iva_21='IVA al 21%', - importe_ajustar_Iva_21=1500, - ) - wslpg.AgregarRetencion(codigo_concepto="RI", - detalle_aclaratorio="Ret IVA", - base_calculo=1500, - alicuota=8, ) - wslpg.CrearAjusteDebito( - concepto_importe_iva_105='IVA al 0%', - importe_ajustar_Iva_105=100, - ) - - ret = wslpg.AjustarLiquidacionUnificadoPapel() - - def test_asociaciar_coe_contrato(self, nro_contrato=27): - wslpg = self.wslpg - # solicito una liquidación para tener el COE autorizado a asociar: - self.test_liquidacion() - coe = wslpg.COE - try: - # Asocio la liquidación con el contrato: - wslpg.AsociarLiquidacionAContrato(coe=coe, - nro_contrato=nro_contrato, - cuit_comprador="20400000000", - cuit_vendedor="23000000019", - cuit_corredor="20267565393", - cod_grano=31) - self.assertEqual(wslpg.Errores, []) - self.assertIsInstance(wslpg.COE, str) - self.assertEqual(len(wslpg.COE), len("330100013133")) - self.assertEqual(wslpg.Estado, "AC") - finally: - # anulo el ajuste para evitar subsiguiente validación AFIP: - # 2105: No puede relacionar la liquidacion con el contrato, porque el contrato tiene un Ajuste realizado. - # 2112: La liquidacion ya esta relacionada al contrato. - try: - self.test_anular(coe) - except BaseException: - # ignorar error de AFIP (aparentemente problema interno): - self.assertEqual(wslpg.Errores[0], "2100: El contrato ingresado no se encuentra registrado.") - pass - - def test_consultar_liquidaciones_por_contrato(self, nro_contrato=26): - wslpg = self.wslpg - # obtener las liquidaciones relacionadas al contrato: - wslpg.ConsultarLiquidacionesPorContrato( - nro_contrato=nro_contrato, - cuit_comprador="20400000000", - cuit_vendedor="23000000019", - cuit_corredor="20267565393", - cod_grano=31, - ) - self.assertEqual(wslpg.Errores, []) - # verifico COEs previamente relacionados al contrato: - for coe in sorted([330100014020, 330100014022, 330100014023, - 330100014025, 330100014028, 330100014029, - 330100014040, 330100014043, 330100014057, - 330100014061, 330100014450, 330100014454, - 330100014455, 330100014459, 330100014467, - 330100014472, 330100004664]): - self.assertIsInstance(wslpg.COE, str) - self.assertEqual(wslpg.COE, str(coe)) - self.assertEqual(wslpg.Estado, "") # por el momento no lo devuelve - # leo el próximo numero - wslpg.LeerDatosLiquidacion() - - def test_consultar_ajuste_unificado(self): - "Prueba de consulta de un ajuste unificado (WSLPGv1.4)" - wslpg = self.wslpg - # uso datos de un ajuste generado con test_ajuste_unificado: - pto_emision = 55 - nro_orden = 78 - # consulto el ajuste: - ok = wslpg.ConsultarAjuste(pto_emision, nro_orden) - self.assertTrue(ok) - # verificar respuesta general: - self.assertEqual(wslpg.COE, "330100014501") - self.assertEqual(wslpg.Estado, "AN") # anulado! - self.assertEqual(wslpg.Subtotal, Decimal("-734.10")) - self.assertEqual(wslpg.TotalIva105, Decimal("-77.61")) - self.assertEqual(wslpg.TotalIva21, Decimal("0")) - self.assertEqual(wslpg.TotalRetencionesGanancias, Decimal("0")) - self.assertEqual(wslpg.TotalRetencionesIVA, Decimal("-94.50")) - self.assertEqual(wslpg.TotalNetoAPagar, Decimal("-716.68")) - self.assertEqual(wslpg.TotalIvaRg2300_07, Decimal("16.89")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("-733.57")) - # verificar ajuste credito - ok = wslpg.AnalizarAjusteCredito() - self.assertTrue(ok) - self.assertEqual(float(wslpg.GetParametro("precio_operacion")), 1.9) - self.assertEqual(wslpg.GetParametro("total_peso_neto"), "1000") - self.assertEqual(wslpg.TotalDeduccion, Decimal("11.05")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("2780.95")) - self.assertEqual(float(wslpg.GetParametro("importe_iva")), 293.16) - self.assertEqual(float(wslpg.GetParametro("operacion_con_iva")), 3085.16) - self.assertEqual(float(wslpg.GetParametro("deducciones", 0, "importe_iva")), 1.05) - # verificar ajuste debito - ok = wslpg.AnalizarAjusteDebito() - self.assertTrue(ok) - self.assertEqual(float(wslpg.GetParametro("precio_operacion")), 2.09) - self.assertEqual(wslpg.GetParametro("total_peso_neto"), "500") - self.assertEqual(wslpg.TotalDeduccion, Decimal("5.52")) - self.assertEqual(wslpg.TotalPagoSegunCondicion, Decimal("2047.38")) - self.assertEqual(float(wslpg.GetParametro("importe_iva")), 215.55) - self.assertEqual(float(wslpg.GetParametro("operacion_con_iva")), 2268.45) - self.assertEqual(float(wslpg.GetParametro("retenciones", 0, "importe_retencion")), 10.50) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/wslpg_cert_autorizar_resp.xml b/tests/wslpg_cert_autorizar_resp.xml deleted file mode 100644 index 59c6b8859..000000000 --- a/tests/wslpg_cert_autorizar_resp.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -21 -2 -332000000189 -AC -2015-02-24 - -1500.00 -0.00 -0.00 -0.00 -1500.00 - - -0.00 -0.00 -0.00 -0.00 -0.00 -0.00 - - - - - - diff --git a/tests/wsmtx.py b/tests/wsmtx.py deleted file mode 100644 index 85fb8809b..000000000 --- a/tests/wsmtx.py +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/python -# -*- coding: latin-1 -*- -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. - -from pyafipws.wsaa import WSAA -from pyafipws.wsmtx import WSMTXCA -"Pruebas para WSMTX de AFIP (Factura Electrónica Mercado Interno con detalle)" - -__author__ = "Mariano Reingart " -__copyright__ = "Copyright (C) 2010 Mariano Reingart" -__license__ = "GPL 3.0" - -import unittest -import os -import time -import sys -from decimal import Decimal -import datetime - -sys.path.append("/home/reingart") # TODO: proper packaging - - -WSDL = "https://fwshomo.afip.gov.ar/wsmtxca/services/MTXCAService?wsdl" -CUIT = 20267565393 -CERT = "/home/reingart/pyafipws/reingart.crt" -PRIVATEKEY = "/home/reingart/pyafipws/reingart.key" -CACERT = "/home/reingart/pyafipws/afip_root_desa_ca.crt" -CACHE = "/home/reingart/pyafipws/cache" - -# Autenticación: -wsaa = WSAA() -tra = wsaa.CreateTRA(service="wsmtxca") -cms = wsaa.SignTRA(tra, CERT, PRIVATEKEY) -wsaa.Conectar() -wsaa.LoginCMS(cms) - - -class TestMTX(unittest.TestCase): - - def setUp(self): - sys.argv.append("--trace") # TODO: use logging - self.wsmtxca = wsmtxca = WSMTXCA() - wsmtxca.Cuit = CUIT - wsmtxca.Token = wsaa.Token - wsmtxca.Sign = wsaa.Sign - wsmtxca.Conectar(CACHE, WSDL) - - def atest_dummy(self): - print(wsmtxca.client.help("dummy")) - wsmtxca.Dummy() - print("AppServerStatus", wsmtxca.AppServerStatus) - print("DbServerStatus", wsmtxca.DbServerStatus) - print("AuthServerStatus", wsmtxca.AuthServerStatus) - - def test_autorizar_comprobante(self, tipo_cbte=1, cbte_nro=None, servicios=True, tributos=True): - "Prueba de autorización de un comprobante (obtención de CAE)" - wsmtxca = self.wsmtxca - - # datos generales del comprobante: - punto_vta = 4000 - if not cbte_nro: - # si no me especifícan nro de comprobante, busco el próximo - cbte_nro = wsmtxca.ConsultarUltimoComprobanteAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(cbte_nro) + 1 - fecha = datetime.datetime.now().strftime("%Y-%m-%d") - tipo_doc = 80 - nro_doc = "30000000007" - cbt_desde = cbte_nro - cbt_hasta = cbt_desde - imp_tot_conc = "0.00" - imp_neto = "100.00" - if tributos: - imp_total = "123.00" - imp_trib = "2.00" - else: - imp_total = "121.00" - imp_trib = "0.00" - imp_op_ex = "0.00" - imp_subtotal = "100.00" - fecha_cbte = fecha - # Fechas del período del servicio facturado (solo si concepto = 1?) - if servicios: - concepto = 3 - fecha_venc_pago = fecha - fecha_serv_desde = fecha - fecha_serv_hasta = fecha - else: - concepto = 1 - fecha_venc_pago = fecha_serv_desde = fecha_serv_hasta = None - moneda_id = 'PES' - moneda_ctz = '1.000' - obs = "Observaciones Comerciales, libre" - - wsmtxca.CrearFactura(concepto, tipo_doc, nro_doc, tipo_cbte, punto_vta, - cbt_desde, cbt_hasta, imp_total, imp_tot_conc, imp_neto, - imp_subtotal, imp_trib, imp_op_ex, fecha_cbte, fecha_venc_pago, - fecha_serv_desde, fecha_serv_hasta, # -- - moneda_id, moneda_ctz, obs) - - # agrego un comprobante asociado (solo notas de crédito / débito) - if tipo_cbte in (2, 3): - tipo = 1 - pv = 2 - nro = 1234 - wsmtxca.AgregarCmpAsoc(tipo, pv, nro) - - if tributos: - # agrego otros tributos: - tributo_id = 99 - desc = 'Impuesto Municipal Matanza' - base_imp = "100.00" - alic = "1.00" - importe = "1.00" - wsmtxca.AgregarTributo(tributo_id, desc, base_imp, alic, importe) - - # agrego otros tributos: - tributo_id = 1 - desc = 'Impuestos Internos' - base_imp = "100.00" - alic = "1.00" - importe = "1.00" - wsmtxca.AgregarTributo(tributo_id, desc, base_imp, alic, importe) - - # agrego el subtotal por tasa de IVA: - iva_id = 5 # 21% - base_imp = "100.00" - importe = 21 - wsmtxca.AgregarIva(iva_id, base_imp, importe) - - # agrego un artículo: - u_mtx = 123456 - cod_mtx = 1234567890123 - codigo = "P0001" - ds = "Descripcion del producto P0001" - qty = 2.00 - umed = 7 - precio = 100.00 - bonif = 0.00 - iva_id = 5 - imp_iva = 42.00 - imp_subtotal = 242.00 - wsmtxca.AgregarItem(u_mtx, cod_mtx, codigo, ds, qty, umed, precio, bonif, - iva_id, imp_iva, imp_subtotal) - - # agrego bonificación general - wsmtxca.AgregarItem(None, None, None, 'bonificacion', 0, 99, 1, None, - 5, -21, -121) - - # llamo al websevice para obtener el CAE: - wsmtxca.AutorizarComprobante() - - self.assertEqual(wsmtxca.Resultado, "A") # Aprobado! - self.assertIsInstance(wsmtxca.CAE, str) - self.assertEqual(len(wsmtxca.CAE), len("63363178822329")) - self.assertEqual(len(wsmtxca.Vencimiento), len("2013-09-07")) - - cae = wsmtxca.CAE - - # llamo al webservice para consultar y validar manualmente el CAE: - wsmtxca.ConsultarComprobante(tipo_cbte, punto_vta, cbte_nro) - - self.assertEqual(wsmtxca.CAE, cae) - self.assertEqual(wsmtxca.CbteNro, cbte_nro) - self.assertEqual(wsmtxca.ImpTotal, imp_total) - - wsmtxca.AnalizarXml("XmlResponse") - self.assertEqual(wsmtxca.ObtenerTagXml('codigoAutorizacion'), str(wsmtxca.CAE)) - self.assertEqual(wsmtxca.ObtenerTagXml('codigoConcepto'), str(concepto)) - self.assertEqual(wsmtxca.ObtenerTagXml('arrayItems', 0, 'item', 'unidadesMtx'), '123456') - - def test_reproceso_servicios(self): - "Prueba de reproceso de un comprobante (recupero de CAE por consulta)" - wsmtxca = self.wsmtxca - # obtengo el próximo número de comprobante - tipo_cbte = 1 - punto_vta = 4000 - nro = wsmtxca.ConsultarUltimoComprobanteAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(nro) + 1 - # obtengo CAE - wsmtxca.Reprocesar = True - self.test_autorizar_comprobante(tipo_cbte, cbte_nro) - self.assertEqual(wsmtxca.Reproceso, "") - # intento reprocesar: - self.test_autorizar_comprobante(tipo_cbte, cbte_nro) - self.assertEqual(wsmtxca.Reproceso, "S") - - def test_reproceso_productos(self): - "Prueba de reproceso de un comprobante (recupero de CAE por consulta)" - wsmtxca = self.wsmtxca - # obtengo el próximo número de comprobante - tipo_cbte = 1 - punto_vta = 4000 - nro = wsmtxca.ConsultarUltimoComprobanteAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(nro) + 1 - # obtengo CAE - wsmtxca.Reprocesar = True - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsmtxca.Reproceso, "") - # intento reprocesar: - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsmtxca.Reproceso, "S") - - def test_reproceso_nota_debito(self): - "Prueba de reproceso de un comprobante (recupero de CAE por consulta)" - # N/D con comprobantes asociados - wsmtxca = self.wsmtxca - # obtengo el próximo número de comprobante - tipo_cbte = 2 - punto_vta = 4000 - nro = wsmtxca.ConsultarUltimoComprobanteAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(nro) + 1 - # obtengo CAE - wsmtxca.Reprocesar = True - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsmtxca.Reproceso, "") - # intento reprocesar: - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, servicios=False) - self.assertEqual(wsmtxca.Reproceso, "S") - - def test_reproceso_sin_tributos(self): - "Prueba de reproceso de un comprobante (recupero de CAE por consulta)" - wsmtxca = self.wsmtxca - # obtengo el próximo número de comprobante - tipo_cbte = 1 - punto_vta = 4000 - nro = wsmtxca.ConsultarUltimoComprobanteAutorizado(tipo_cbte, punto_vta) - cbte_nro = int(nro) + 1 - # obtengo CAE (sin tributos) - wsmtxca.Reprocesar = True - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, tributos=False) - self.assertEqual(wsmtxca.Reproceso, "") - # intento reprocesar: - self.test_autorizar_comprobante(tipo_cbte, cbte_nro, tributos=False) - self.assertEqual(wsmtxca.Reproceso, "S") - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/xml/wsltv_aut_test.xml b/tests/xml/wsltv_aut_test.xml deleted file mode 100644 index 6aceb089d..000000000 --- a/tests/xml/wsltv_aut_test.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -150 -2016-01-01 -2002 -pto vta al 3500 -1 -av dep acopio 2233 -31 -85523002502850 - - -30000000007 -JOCKER -IVA Responsable Inscripto -Peru 100 -2010-01-01 - - -20111111112 -CUIT PF de Prueba genérica -IVA Responsable Inscripto -Calle 1 -123456 -11223 -22 - - -CPS -BR -22 -6569866 -12 -FFAA -77888 -1 - -1 - - - - -321 -2015-12-10 - -4 -1 -900 -190.0 -171000.0 - - -1 -900 - - -14 -12.0 - - -12 -12.0 - - -2 -Ganancias -15000 -8 -1200.54 - - -171000.0 -21.0 -35910.0 -206910.0 -24.0 -1200.54 -205685.46 - -****** - - - - - From da8559afa057b64a485db194d418d5b6bdef331a Mon Sep 17 00:00:00 2001 From: utkarsh Date: Fri, 26 Mar 2021 01:18:22 +0530 Subject: [PATCH 04/11] Removed unncessary command lines --- src/libpyafipws.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/libpyafipws.c b/src/libpyafipws.c index ea0478243..536410fa2 100644 --- a/src/libpyafipws.c +++ b/src/libpyafipws.c @@ -48,16 +48,15 @@ CONSTRUCTOR static void initialize(void) { pName = PyString_FromString(buf); if (PyList_Insert(pSysPath, 0, pName)) MessageBox(NULL, "PyList_Insert", "LibPyAfipWs Initialize", 0); - Py_XDECREF(pName); /* note that pSysPath is a Borrowed reference! */ + Py_XDECREF(pName); MessageBox(NULL, "done!", "LibPyAfipWs Initialize", 0); #else Py_Initialize(); puts(Py_GetPath()); - /* on linux, add the current directory so python can find the modules */ + PyRun_SimpleString("import sys, os"); PyRun_SimpleString("sys.path.append(os.curdir)"); - /* preliminary fix, it could not work on some cases and there could be - some security concerns. It should add the base path of the .so */ + #endif } @@ -117,18 +116,18 @@ BSTR cstr(void *pStr) { char *str; size_t len; - /* get the string val/size, remember to copy '\0' termination character */ + len = PyString_Size((PyObject*) pStr) + 1; str = PyString_AsString((PyObject*) pStr); #ifdef WIN32 - /* on windows, returns a automation string */ + ret = SysAllocStringByteLen(str, len); #else - /* allocate memory for the c string */ + ret = (char *) malloc(len); if (ret) { - /* copy the py string to c (note that it may have \0 characters */ + strncpy(ret, str, len); } #endif @@ -137,7 +136,7 @@ BSTR cstr(void *pStr) { #define FMT "%s: %s - File %s, line %d, in %s" -/* format exception: simplified PyErr_PrintEx (to not write to stdout) */ + BSTR format_ex(void) { char buf[2000]; BSTR ret; @@ -164,10 +163,7 @@ BSTR format_ex(void) { v = PyString_AsString(PyObject_Str(value)); } - /* PyTracebackObject seems defined at frameobject.h, it should be included - to avoid "error: dereferencing pointer to incomplete type" - tb is NULL if the failure is in the c-api (for example in PyImport_Import) - */ + tb1 = (PyTracebackObject *)tb; /* tb_printinternal (traceback.c) */ @@ -200,7 +196,7 @@ BSTR format_ex(void) { return ret; } -/* CreateObject: import the module, instantiate the object and return the ref */ + EXPORT void * STDCALL PYAFIPWS_CreateObject(char *module, char *name) { PyObject *pName, *pModule, *pClass, *pObject=NULL; @@ -225,14 +221,14 @@ EXPORT void * STDCALL PYAFIPWS_CreateObject(char *module, char *name) { } } -/* DestroyObject: decrement the reference to the module */ + EXPORT void STDCALL PYAFIPWS_DestroyObject(void * object) { Py_DECREF((PyObject *) object); } -/* Get: generic method to get an attribute of an object (returns a string) */ + EXPORT BSTR STDCALL PYAFIPWS_Get(void * object, char * name) { PyObject *pValue; BSTR ret=NULL; From b6800640d67578ce966665f2c80021398ca672bc Mon Sep 17 00:00:00 2001 From: utkarsh Date: Fri, 26 Mar 2021 09:24:15 +0530 Subject: [PATCH 05/11] commit --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 07590abc9..df47d9581 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,3 @@ fpdf>=1.7.2 dbf>=0.88.019 Pillow>=2.0.0 #pywin32==219 -certifi>=2020.4.5.1 From e5b1e1db16b48d284f56461d502c475b1a3b89ad Mon Sep 17 00:00:00 2001 From: utkarsh Date: Fri, 9 Apr 2021 11:16:39 +0530 Subject: [PATCH 06/11] Commit --- setup.py | 8 ++--- wsfev1.py | 91 ++++++++++++++++++++++++------------------------------- 2 files changed, 44 insertions(+), 55 deletions(-) diff --git a/setup.py b/setup.py index 4be73f64e..4c4cf4244 100644 --- a/setup.py +++ b/setup.py @@ -76,7 +76,7 @@ import designer except ImportError: # el script pyfpdf/tools/designer.py no esta disponible: - print("IMPORTANTE: no se incluye el diseñador de plantillas PDF") + print "IMPORTANTE: no se incluye el diseñador de plantillas PDF" # parametros para setup: kwargs = {} @@ -92,9 +92,9 @@ ".", glob.glob(r'c:\Program Files\Mercurial\msvc*.dll') + glob.glob(r'c:\Program Files\Mercurial\Microsoft.VC90.CRT.manifest'), )] - # fix permission denied runtime error on win32com.client.gencache.GenGeneratePath - # (expects a __init__.py not pyc, also dicts.dat pickled or _LoadDicts/_SaveDicts will fail too) - # NOTE: on windows 8.1 64 bits, this is stored in C:\Users\REINGART\AppData\\Local\Temp\gen_py\2.7 + # fix permission denied runtime error on win32com.client.gencache.GenGeneratePath + # (expects a __init__.py not pyc, also dicts.dat pickled or _LoadDicts/_SaveDicts will fail too) + # NOTE: on windows 8.1 64 bits, this is stored in C:\Users\REINGART\AppData\\Local\Temp\gen_py\2.7 from win32com.client import gencache gen_py_path = gencache.GetGeneratePath() or r"C:\Python27\lib\site-packages\win32com\gen_py" data_files += [( diff --git a/wsfev1.py b/wsfev1.py index e5cfe951b..9d30eedb6 100644 --- a/wsfev1.py +++ b/wsfev1.py @@ -10,16 +10,16 @@ # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. -"""Módulo para obtener CAE/CAEA, código de autorización electrónico webservice -WSFEv1 de AFIP (Factura Electrónica Nacional - Proyecto Version 1 - 2.12) -Según RG 2485/08, RG 2757/2010, RG 2904/2010 y RG2926/10 (CAE anticipado), +"""M�dulo para obtener CAE/CAEA, c�digo de autorizaci�n electr�nico webservice +WSFEv1 de AFIP (Factura Electr�nica Nacional - Proyecto Version 1 - 2.12) +Seg�n RG 2485/08, RG 2757/2010, RG 2904/2010 y RG2926/10 (CAE anticipado), RG 3067/2011 (RS - Monotributo), RG 3571/2013 (Responsables inscriptos IVA), RG 3668/2014 (Factura A IVA F.8001), RG 3749/2015 (R.I. y exentos) -RG 4004-E Alquiler de inmuebles con destino casa habitación). +RG 4004-E Alquiler de inmuebles con destino casa habitaci�n). RG 4109-E Venta de bienes muebles registrables. -RG 4291/2018 Régimen especial de emisión y almacenamiento electrónico -RG 4367/2018 Régimen de Facturas de Crédito Electrónicas MiPyMEs Ley 27.440 -Más info: http://www.sistemasagiles.com.ar/trac/wiki/ProyectoWSFEv1 +RG 4291/2018 R�gimen especial de emisi�n y almacenamiento electr�nico +RG 4367/2018 R�gimen de Facturas de Cr�dito Electr�nicas MiPyMEs Ley 27.440 +M�s info: http://www.sistemasagiles.com.ar/trac/wiki/ProyectoWSFEv1 """ __author__ = "Mariano Reingart " @@ -32,8 +32,8 @@ import sys from .utils import verifica, inicializar_y_capturar_excepciones, BaseWS, get_install_dir -HOMO = False # solo homologación -TYPELIB = False # usar librería de tipos (TLB) +HOMO = False # solo homologaci�n +TYPELIB = False # usar librer�a de tipos (TLB) LANZAR_EXCEPCIONES = False # valor por defecto: True #WSDL = "https://www.sistemasagiles.com.ar/simulador/wsfev1/call/soap?WSDL=None" @@ -42,7 +42,7 @@ class WSFEv1(BaseWS): - "Interfaz para el WebService de Factura Electrónica Version 1 - 2.12" + "Interfaz para el WebService de Factura Electr�nica Version 1 - 2.12" _public_methods_ = ['CrearFactura', 'AgregarIva', 'CAESolicitar', 'AgregarTributo', 'AgregarCmpAsoc', 'AgregarOpcional', 'AgregarComprador', @@ -87,7 +87,7 @@ class WSFEv1(BaseWS): # Variables globales para BaseWS: HOMO = HOMO WSDL = WSDL - Version = "%s %s" % (__version__, HOMO and 'Homologación' or '') + Version = "%s %s" % (__version__, HOMO and 'Homologaci�n' or '') Reprocesar = True # recuperar automaticamente CAE emitidos LanzarExcepciones = LANZAR_EXCEPCIONES factura = None @@ -128,7 +128,7 @@ def Dummy(self): self.AuthServerStatus = result.get('AuthServer') return True - # los siguientes métodos no están decorados para no limpiar propiedades + # los siguientes m�todos no est�n decorados para no limpiar propiedades def CrearFactura(self, concepto=1, tipo_doc=80, nro_doc="", tipo_cbte=1, punto_vta=0, cbt_desde=0, cbt_hasta=0, imp_total=0.00, imp_tot_conc=0.00, imp_neto=0.00, @@ -138,7 +138,7 @@ def CrearFactura(self, concepto=1, tipo_doc=80, nro_doc="", tipo_cbte=1, punto_v ): "Creo un objeto factura (interna)" - # Creo una factura electronica de exportación + # Creo una factura electronica de exportaci�n fact = {'tipo_doc': tipo_doc, 'nro_doc': nro_doc, 'tipo_cbte': tipo_cbte, 'punto_vta': punto_vta, 'cbt_desde': cbt_desde, 'cbt_hasta': cbt_hasta, @@ -210,7 +210,7 @@ def AgregarComprador(self, doc_tipo=80, doc_nro=0, porcentaje=100.00, **kwarg): def ObtenerCampoFactura(self, *campos): "Obtener el valor devuelto de AFIP para un campo de factura" - # cada campo puede ser una clave string (dict) o una posición (list) + # cada campo puede ser una clave string (dict) o una posici�n (list) ret = self.factura for campo in campos: if isinstance(ret, dict) and isinstance(campo, str): @@ -242,12 +242,6 @@ def CAESolicitar(self): 'CbteDesde': f['cbt_desde'], 'CbteHasta': f['cbt_hasta'], 'CbteFch': f['fecha_cbte'], - 'ImpTotal': f['imp_total'], - 'ImpTotConc': f['imp_tot_conc'], - 'ImpNeto': f['imp_neto'], - 'ImpOpEx': f['imp_op_ex'], - 'ImpTrib': f['imp_trib'], - 'ImpIVA': f['imp_iva'], # Fechas solo se informan si Concepto in (2,3) 'FchServDesde': f.get('fecha_serv_desde'), 'FchServHasta': f.get('fecha_serv_hasta'), @@ -536,7 +530,7 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False): @inicializar_y_capturar_excepciones def CAESolicitarX(self): - "Autorizar múltiples facturas (CAE) en una única solicitud" + "Autorizar m�ltiples facturas (CAE) en una �nica solicitud" # Ver CompTotXRequest -> cantidad maxima comprobantes (250) # verificar que hay multiples facturas: if not self.facturas: @@ -562,12 +556,7 @@ def CAESolicitarX(self): 'CbteDesde': f['cbt_desde'], 'CbteHasta': f['cbt_hasta'], 'CbteFch': f['fecha_cbte'], - 'ImpTotal': f['imp_total'], - 'ImpTotConc': f['imp_tot_conc'], - 'ImpNeto': f['imp_neto'], - 'ImpOpEx': f['imp_op_ex'], - 'ImpTrib': f['imp_trib'], - 'ImpIVA': f['imp_iva'], + # Fechas solo se informan si Concepto in (2,3) 'FchServDesde': f.get('fecha_serv_desde'), 'FchServHasta': f.get('fecha_serv_hasta'), @@ -711,7 +700,7 @@ def CAEASolicitar(self, periodo, orden): @inicializar_y_capturar_excepciones def CAEAConsultar(self, periodo, orden): - "Método de consulta de CAEA" + "M�todo de consulta de CAEA" ret = self.client.FECAEAConsultar( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, Periodo=periodo, @@ -736,7 +725,7 @@ def CAEAConsultar(self, periodo, orden): @inicializar_y_capturar_excepciones def CAEARegInformativo(self): - "Método para informar comprobantes emitidos con CAEA" + "M�todo para informar comprobantes emitidos con CAEA" f = self.factura ret = self.client.FECAEARegInformativo( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, @@ -835,7 +824,7 @@ def CAEARegInformativo(self): @inicializar_y_capturar_excepciones def CAEASinMovimientoInformar(self, punto_vta, caea): - "Método para informar CAEA sin movimiento" + "M�todo para informar CAEA sin movimiento" ret = self.client.FECAEASinMovimientoInformar( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, PtoVta=punto_vta, @@ -857,7 +846,7 @@ def CAEASinMovimientoInformar(self, punto_vta, caea): @inicializar_y_capturar_excepciones def ParamGetTiposCbte(self, sep="|"): - "Recuperador de valores referenciales de códigos de Tipos de Comprobantes" + "Recuperador de valores referenciales de c�digos de Tipos de Comprobantes" ret = self.client.FEParamGetTiposCbte( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -867,7 +856,7 @@ def ParamGetTiposCbte(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetTiposConcepto(self, sep="|"): - "Recuperador de valores referenciales de códigos de Tipos de Conceptos" + "Recuperador de valores referenciales de c�digos de Tipos de Conceptos" ret = self.client.FEParamGetTiposConcepto( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -877,7 +866,7 @@ def ParamGetTiposConcepto(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetTiposDoc(self, sep="|"): - "Recuperador de valores referenciales de códigos de Tipos de Documentos" + "Recuperador de valores referenciales de c�digos de Tipos de Documentos" ret = self.client.FEParamGetTiposDoc( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -887,7 +876,7 @@ def ParamGetTiposDoc(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetTiposIva(self, sep="|"): - "Recuperador de valores referenciales de códigos de Tipos de Alícuotas" + "Recuperador de valores referenciales de c�digos de Tipos de Al�cuotas" ret = self.client.FEParamGetTiposIva( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -897,7 +886,7 @@ def ParamGetTiposIva(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetTiposMonedas(self, sep="|"): - "Recuperador de valores referenciales de códigos de Monedas" + "Recuperador de valores referenciales de c�digos de Monedas" ret = self.client.FEParamGetTiposMonedas( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -907,7 +896,7 @@ def ParamGetTiposMonedas(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetTiposOpcional(self, sep="|"): - "Recuperador de valores referenciales de códigos de Tipos de datos opcionales" + "Recuperador de valores referenciales de c�digos de Tipos de datos opcionales" ret = self.client.FEParamGetTiposOpcional( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -917,8 +906,8 @@ def ParamGetTiposOpcional(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetTiposTributos(self, sep="|"): - "Recuperador de valores referenciales de códigos de Tipos de Tributos" - "Este método permite consultar los tipos de tributos habilitados en este WS" + "Recuperador de valores referenciales de c�digos de Tipos de Tributos" + "Este m�todo permite consultar los tipos de tributos habilitados en este WS" ret = self.client.FEParamGetTiposTributos( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -928,8 +917,8 @@ def ParamGetTiposTributos(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetTiposPaises(self, sep="|"): - "Recuperador de valores referenciales de códigos de Paises" - "Este método permite consultar los tipos de tributos habilitados en este WS" + "Recuperador de valores referenciales de c�digos de Paises" + "Este m�todo permite consultar los tipos de tributos habilitados en este WS" ret = self.client.FEParamGetTiposPaises( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, ) @@ -939,7 +928,7 @@ def ParamGetTiposPaises(self, sep="|"): @inicializar_y_capturar_excepciones def ParamGetCotizacion(self, moneda_id): - "Recuperador de cotización de moneda" + "Recuperador de cotizaci�n de moneda" ret = self.client.FEParamGetCotizacion( Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit}, MonId=moneda_id, @@ -965,7 +954,7 @@ def p_assert_eq(a, b): def main(): - "Función principal de pruebas (obtener CAE)" + "Funci�n principal de pruebas (obtener CAE)" import os import time @@ -1036,12 +1025,12 @@ def main(): imp_op_ex = "0.00" fecha_cbte = fecha fecha_venc_pago = fecha_serv_desde = fecha_serv_hasta = None - # Fechas del período del servicio facturado y vencimiento de pago: + # Fechas del per�odo del servicio facturado y vencimiento de pago: if concepto > 1: fecha_venc_pago = fecha fecha_serv_desde = fecha; fecha_serv_hasta = fecha elif '--fce' in sys.argv: - # obligatorio en Factura de Crédito Electrónica MiPyMEs (FCE): + # obligatorio en Factura de Cr�dito Electr�nica MiPyMEs (FCE): fecha_venc_pago = fecha moneda_id = 'PES'; moneda_ctz = '1.000' @@ -1068,13 +1057,13 @@ def main(): wsfev1.EstablecerCampoFactura("caea", caea) wsfev1.EstablecerCampoFactura("fecha_hs_gen", "yyyymmddhhmiss") - # comprobantes asociados (notas de crédito / débito) + # comprobantes asociados (notas de cr�dito / d�bito) if tipo_cbte in (2, 3, 7, 8, 12, 13, 203, 208, 213): tipo = 201 if tipo_cbte in (203, 208, 213) else 3 pto_vta = 4001 nro = 1 cuit = "20267565393" - # obligatorio en Factura de Crédito Electrónica MiPyMEs (FCE): + # obligatorio en Factura de Cr�dito Electr�nica MiPyMEs (FCE): fecha_cbte = fecha if tipo_cbte in (203, 208, 213) else None wsfev1.AgregarCmpAsoc(tipo, pto_vta, nro, cuit, fecha_cbte) @@ -1111,7 +1100,7 @@ def main(): wsfev1.AgregarOpcional(5, "02") # IVA Excepciones wsfev1.AgregarOpcional(61, "80") # Firmante Doc Tipo wsfev1.AgregarOpcional(62, "20267565393") # Firmante Doc Nro - wsfev1.AgregarOpcional(7, "01") # Carácter del Firmante + wsfev1.AgregarOpcional(7, "01") # Car�cter del Firmante # datos opcionales para RG 4004-E Alquiler de inmuebles (Ganancias) if '--rg4004' in sys.argv: wsfev1.AgregarOpcional(17, "1") # Intermediario @@ -1122,14 +1111,14 @@ def main(): wsfev1.AgregarComprador(80, "30500010912", 99.99) wsfev1.AgregarComprador(80, "30999032083", 0.01) - # datos de Factura de Crédito Electrónica MiPyMEs (FCE): + # datos de Factura de Cr�dito Electr�nica MiPyMEs (FCE): if '--fce' in sys.argv: wsfev1.AgregarOpcional(2101, "2850590940090418135201") # CBU wsfev1.AgregarOpcional(2102, "pyafipws") # alias if tipo_cbte in (203, 208, 213): - wsfev1.AgregarOpcional(22, "S") # Anulación + wsfev1.AgregarOpcional(22, "S") # Anulaci�n - # agregar la factura creada internamente para solicitud múltiple: + # agregar la factura creada internamente para solicitud m�ltiple: if "--multiple" in sys.argv: wsfev1.AgregarFacturaX() @@ -1313,7 +1302,7 @@ def main(): print(error) -# busco el directorio de instalación (global para que no cambie si usan otra dll) +# busco el directorio de instalaci�n (global para que no cambie si usan otra dll) INSTALL_DIR = WSFEv1.InstallDir = get_install_dir() From 4ea7da51b4a3cb0a7ec8e996da6c7353200d40a9 Mon Sep 17 00:00:00 2001 From: utkarsh Date: Sat, 10 Apr 2021 01:10:29 +0530 Subject: [PATCH 07/11] commit --- pyfepdf.py | 170 +++++++++++++++++++++++++++++------------------------ 1 file changed, 94 insertions(+), 76 deletions(-) diff --git a/pyfepdf.py b/pyfepdf.py index 3d366b06d..d5c8c30df 100644 --- a/pyfepdf.py +++ b/pyfepdf.py @@ -20,7 +20,7 @@ import os import decimal import datetime -"Módulo para generar PDF de facturas electrónicas" +"M�dulo para generar PDF de facturas electr�nicas" __author__ = "Mariano Reingart " __copyright__ = "Copyright (C) 2011-2018 Mariano Reingart" @@ -32,14 +32,14 @@ CONFIG_FILE = "rece.ini" LICENCIA = """ -pyfepdf.py: Interfaz para generar Facturas Electrónica en formato PDF +pyfepdf.py: Interfaz para generar Facturas Electr�nica en formato PDF Copyright (C) 2011-2015 Mariano Reingart reingart@gmail.com Este progarma es software libre, se entrega ABSOLUTAMENTE SIN GARANTIA y es bienvenido a redistribuirlo bajo la licencia GPLv3. -Para información adicional sobre garantía, soporte técnico comercial -e incorporación/distribución en programas propietarios ver PyAfipWs: +Para informaci�n adicional sobre garant�a, soporte t�cnico comercial +e incorporaci�n/distribuci�n en programas propietarios ver PyAfipWs: http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs """ @@ -48,21 +48,21 @@ --ayuda: este mensaje --licencia: muestra la licencia del programa - --debug: modo depuración (detalla y confirma las operaciones) + --debug: modo depuraci�n (detalla y confirma las operaciones) --formato: muestra el formato de los archivos de entrada/salida - --prueba: genera y autoriza una factura de prueba (no usar en producción!) + --prueba: genera y autoriza una factura de prueba (no usar en producci�n!) --cargar: carga un archivo de entrada (txt) a la base de datos --grabar: graba un archivo de salida (txt) con los datos de los comprobantes procesados - --pdf: genera la imágen de factura en PDF + --pdf: genera la im�gen de factura en PDF --dbf: utiliza tablas DBF en lugar del archivo de entrada TXT --json: utiliza el formato JSON para el archivo de entrada -Ver rece.ini para parámetros de configuración " +Ver rece.ini para par�metros de configuraci�n " """ class FEPDF: - "Interfaz para generar PDF de Factura Electrónica" + "Interfaz para generar PDF de Factura Electr�nica" _public_methods_ = ['CrearFactura', 'AgregarDetalleItem', 'AgregarIva', 'AgregarTributo', 'AgregarCmpAsoc', 'AgregarPermiso', @@ -81,17 +81,17 @@ class FEPDF: tipos_doc = {80: 'CUIT', 86: 'CUIL', 96: 'DNI', 99: '', 87: "CDI", 89: "LE", 90: "LC", 91: "CI Extranjera", - 92: "en trámite", 93: "Acta Nacimiento", 94: "Pasaporte", + 92: "en tr�mite", 93: "Acta Nacimiento", 94: "Pasaporte", 95: "CI Bs. As. RNP", - 0: "CI Policía Federal", 1: "CI Buenos Aires", - 2: "CI Catamarca", 3: "CI Córdoba", 4: "CI Corrientes", - 5: "CI Entre Ríos", 6: "CI Jujuy", 7: "CI Mendoza", + 0: "CI Polic�a Federal", 1: "CI Buenos Aires", + 2: "CI Catamarca", 3: "CI C�rdoba", 4: "CI Corrientes", + 5: "CI Entre R�os", 6: "CI Jujuy", 7: "CI Mendoza", 8: "CI La Rioja", 9: "CI Salta", 10: "CI San Juan", 11: "CI San Luis", 12: "CI Santa Fe", - 13: "CI Santiago del Estero", 14: "CI Tucumán", + 13: "CI Santiago del Estero", 14: "CI Tucum�n", 16: "CI Chaco", 17: "CI Chubut", 18: "CI Formosa", - 19: "CI Misiones", 20: "CI Neuquén", 21: "CI La Pampa", - 22: "CI Río Negro", 23: "CI Santa Cruz", + 19: "CI Misiones", 20: "CI Neuqu�n", 21: "CI La Pampa", + 22: "CI R�o Negro", 23: "CI Santa Cruz", 24: "CI Tierra del Fuego", } @@ -105,27 +105,27 @@ class FEPDF: 53: 'kg base', 54: 'gruesa', 61: 'kg bruto', 62: 'uiactant', 63: 'muiactant', 64: 'uiactig', 65: 'muiactig', 66: 'kg activo', 67: 'gramo activo', 68: 'gramo base', 96: 'packs', 97: 'hormas', - 96: 'packs', 97: 'seña/anticipo', + 96: 'packs', 97: 'se�a/anticipo', 99: 'bonificaci\xf3n', 98: 'otras unidades'} ivas_ds = {3: 0, 4: 10.5, 5: 21, 6: 27, 8: 5, 9: 2.5} paises = {512: 'FIJI, ISLAS', 513: 'PAPUA NUEVA GUINEA', 514: 'KIRIBATI, ISLAS', 515: 'MICRONESIA,EST.FEDER', 516: 'PALAU', 517: 'TUVALU', 518: 'SALOMON,ISLAS', 519: 'TONGA', 520: 'MARSHALL,ISLAS', 521: 'MARIANAS,ISLAS', 597: 'RESTO OCEANIA', 598: 'INDET.(OCEANIA)', 101: 'BURKINA FASO', 102: 'ARGELIA', 103: 'BOTSWANA', 104: 'BURUNDI', 105: 'CAMERUN', 107: 'REP. CENTROAFRICANA.', 108: 'CONGO', 109: 'REP.DEMOCRAT.DEL CONGO EX ZAIRE', 110: 'COSTA DE MARFIL', 111: 'CHAD', 112: 'BENIN', 113: 'EGIPTO', 115: 'GABON', 116: 'GAMBIA', 117: 'GHANA', 118: 'GUINEA', 119: 'GUINEA ECUATORIAL', 120: 'KENYA', 121: 'LESOTHO', 122: 'LIBERIA', 123: 'LIBIA', 124: 'MADAGASCAR', 125: 'MALAWI', 126: 'MALI', 127: 'MARRUECOS', 128: 'MAURICIO,ISLAS', 129: 'MAURITANIA', 130: 'NIGER', 131: 'NIGERIA', 132: 'ZIMBABWE', 133: 'RWANDA', 134: 'SENEGAL', 135: 'SIERRA LEONA', 136: 'SOMALIA', 137: 'SWAZILANDIA', 138: 'SUDAN', 139: 'TANZANIA', 140: 'TOGO', 141: 'TUNEZ', 142: 'UGANDA', 144: 'ZAMBIA', 145: 'TERRIT.VINCULADOS AL R UNIDO', 146: 'TERRIT.VINCULADOS A ESPA\xd1A', 147: 'TERRIT.VINCULADOS A FRANCIA', 149: 'ANGOLA', 150: 'CABO VERDE', 151: 'MOZAMBIQUE', 152: 'SEYCHELLES', 153: 'DJIBOUTI', 155: 'COMORAS', 156: 'GUINEA BISSAU', 157: 'STO.TOME Y PRINCIPE', 158: 'NAMIBIA', 159: 'SUDAFRICA', 160: 'ERITREA', 161: 'ETIOPIA', 197: 'RESTO (AFRICA)', 198: 'INDETERMINADO (AFRICA)', 200: 'ARGENTINA', 201: 'BARBADOS', 202: 'BOLIVIA', 203: 'BRASIL', 204: 'CANADA', 205: 'COLOMBIA', 206: 'COSTA RICA', 207: 'CUBA', 208: 'CHILE', 209: 'REP\xdaBLICA DOMINICANA', 210: 'ECUADOR', 211: 'EL SALVADOR', 212: 'ESTADOS UNIDOS', 213: 'GUATEMALA', 214: 'GUYANA', 215: 'HAITI', 216: 'HONDURAS', 217: 'JAMAICA', 218: 'MEXICO', 219: 'NICARAGUA', 220: 'PANAMA', 221: 'PARAGUAY', 222: 'PERU', 223: 'PUERTO RICO', 224: 'TRINIDAD Y TOBAGO', 225: 'URUGUAY', 226: 'VENEZUELA', 227: 'TERRIT.VINCULADO AL R.UNIDO', 228: 'TER.VINCULADOS A DINAMARCA', 229: 'TERRIT.VINCULADOS A FRANCIA AMERIC.', 230: 'TERRIT. HOLANDESES', 231: 'TER.VINCULADOS A ESTADOS UNIDOS', 232: 'SURINAME', 233: 'DOMINICA', 234: 'SANTA LUCIA', 235: 'SAN VICENTE Y LAS GRANADINAS', 236: 'BELICE', 237: 'ANTIGUA Y BARBUDA', 238: 'S.CRISTOBAL Y NEVIS', 239: 'BAHAMAS', 240: 'GRENADA', 241: 'ANTILLAS HOLANDESAS', 250: 'AAE Tierra del Fuego - ARGENTINA', 251: 'ZF La Plata - ARGENTINA', 252: 'ZF Justo Daract - ARGENTINA', 253: 'ZF R\xedo Gallegos - ARGENTINA', 254: 'Islas Malvinas - ARGENTINA', 255: 'ZF Tucum\xe1n - ARGENTINA', 256: 'ZF C\xf3rdoba - ARGENTINA', 257: 'ZF Mendoza - ARGENTINA', 258: 'ZF General Pico - ARGENTINA', 259: 'ZF Comodoro Rivadavia - ARGENTINA', 260: 'ZF Iquique', 261: 'ZF Punta Arenas', 262: 'ZF Salta - ARGENTINA', 263: 'ZF Paso de los Libres - ARGENTINA', 264: 'ZF Puerto Iguaz\xfa - ARGENTINA', 265: 'SECTOR ANTARTICO ARG.', 270: 'ZF Col\xf3n - REP\xdaBLICA DE PANAM\xc1', 271: 'ZF Winner (Sta. C. de la Sierra) - BOLIVIA', 280: 'ZF Colonia - URUGUAY', 281: 'ZF Florida - URUGUAY', 282: 'ZF Libertad - URUGUAY', 283: 'ZF Zonamerica - URUGUAY', 284: 'ZF Nueva Helvecia - URUGUAY', 285: 'ZF Nueva Palmira - URUGUAY', 286: 'ZF R\xedo Negro - URUGUAY', 287: 'ZF Rivera - URUGUAY', 288: 'ZF San Jos\xe9 - URUGUAY', 291: 'ZF Manaos - BRASIL', 295: 'MAR ARG ZONA ECO.EX', 296: 'RIOS ARG NAVEG INTER', 297: 'RESTO AMERICA', 298: 'INDETERMINADO (AMERICA)', 301: 'AFGANISTAN', 302: 'ARABIA SAUDITA', 303: 'BAHREIN', 304: 'MYANMAR (EX-BIRMANIA)', 305: 'BUTAN', 306: 'CAMBODYA (EX-KAMPUCHE)', 307: 'SRI LANKA', 308: 'COREA DEMOCRATICA', 309: 'COREA REPUBLICANA', 310: 'CHINA', 312: 'FILIPINAS', 313: 'TAIWAN', 315: 'INDIA', 316: 'INDONESIA', 317: 'IRAK', 318: 'IRAN', 319: 'ISRAEL', 320: 'JAPON', 321: 'JORDANIA', 322: 'QATAR', 323: 'KUWAIT', 324: 'LAOS', 325: 'LIBANO', 326: 'MALASIA', 327: 'MALDIVAS ISLAS', 328: 'OMAN', 329: 'MONGOLIA', 330: 'NEPAL', 331: 'EMIRATOS ARABES UNIDOS', 332: 'PAKIST\xc1N', 333: 'SINGAPUR', 334: 'SIRIA', 335: 'THAILANDIA', 337: 'VIETNAM', 341: 'HONG KONG', 344: 'MACAO', 345: 'BANGLADESH', 346: 'BRUNEI', 348: 'REPUBLICA DE YEMEN', 349: 'ARMENIA', 350: 'AZERBAIJAN', 351: 'GEORGIA', 352: 'KAZAJSTAN', 353: 'KIRGUIZISTAN', 354: 'TAYIKISTAN', 355: 'TURKMENISTAN', 356: 'UZBEKISTAN', 357: 'TERR. AU. PALESTINOS', 397: 'RESTO DE ASIA', 398: 'INDET.(ASIA)', 401: 'ALBANIA', 404: 'ANDORRA', 405: 'AUSTRIA', 406: 'BELGICA', 407: 'BULGARIA', 409: 'DINAMARCA', 410: 'ESPA\xd1A', 411: 'FINLANDIA', 412: 'FRANCIA', 413: 'GRECIA', 414: 'HUNGRIA', 415: 'IRLANDA', 416: 'ISLANDIA', 417: 'ITALIA', 418: 'LIECHTENSTEIN', 419: 'LUXEMBURGO', 420: 'MALTA', 421: 'MONACO', 422: 'NORUEGA', 423: 'PAISES BAJOS', 424: 'POLONIA', 425: 'PORTUGAL', 426: 'REINO UNIDO', 427: 'RUMANIA', 428: 'SAN MARINO', 429: 'SUECIA', 430: 'SUIZA', 431: 'VATICANO(SANTA SEDE)', 433: 'POS.BRIT.(EUROPA)', 435: 'CHIPRE', 436: 'TURQUIA', 438: 'ALEMANIA,REP.FED.', 439: 'BIELORRUSIA', 440: 'ESTONIA', 441: 'LETONIA', 442: 'LITUANIA', 443: 'MOLDAVIA', 444: 'RUSIA', 445: 'UCRANIA', 446: 'BOSNIA HERZEGOVINA', 447: 'CROACIA', 448: 'ESLOVAQUIA', 449: 'ESLOVENIA', 450: 'MACEDONIA', 451: 'REP. CHECA', 453: 'MONTENEGRO', 454: 'SERBIA', 997: 'RESTO CONTINENTE', 998: 'INDET.(CONTINENTE)', 497: 'RESTO EUROPA', 498: 'INDET.(EUROPA)', 501: 'AUSTRALIA', 503: 'NAURU', 504: 'NUEVA ZELANDIA', 505: 'VANATU', 506: 'SAMOA OCCIDENTAL', 507: 'TERRITORIO VINCULADOS A AUSTRALIA', 508: 'TERRITORIOS VINCULADOS AL R. UNIDO', 509: 'TERRITORIOS VINCULADOS A FRANCIA', 510: 'TER VINCULADOS A NUEVA. ZELANDA', 511: 'TER. VINCULADOS A ESTADOS UNIDOS'} - monedas_ds = {'DOL': 'USD: Dólar', 'PES': 'ARS: Pesos', '010': 'MXN: Pesos Mejicanos', '011': 'UYU: Pesos Uruguayos', '012': 'BRL: Real', '014': 'Coronas Danesas', '015': 'Coronas Noruegas', '016': 'Coronas Suecas', '019': 'JPY: Yens', '018': 'CAD: D\xf3lar Canadiense', '033': 'CLP: Peso Chileno', '056': 'Forint (Hungr\xeda)', '031': 'BOV: Peso Boliviano', '036': 'Sucre Ecuatoriano', '051': 'D\xf3lar de Hong Kong', '034': 'Rand Sudafricano', '053': 'D\xf3lar de Jamaica', '057': 'Baht (Tailandia)', '043': 'Balboas Paname\xf1as', '042': 'Peso Dominicano', '052': 'D\xf3lar de Singapur', '032': 'Peso Colombiano', '035': 'Nuevo Sol Peruano', '061': 'Zloty Polaco', '060': 'EUR: Euro', '063': 'Lempira Hondure\xf1a', '062': 'Rupia Hind\xfa', '064': 'Yuan (Rep. Pop. China)', '009': 'Franco Suizo', '025': 'Dinar Yugoslavo', '002': 'USD: D\xf3lar Libre EEUU', '027': 'Dracma Griego', '026': 'D\xf3lar Australiano', '007': 'Florines Holandeses', '023': 'VEB: Bol\xedvar Venezolano', '047': 'Riyal Saudita', '046': 'Libra Egipcia', '045': 'Dirham Marroqu\xed', '044': 'C\xf3rdoba Nicarag\xfcense', '029': 'G\xfcaran\xed', '028': 'Flor\xedn (Antillas Holandesas)', '054': 'D\xf3lar de Taiwan', '040': 'Lei Rumano', '024': 'Corona Checa', '030': 'Shekel (Israel)', '021': 'Libra Esterlina', '055': 'Quetzal Guatemalteco', '059': 'Dinar Kuwaiti'} + monedas_ds = {'DOL': 'USD: D�lar', 'PES': 'ARS: Pesos', '010': 'MXN: Pesos Mejicanos', '011': 'UYU: Pesos Uruguayos', '012': 'BRL: Real', '014': 'Coronas Danesas', '015': 'Coronas Noruegas', '016': 'Coronas Suecas', '019': 'JPY: Yens', '018': 'CAD: D\xf3lar Canadiense', '033': 'CLP: Peso Chileno', '056': 'Forint (Hungr\xeda)', '031': 'BOV: Peso Boliviano', '036': 'Sucre Ecuatoriano', '051': 'D\xf3lar de Hong Kong', '034': 'Rand Sudafricano', '053': 'D\xf3lar de Jamaica', '057': 'Baht (Tailandia)', '043': 'Balboas Paname\xf1as', '042': 'Peso Dominicano', '052': 'D\xf3lar de Singapur', '032': 'Peso Colombiano', '035': 'Nuevo Sol Peruano', '061': 'Zloty Polaco', '060': 'EUR: Euro', '063': 'Lempira Hondure\xf1a', '062': 'Rupia Hind\xfa', '064': 'Yuan (Rep. Pop. China)', '009': 'Franco Suizo', '025': 'Dinar Yugoslavo', '002': 'USD: D\xf3lar Libre EEUU', '027': 'Dracma Griego', '026': 'D\xf3lar Australiano', '007': 'Florines Holandeses', '023': 'VEB: Bol\xedvar Venezolano', '047': 'Riyal Saudita', '046': 'Libra Egipcia', '045': 'Dirham Marroqu\xed', '044': 'C\xf3rdoba Nicarag\xfcense', '029': 'G\xfcaran\xed', '028': 'Flor\xedn (Antillas Holandesas)', '054': 'D\xf3lar de Taiwan', '040': 'Lei Rumano', '024': 'Corona Checa', '030': 'Shekel (Israel)', '021': 'Libra Esterlina', '055': 'Quetzal Guatemalteco', '059': 'Dinar Kuwaiti'} tributos_ds = {1: 'Impuestos nacionales', 2: 'Impuestos provinciales', 3: 'Impuestos municipales', 4: 'Impuestos Internos', 99: 'Otro'} tipos_fact = { (1, 6, 11, 19, 51): 'Factura', - (2, 7, 12, 20, 52): 'Nota de Débito', - (3, 8, 13, 21, 53): 'Nota de Crédito', + (2, 7, 12, 20, 52): 'Nota de D�bito', + (3, 8, 13, 21, 53): 'Nota de Cr�dito', (4, 9, 15, 54): 'Recibo', (10, 5): 'Nota de Venta al contado', - (60, 61): 'Cuenta de Venta y Líquido producto', - (63, 64): 'Liquidación', + (60, 61): 'Cuenta de Venta y L�quido producto', + (63, 64): 'Liquidaci�n', (91, ): 'Remito', - (39, 40): '???? (R.G. N° 3419)'} + (39, 40): '???? (R.G. N� 3419)'} letras_fact = {(1, 2, 3, 4, 5, 39, 60, 63): 'A', (6, 7, 8, 9, 10, 40, 61, 64): 'B', @@ -159,7 +159,7 @@ def __init__(self): self.LanzarExcepciones = True def DebugLog(self): - "Devolver bitácora de depuración" + "Devolver bit�cora de depuraci�n" msg = self.log.getvalue() return msg @@ -287,7 +287,7 @@ def fmt_date(self, d): return "%s/%s/%s" % (d[6:8], d[4:6], d[0:4]) def fmt_num(self, i, fmt="%0.2f", monetary=True): - "Formatear un número" + "Formatear un n�mero" if i is not None and str(i) and not isinstance(i, bool): loc = self.Locale if loc: @@ -320,7 +320,7 @@ def fmt_cuit(self, c): return '' def fmt_fact(self, tipo_cbte, punto_vta, cbte_nro): - "Formatear tipo, letra y punto de venta y número de factura" + "Formatear tipo, letra y punto de venta y n�mero de factura" n = "%05d-%08d" % (int(punto_vta), int(cbte_nro)) t, l = tipo_cbte, '' for k, v in list(self.tipos_fact.items()): @@ -332,26 +332,26 @@ def fmt_fact(self, tipo_cbte, punto_vta, cbte_nro): return t, l, n def digito_verificador_modulo10(self, codigo): - "Rutina para el cálculo del dígito verificador 'módulo 10'" + "Rutina para el c�lculo del d�gito verificador 'm�dulo 10'" # http://www.consejo.org.ar/Bib_elect/diciembre04_CT/documentos/rafip1702.htm # Etapa 1: comenzar desde la izquierda, sumar todos los caracteres ubicados en las posiciones impares. codigo = codigo.strip() if not codigo or not codigo.isdigit(): return '' etapa1 = sum([int(c) for i, c in enumerate(codigo) if not i % 2]) - # Etapa 2: multiplicar la suma obtenida en la etapa 1 por el número 3 + # Etapa 2: multiplicar la suma obtenida en la etapa 1 por el n�mero 3 etapa2 = etapa1 * 3 - # Etapa 3: comenzar desde la izquierda, sumar todos los caracteres que están ubicados en las posiciones pares. + # Etapa 3: comenzar desde la izquierda, sumar todos los caracteres que est�n ubicados en las posiciones pares. etapa3 = sum([int(c) for i, c in enumerate(codigo) if i % 2]) # Etapa 4: sumar los resultados obtenidos en las etapas 2 y 3. etapa4 = etapa2 + etapa3 - # Etapa 5: buscar el menor número que sumado al resultado obtenido en la etapa 4 dé un número múltiplo de 10. Este será el valor del dígito verificador del módulo 10. + # Etapa 5: buscar el menor n�mero que sumado al resultado obtenido en la etapa 4 d� un n�mero m�ltiplo de 10. Este ser� el valor del d�gito verificador del m�dulo 10. digito = 10 - (etapa4 - (int(etapa4 / 10) * 10)) if digito == 10: digito = 0 return str(digito) - # Funciones públicas: + # Funciones p�blicas: @utils.inicializar_y_capturar_excepciones_simple def CargarFormato(self, archivo="factura.csv"): @@ -408,7 +408,7 @@ def AgregarCampo(self, nombre, tipo, x1, y1, x2, y2, @utils.inicializar_y_capturar_excepciones_simple def CrearPlantilla(self, papel="A4", orientacion="portrait"): - "Iniciar la creación del archivo PDF" + "Iniciar la creaci�n del archivo PDF" fact = self.factura tipo, letra, nro = self.fmt_fact(fact['tipo_cbte'], fact['punto_vta'], fact['cbte_nro']) @@ -421,7 +421,7 @@ def CrearPlantilla(self, papel="A4", orientacion="portrait"): for field in self.elements: # si la imagen no existe, eliminar nombre para que no falle fpdf if field['type'] == 'I' and not os.path.exists(field["text"]): - # ajustar rutas relativas a las imágenes predeterminadas: + # ajustar rutas relativas a las im�genes predeterminadas: if os.path.exists(os.path.join(self.InstallDir, field["text"])): field['text'] = os.path.join(self.InstallDir, field["text"]) else: @@ -436,14 +436,14 @@ def CrearPlantilla(self, papel="A4", orientacion="portrait"): title="%s %s %s" % (tipo.encode("latin1", "ignore"), letra, nro), author="CUIT %s" % self.CUIT, subject="CAE %s" % fact['cae'], - keywords="AFIP Factura Electrónica", + keywords="AFIP Factura Electr�nica", creator='PyFEPDF %s (http://www.PyAfipWs.com.ar)' % __version__,) self.template = t return True @utils.inicializar_y_capturar_excepciones_simple def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): - "Generar el PDF según la factura creada y plantilla cargada" + "Generar el PDF seg�n la factura creada y plantilla cargada" ret = False try: @@ -458,11 +458,11 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): tipo_fact, letra_fact, numero_fact = self.fmt_fact(fact['tipo_cbte'], fact['punto_vta'], fact['cbte_nro']) fact['_fmt_fact'] = tipo_fact, letra_fact, numero_fact if fact['tipo_cbte'] in (19, 20, 21): - tipo_fact_ex = tipo_fact + " de Exportación" + tipo_fact_ex = tipo_fact + " de Exportaci�n" else: tipo_fact_ex = tipo_fact - # dividir y contar líneas: + # dividir y contar l�neas: lineas = 0 li_items = [] for it in fact['detalles']: @@ -474,14 +474,14 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): umed = int(umed) ds = it['ds'] or "" if '\x00' in ds: - # limpiar descripción (campos dbf): + # limpiar descripci�n (campos dbf): ds = ds.replace('\x00', '') if '
' in ds: # reemplazar saltos de linea: ds = ds.replace('
', '\n') if DEBUG: print("dividiendo", ds) - # divido la descripción (simil célda múltiple de PDF) + # divido la descripci�n (simil c�lda m�ltiple de PDF) n_li = 0 for ds in f.split_multicell(ds, 'Item.Descripcion01'): if DEBUG: @@ -490,10 +490,10 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): li_items.append(dict(codigo=codigo, ds=ds, qty=qty, umed=umed if not n_li else None, precio=None, importe=None)) - # limpio cantidad y código (solo en el primero) + # limpio cantidad y c�digo (solo en el primero) qty = codigo = None n_li += 1 - # asigno el precio a la última línea del item + # asigno el precio a la �ltima l�nea del item li_items[-1].update(importe=it['importe'] if float(it['importe'] or 0) or umed else None, despacho=it.get('despacho'), precio=it['precio'] if float(it['precio'] or 0) or umed else None, @@ -531,7 +531,7 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): li_items.append(dict(codigo=None, ds=ds, qty=None, umed=None, precio=None, importe=None)) # agrego permisos a descripciones (si corresponde) - permisos = ['Codigo de Despacho %s - Destino de la mercadería: %s' % ( + permisos = ['Codigo de Despacho %s - Destino de la mercader�a: %s' % ( p['id_permiso'], self.paises.get(p['dst_merc'], p['dst_merc'])) for p in fact.get('permisos', [])] @@ -555,7 +555,7 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): li_items.append(dict(codigo=None, ds=ds, qty=None, umed=None, precio=None, importe=None)) cmps_asoc_ds = ', '.join(cmps_asoc) - # calcular cantidad de páginas: + # calcular cantidad de p�ginas: lineas = len(li_items) if lineas_max > 0: hojas = lineas // (lineas_max - 1) @@ -567,7 +567,7 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): hojas = 1 if HOMO: - self.AgregarDato("homo", "HOMOLOGACIÓN") + self.AgregarDato("homo", "HOMOLOGACI�N") # mostrar las validaciones no excluyentes de AFIP (observaciones) @@ -577,12 +577,12 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): else: motivos_ds = "%s" % fact['motivos_obs'] elif HOMO: - motivos_ds = "Ejemplo Sin validez fiscal - Homologación - Testing" + motivos_ds = "Ejemplo Sin validez fiscal - Homologaci�n - Testing" else: motivos_ds = "" if letra_fact in ('A', 'M'): - msg_no_iva = "\nEl IVA discriminado no puede computarse como Crédito Fiscal (RG2485/08 Art. 30 inc. c)." + msg_no_iva = "\nEl IVA discriminado no puede computarse como Cr�dito Fiscal (RG2485/08 Art. 30 inc. c)." if not f.has_key('leyenda_credito_fiscal') and motivos_ds: motivos_ds += msg_no_iva @@ -598,14 +598,14 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): f.set('hojas', str(hojas)) f.set('pagina', 'Pagina %s de %s' % (hoja, hojas)) if hojas > 1 and hoja < hojas: - s = 'Continúa en hoja %s' % (hoja + 1) + s = 'Contin�a en hoja %s' % (hoja + 1) else: s = '' f.set('continua', s) f.set('Item.Descripcion%02d' % (lineas_max + 1), s) if hoja > 1: - s = 'Continúa de hoja %s' % (hoja - 1) + s = 'Contin�a de hoja %s' % (hoja - 1) else: s = '' f.set('continua_de', s) @@ -614,16 +614,16 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): if DEBUG: print("generando pagina %s de %s" % (hoja, hojas)) - # establezco datos según configuración: + # establezco datos seg�n configuraci�n: for d in self.datos: if d['pagina'] == 'P' and hoja != 1: continue if d['pagina'] == 'U' and hojas != hoja: - # no es la última hoja + # no es la �ltima hoja continue f.set(d['campo'], d['valor']) - # establezco campos según tabla encabezado: + # establezco campos seg�n tabla encabezado: for k, v in list(fact.items()): f.set(k, v) @@ -688,7 +688,7 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): f.set('Item.Codigo%02d' % li, it['codigo']) if it['umed'] is not None: if it['umed'] and f.has_key("Item.Umed_ds01"): - # recortar descripción: + # recortar descripci�n: umed_ds = self.umeds_ds.get(int(it['umed'])) s = f.split_multicell(umed_ds, 'Item.Umed_ds01') f.set('Item.Umed_ds%02d' % li, s[0]) @@ -723,7 +723,7 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): f.set('Item.%s%02d' % (adic, li), it[adic]) if hojas == hoja: - # última hoja, imprimo los totales + # �ltima hoja, imprimo los totales li += 1 # agrego otros tributos @@ -777,7 +777,7 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): f.set('imp_tot_conc', self.fmt_imp(fact['imp_tot_conc'])) f.set('imp_op_ex', self.fmt_imp(fact['imp_op_ex'])) - # campos antiguos (por compatibilidad hacia atrás) + # campos antiguos (por compatibilidad hacia atr�s) f.set('IMPTO_PERC', self.fmt_imp(fact.get('impto_perc'))) f.set('IMP_OP_EX', self.fmt_imp(fact.get('imp_op_ex'))) f.set('IMP_IIBB', self.fmt_imp(fact.get('imp_iibb'))) @@ -811,7 +811,7 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): f.set('Total.L', 'Total:') f.set('TOTAL', self.fmt_imp(fact['imp_total'])) else: - # limpio todas las etiquetas (no es la última hoja) + # limpio todas las etiquetas (no es la �ltima hoja) for k in ('imp_neto', 'impto_liq', 'imp_total', 'impto_perc', 'imp_iva', 'impto_liq_nri', 'imp_trib', 'imp_op_ex', 'imp_tot_conc', 'imp_op_ex', 'IMP_IIBB', 'imp_iibb', 'impto_perc_mun', 'imp_internos', @@ -875,16 +875,16 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): ret = True except Exception as e: - # capturar la excepción manualmente, para imprimirla en el PDF: + # capturar la excepci�n manualmente, para imprimirla en el PDF: ex = utils.exception_info() if DEBUG: print(self.Excepcion) print(self.Traceback) - # guardar la traza de la excepción en un archivo temporal: + # guardar la traza de la excepci�n en un archivo temporal: fname = os.path.join(tempfile.gettempdir(), "traceback.txt") self.template.add_page() - # agregar el texto de la excepción y ubicación de la traza al PDF: + # agregar el texto de la excepci�n y ubicaci�n de la traza al PDF: self.AgregarCampo("traceback", 'T', 25, 270, 0, 0, size=10, rotate=0, foreground=0xF00000, priority=-1, text="Traceback %s" % (fname, )) @@ -900,8 +900,8 @@ def ProcesarPlantilla(self, num_copias=3, lineas_max=36, qty_pos='izq'): f.write("imposible grabar") finally: f.close() - # guardar la info de la excepcion a lo último, para que no sea - # limpiada por el decorador de otros métodos (AgregarCampo) ... + # guardar la info de la excepcion a lo �ltimo, para que no sea + # limpiada por el decorador de otros m�todos (AgregarCampo) ... self.Excepcion = ex['msg'] self.Traceback = ex['tb'] finally: @@ -926,7 +926,7 @@ def MostrarPDF(self, archivo, imprimir=False): return True -# busco el directorio de instalación (global para que no cambie si usan otra dll) +# busco el directorio de instalaci�n (global para que no cambie si usan otra dll) if not hasattr(sys, "frozen"): basepath = __file__ elif sys.frozen == 'dll': @@ -954,7 +954,7 @@ def MostrarPDF(self, archivo, imprimir=False): DEBUG = '--debug' in sys.argv utils.safe_console() - # leeo configuración (primer argumento o rece.ini por defecto) + # leeo configuraci�n (primer argumento o rece.ini por defecto) if len(sys.argv) > 1 and not sys.argv[1].startswith("--"): CONFIG_FILE = sys.argv.pop(1) if DEBUG: @@ -987,7 +987,7 @@ def MostrarPDF(self, archivo, imprimir=False): # cargo el formato CSV por defecto (factura.csv) fepdf.CargarFormato(conf_fact.get("formato", "factura.csv")) - # establezco formatos (cantidad de decimales) según configuración: + # establezco formatos (cantidad de decimales) seg�n configuraci�n: fepdf.FmtCantidad = conf_fact.get("fmt_cantidad", "0.2") fepdf.FmtPrecio = conf_fact.get("fmt_precio", "0.2") @@ -1044,13 +1044,13 @@ def MostrarPDF(self, archivo, imprimir=False): imp_subtotal = "105.00" fecha_cbte = fecha fecha_venc_pago = fecha - # Fechas del período del servicio facturado (solo si concepto> 1) + # Fechas del per�odo del servicio facturado (solo si concepto> 1) fecha_serv_desde = fecha fecha_serv_hasta = fecha - # campos p/exportación (ej): DOL para USD, indicando cotización: + # campos p/exportaci�n (ej): DOL para USD, indicando cotizaci�n: moneda_id = 'DOL' if '--expo' in sys.argv else 'PES' moneda_ctz = 1 if moneda_id == 'PES' else 14.90 - incoterms = 'FOB' # solo exportación + incoterms = 'FOB' # solo exportaci�n idioma_cbte = 1 # 1: es, 2: en, 3: pt # datos adicionales del encabezado: @@ -1110,7 +1110,7 @@ def MostrarPDF(self, archivo, imprimir=False): importe = "0.00" fepdf.AgregarTributo(tributo_id, desc, base_imp, alic, importe) - # subtotales por alícuota de IVA: + # subtotales por al�cuota de IVA: iva_id = 5 # 21% base_imp = 100 importe = 21 @@ -1119,7 +1119,7 @@ def MostrarPDF(self, archivo, imprimir=False): for id in (4, 6): fepdf.AgregarIva(iva_id=id, base_imp=0.00, importe=0.00) - # detalle de artículos: + # detalle de art�culos: u_mtx = 123456 cod_mtx = 1234567890123 codigo = "P0001" @@ -1137,14 +1137,14 @@ def MostrarPDF(self, archivo, imprimir=False): bonif = 0.00 iva_id = 5 importe = 133.10 - despacho = 'Nº 123456' + despacho = 'N� 123456' dato_a = "Dato A" fepdf.AgregarDetalleItem(u_mtx, cod_mtx, codigo, ds, qty, umed, precio, bonif, iva_id, imp_iva, importe, despacho, dato_a) # descuento general (a tasa 21%): u_mtx = cod_mtx = codigo = None - ds = "Bonificación/Descuento 10%" + ds = "Bonificaci�n/Descuento 10%" qty = precio = bonif = None umed = 99 iva_id = 5 @@ -1157,18 +1157,18 @@ def MostrarPDF(self, archivo, imprimir=False): fepdf.AgregarDetalleItem(u_mtx, cod_mtx, codigo, ds, qty, umed, precio, bonif, iva_id, imp_iva, importe, "") - # descripción (sin importes ni cantidad): + # descripci�n (sin importes ni cantidad): u_mtx = cod_mtx = codigo = None qty = precio = bonif = iva_id = imp_iva = importe = None umed = 0 - ds = "Descripción Ejemplo" + ds = "Descripci�n Ejemplo" fepdf.AgregarDetalleItem(u_mtx, cod_mtx, codigo, ds, qty, umed, precio, bonif, iva_id, imp_iva, importe, "") # Agrego un permiso (ver manual para el desarrollador WSFEXv1) if '--expo' in sys.argv: id_permiso = "99999AAXX999999A" - dst_merc = 225 # país destino de la mercaderia + dst_merc = 225 # pa�s destino de la mercaderia ok = fepdf.AgregarPermiso(id_permiso, dst_merc) # completo campos personalizados de la plantilla: @@ -1207,7 +1207,7 @@ def MostrarPDF(self, archivo, imprimir=False): for k, v in list(conf_pdf.items()): fepdf.AgregarDato(k, v) if k.upper() == 'CUIT': - fepdf.CUIT = v # CUIT del emisor para código de barras + fepdf.CUIT = v # CUIT del emisor para c�digo de barras fepdf.CrearPlantilla(papel=conf_fact.get("papel", "legal"), orientacion=conf_fact.get("orientacion", "portrait")) @@ -1221,7 +1221,7 @@ def MostrarPDF(self, archivo, imprimir=False): elif 'pdf' in fact and fact['pdf']: salida = fact['pdf'] else: - # genero el nombre de archivo según datos de factura + # genero el nombre de archivo seg�n datos de factura d = conf_fact.get('directorio', ".") clave_subdir = conf_fact.get('subdirectorio', 'fecha_cbte') if clave_subdir: @@ -1235,7 +1235,7 @@ def MostrarPDF(self, archivo, imprimir=False): it['letra'] = letra_fact it['numero'] = numero_fact it['mes'] = fact['fecha_cbte'][4:6] - it['año'] = fact['fecha_cbte'][0:4] + it['a�o'] = fact['fecha_cbte'][0:4] fn = ''.join([str(it.get(ff, ff)) for ff in fs]) fn = fn.encode('ascii', 'replace').replace('?', '_') salida = os.path.join(d, "%s.pdf" % fn) @@ -1244,3 +1244,21 @@ def MostrarPDF(self, archivo, imprimir=False): fepdf.GenerarPDF(archivo=salida) if '--mostrar' in sys.argv: fepdf.MostrarPDF(archivo=salida, imprimir='--imprimir' in sys.argv) +#Al pasarle caracteres acentuados +import unicodedata +def strip_accents(text): + + try: + text = unicode(text, 'utf-8') + except NameError: + pass + + text = unicodedata.normalize('NFD', text)\ + .encode('ascii', 'ignore')\ + .decode("utf-8") + return str(text) + + +s = strip_accents('Ñ') + +print s \ No newline at end of file From 98173421b965f620df09b2892a68de02bcb44d24 Mon Sep 17 00:00:00 2001 From: utkarsh Date: Wed, 28 Apr 2021 00:14:44 +0530 Subject: [PATCH 08/11] commit --- pyafipws.iml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 pyafipws.iml diff --git a/pyafipws.iml b/pyafipws.iml new file mode 100644 index 000000000..9e25109ec --- /dev/null +++ b/pyafipws.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file From e2bc5639155c63081bcc13bd722d533f7a7b2f06 Mon Sep 17 00:00:00 2001 From: chazuttu Date: Tue, 1 Jun 2021 02:37:10 +0530 Subject: [PATCH 09/11] updated py3k --- M2Crypto-0.37.1-cp39-cp39-win_amd64.whl | Bin 0 -> 290112 bytes cache/24e95ac2a24a18e07d8fca057d7155da.pkl | Bin 0 -> 809 bytes cache/24e95ac2a24a18e07d8fca057d7155da.xml | 115 ++ cache/273d9007b7636f93fada0091c091a5d3.pkl | Bin 0 -> 13899 bytes cache/273d9007b7636f93fada0091c091a5d3.xml | 1457 +++++++++++++++++ cache/TA-2b4277f5962bd2cb0265c0fac4b32304.xml | 14 + factura.pdf | Bin 0 -> 20828 bytes pyfepdf.py | 20 +- rece.ini | 127 ++ reingart.crt | 17 + reingart.key | 27 + requirements.txt | 2 +- setup.py | 8 +- utils.py | 2 +- wsaa.py | 2 +- wsfev1.py | 2 +- 16 files changed, 1766 insertions(+), 27 deletions(-) create mode 100644 M2Crypto-0.37.1-cp39-cp39-win_amd64.whl create mode 100644 cache/24e95ac2a24a18e07d8fca057d7155da.pkl create mode 100644 cache/24e95ac2a24a18e07d8fca057d7155da.xml create mode 100644 cache/273d9007b7636f93fada0091c091a5d3.pkl create mode 100644 cache/273d9007b7636f93fada0091c091a5d3.xml create mode 100644 cache/TA-2b4277f5962bd2cb0265c0fac4b32304.xml create mode 100644 factura.pdf create mode 100644 rece.ini create mode 100644 reingart.crt create mode 100644 reingart.key diff --git a/M2Crypto-0.37.1-cp39-cp39-win_amd64.whl b/M2Crypto-0.37.1-cp39-cp39-win_amd64.whl new file mode 100644 index 0000000000000000000000000000000000000000..1977ed27a9151c0f7039315357737ea12652166c GIT binary patch literal 290112 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

_QJeB( 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%0Ad$)>8%U($&EiPvChe%`Oubw- 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�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 DIPKO` literal 0 HcmV?d00001 diff --git a/cache/24e95ac2a24a18e07d8fca057d7155da.pkl b/cache/24e95ac2a24a18e07d8fca057d7155da.pkl new file mode 100644 index 0000000000000000000000000000000000000000..93c1b98fc25528af52bea32a91918a324b416eea GIT binary patch literal 809 zcmbV~O>fjN5QZzY`$4xYhy%x-Kw2c^G~z=Q95}#{7O8tikvB1Gi^PsR_Ldwf^;&6e z4F8vLvVoqEAU?#N@ytB)j&Bcsp6>7U-wiEswpAXCvxKu;oSlpO72$sLHQ^f_LJM!R z>>8xhu5m(sHLcjVt&pCL87RLsrGo5}+Zg+yf%n%?ao__h8wIT_6=D9*NeGWCSH?!! zAVUwfM>rpA(GB6lq29%6H2|<}iIdj(0LeWcaeDjFF0x2aq!&1^UAasAKX7w!vMr)F zgwIlMtPhl0H4?=4rcO@b{D$SJ>MWhI1fN1!XToXP<~iX>!YxAAssU`IzF4t-!AlG2 z0^!rY)acVEKjEQkmG8S6B&c^2=_NQAT0dotAcka;;^-Rxk(%lkHtyO{(!=~=G zj;0RA0vjNB_CcEG literal 0 HcmV?d00001 diff --git a/cache/24e95ac2a24a18e07d8fca057d7155da.xml b/cache/24e95ac2a24a18e07d8fca057d7155da.xml new file mode 100644 index 000000000..bc04e814a --- /dev/null +++ b/cache/24e95ac2a24a18e07d8fca057d7155da.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cache/273d9007b7636f93fada0091c091a5d3.pkl b/cache/273d9007b7636f93fada0091c091a5d3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0fe18ba97f070f58e9df0036eaf5e3a4aa9e776f GIT binary patch literal 13899 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 literal 0 HcmV?d00001 diff --git a/cache/273d9007b7636f93fada0091c091a5d3.xml b/cache/273d9007b7636f93fada0091c091a5d3.xml new file mode 100644 index 000000000..c92bdb6fd --- /dev/null +++ b/cache/273d9007b7636f93fada0091c091a5d3.xml @@ -0,0 +1,1457 @@ + + + Web Service orientado al servicio de Facturacion electronica RG2485 V1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Solicitud de Código de Autorización Electrónico (CAE) + + + + + Retorna la cantidad maxima de registros que puede tener una invocacion al metodo FECAESolicitar / FECAEARegInformativo + + + + + Metodo dummy para verificacion de funcionamiento + + + + + Retorna el ultimo comprobante autorizado para el tipo de comprobante / cuit / punto de venta ingresado / Tipo de Emisión + + + + + Consulta Comprobante emitido y su código. + + + + + Rendición de comprobantes asociados a un CAEA. + + + + + Solicitud de Código de Autorización Electrónico Anticipado (CAEA) + + + + + Consulta CAEA informado como sin movimientos. + + + + + Informa CAEA sin movimientos. + + + + + Consultar CAEA emitidos. + + + + + Recupera la cotizacion de la moneda consultada y su fecha + + + + + Recupera el listado de los diferente tributos que pueden ser utilizados en el servicio de autorizacion + + + + + Recupera el listado de monedas utilizables en servicio de autorización + + + + + Recupera el listado de Tipos de Iva utilizables en servicio de autorización. + + + + + Recupera el listado de identificadores para los campos Opcionales + + + + + Recupera el listado de identificadores para el campo Concepto. + + + + + Recupera el listado de puntos de venta registrados y su estado + + + + + Recupera el listado de Tipos de Comprobantes utilizables en servicio de autorización. + + + + + Recupera el listado de Tipos de Documentos utilizables en servicio de autorización. + + + + + Recupera el listado de los diferente paises que pueden ser utilizados en el servicio de autorizacion + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web Service orientado al servicio de Facturacion electronica RG2485 V1 + + + + + + + + \ No newline at end of file diff --git a/cache/TA-2b4277f5962bd2cb0265c0fac4b32304.xml b/cache/TA-2b4277f5962bd2cb0265c0fac4b32304.xml new file mode 100644 index 000000000..65127fd62 --- /dev/null +++ b/cache/TA-2b4277f5962bd2cb0265c0fac4b32304.xml @@ -0,0 +1,14 @@ + + +

+ CN=wsaahomo, O=AFIP, C=AR, SERIALNUMBER=CUIT 33693450239 + SERIALNUMBER=CUIT 20267565393, CN=reingart2019pub + 4186086222 + 2021-05-31T18:01:34.899-03:00 + 2021-06-01T06:01:34.899-03:00 +
+ + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8c3NvIHZlcnNpb249IjIuMCI+CiAgICA8aWQgc3JjPSJDTj13c2FhaG9tbywgTz1BRklQLCBDPUFSLCBTRVJJQUxOVU1CRVI9Q1VJVCAzMzY5MzQ1MDIzOSIgZHN0PSJDTj13c2ZlLCBPPUFGSVAsIEM9QVIiIHVuaXF1ZV9pZD0iMzQ3NDE0MzAwMCIgZ2VuX3RpbWU9IjE2MjI0OTQ4MzQiIGV4cF90aW1lPSIxNjIyNTM4MDk0Ii8+CiAgICA8b3BlcmF0aW9uIHR5cGU9ImxvZ2luIiB2YWx1ZT0iZ3JhbnRlZCI+CiAgICAgICAgPGxvZ2luIGVudGl0eT0iMzM2OTM0NTAyMzkiIHNlcnZpY2U9IndzZmUiIHVpZD0iU0VSSUFMTlVNQkVSPUNVSVQgMjAyNjc1NjUzOTMsIENOPXJlaW5nYXJ0MjAxOXB1YiIgYXV0aG1ldGhvZD0iY21zIiByZWdtZXRob2Q9IjIyIj4KICAgICAgICAgICAgPHJlbGF0aW9ucz4KICAgICAgICAgICAgICAgIDxyZWxhdGlvbiBrZXk9IjIwMjY3NTY1MzkzIiByZWx0eXBlPSI0Ii8+CiAgICAgICAgICAgIDwvcmVsYXRpb25zPgogICAgICAgIDwvbG9naW4+CiAgICA8L29wZXJhdGlvbj4KPC9zc28+Cg== + D3xwOIiUOSWxqNk52WrqX2BLMMcvNxT6qVlaDNNO2Z2QvKvdAOckXbo0x70DWkD7C67wKyHB+USbXBFGsZgzmACJwXG32RtC2ryL0KC/FbomfzH4+yakqHze6iar465DIb+eZRs+r+aQG1hz8jbdBWQEwIAX2SY+K7wYlr4YYmU= + + diff --git a/factura.pdf b/factura.pdf new file mode 100644 index 0000000000000000000000000000000000000000..90d4e44d16b67923f9ead4ad85661073d73d30c8 GIT binary patch literal 20828 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 literal 0 HcmV?d00001 diff --git a/pyfepdf.py b/pyfepdf.py index d5c8c30df..8f17ebb0e 100644 --- a/pyfepdf.py +++ b/pyfepdf.py @@ -10,7 +10,7 @@ # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. -from . import utils +import utils from fpdf import Template from decimal import Decimal from io import StringIO @@ -1244,21 +1244,3 @@ def MostrarPDF(self, archivo, imprimir=False): fepdf.GenerarPDF(archivo=salida) if '--mostrar' in sys.argv: fepdf.MostrarPDF(archivo=salida, imprimir='--imprimir' in sys.argv) -#Al pasarle caracteres acentuados -import unicodedata -def strip_accents(text): - - try: - text = unicode(text, 'utf-8') - except NameError: - pass - - text = unicodedata.normalize('NFD', text)\ - .encode('ascii', 'ignore')\ - .decode("utf-8") - return str(text) - - -s = strip_accents('Ñ') - -print s \ No newline at end of file diff --git a/rece.ini b/rece.ini new file mode 100644 index 000000000..c873bae58 --- /dev/null +++ b/rece.ini @@ -0,0 +1,127 @@ +# EJEMPLO de archivo de configuración de la interfaz PyAfipWs +# DEBE CAMBIAR Certificado (CERT) y Clave Privada (PRIVATEKEY) +# Para producción debe descomentar las URL (sacar ##) +# Más información: +# http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs#Configuración + +[WSAA] +CERT=reingart.crt +PRIVATEKEY=reingart.key +##URL=https://wsaa.afip.gov.ar/ws/services/LoginCms + +[WSFE] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +##URL=https://servicios1.afip.gov.ar/wsfe/service.asmx + +[WSFEv1] +CUIT=20267565393 +CAT_IVA=1 +PTO_VTA=97 +ENTRADA=entrada.txt +SALIDA=salida.txt +##URL=https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL + +[WSMTXCA] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +Reprocesar= S +##URL=https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService + +[WSBFE] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +##URL=https://servicios1.afip.gov.ar/wsfe/service.asmx + +[WSFEX] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +##URL=https://servicios1.afip.gov.ar/wsfe/service.asmx + +[WSCT] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +Reprocesar= S +##URL=https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService + +[WSCDC] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +##URL=https://serviciosjava.afip.gob.ar/wsct/CTService?wsdl + +[WS-SR-PADRON-A4] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +##URL=https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA4?wsdl + +[WS-SR-PADRON-A5] +CUIT=20267565393 +ENTRADA=entrada.txt +SALIDA=salida.txt +##URL=https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5?wsdl + +[FACTURA] +ARCHIVO=tipo,letra,numero +FORMATO=factura.csv +PAPEL=legal +ORIENTACION=portrait +DIRECTORIO=. +SUBDIRECTORIO= +LOCALE=Spanish_Argentina.1252 +FMT_CANTIDAD=0.4 +FMT_PRECIO=0.3 +CANT_POS=izq +ENTRADA=factura.txt +SALIDA=factura.pdf + +[PDF] +LOGO=plantillas/logo.png +EMPRESA=Empresa de Prueba +MEMBRETE1=Direccion de Prueba +MEMBRETE2=Capital Federal +CUIT=CUIT 30-00000000-0 +IIBB=IIBB 30-00000000-0 +IVA=IVA Responsable Inscripto +INICIO=Inicio de Actividad: 01/04/2006 +BORRADOR=HOMOLOGACION + +[MAIL] +SERVIDOR=adan.nsis.com.ar +PUERTO=25 +USUARIO=no.responder@nsis.com.ar +CLAVE=noreplyauto123 +MOTIVO=Factura Electronica Nro. NUMERO +CUERPO=Se adjunta Factura en formato PDF +HTML=Se adjunta factura electronica en formato PDF +REMITENTE=Facturador PyAfipWs + +#[BASE_DATOS] +#DRIVER=PGSQL +#SERVER=localhost +#DATABASE=pyafipws +#UID=pyafipws +#PWD=pyafipws + +[DBF] +Encabezado = encabeza.dbf +Tributo = tributo.dbf +Iva = iva.dbf +Comprobante Asociado = cbteasoc.dbf +Detalle = detalles.dbf +Permiso = permiso.dbf +Dato = dato.dbf +Datos Opcionales = opcional.dbf +Forma Pago = formapago.dbf + +#[PROXY] +#HOST=localhost +#PORT=8000 +#USER=mariano +#PASS=reingart diff --git a/reingart.crt b/reingart.crt new file mode 100644 index 000000000..cf6000e25 --- /dev/null +++ b/reingart.crt @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIIDTzCCAjegAwIBAgIIHJrQuzZhH+gwDQYJKoZIhvcNAQENBQAwODEaMBgGA1UEAwwRQ29tcHV0 +YWRvcmVzIFRlc3QxDTALBgNVBAoMBEFGSVAxCzAJBgNVBAYTAkFSMB4XDTE5MDcxMzE2NDEwM1oX +DTIxMDcxMjE2NDEwM1owNTEYMBYGA1UEAwwPcmVpbmdhcnQyMDE5cHViMRkwFwYDVQQFExBDVUlU +IDIwMjY3NTY1MzkzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Mc/IZ8X3x8YhIa0 +SQ89VjSOhEdYcJnffa5QqAtqISQ3Di382B4XOHDRg3CDzt/jck3fKEV7K/wfgS33KDAv2EWW2mTJ +aJZHlLSY05CtaesHpxlBCYlzTc7z0aABOx+e9S1R80R5LZ1a+kzEcgODeHi4PKu0Z1qHvkotrZ9F +Ex2kl3bwdX4LjyxCKdeqL4tY1OOkpNq6sT5geGBsHn8yQNVz7iP2OUYO7Acs3so7GLLrZtb/zWx1 +xyWB5PVs8DGY2iK22H5k2jnvas9gzntshvRG6c+/skWOG7vtFp2qL7TvAathE5YQEp/2T1iLcgxr +qtUV2K7LHifvJghKxgN15QIDAQABo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFLOy0//9 +6bre3o2vESGc1iB98k9vMB0GA1UdDgQWBBSNWsHTyranSfK1GGDUOLjPYe3Z6TAOBgNVHQ8BAf8E +BAMCBeAwDQYJKoZIhvcNAQENBQADggEBAFWW1a5sDm4e+JrZgCM4CwHhy2JeU9a8Glqpc/VWkf9v +XYaacHtARRdNgZNXbEB4tZVYIUcLEKvMgvEs2owllXiSxlIhWiCWPdRW8aocNASqBD7K3U1zppZy +bC8ZXOwvD2Wh8U9s6crX7QX9Ctx2aS19a7ipHHfAOG8Z90TzbluIIFPggiLKX76LVuW8c4zB5dgQ +JsCanML4jMwMUj9UEIulqYY3u835zhPwKFtTMhnea332cwLdApMDU5uMYVa6dpd58Rb36UTDvJc8 +OHV7eShgGSajEZFkvuwjssnFka1A5LbyE1CNAJnn/nWH84uo6dDj59Em1TgXDQ+g/RsbiZQ= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/reingart.key b/reingart.key new file mode 100644 index 000000000..56b154f3e --- /dev/null +++ b/reingart.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEA3Mc/IZ8X3x8YhIa0SQ89VjSOhEdYcJnffa5QqAtqISQ3Di38 +2B4XOHDRg3CDzt/jck3fKEV7K/wfgS33KDAv2EWW2mTJaJZHlLSY05CtaesHpxlB +CYlzTc7z0aABOx+e9S1R80R5LZ1a+kzEcgODeHi4PKu0Z1qHvkotrZ9FEx2kl3bw +dX4LjyxCKdeqL4tY1OOkpNq6sT5geGBsHn8yQNVz7iP2OUYO7Acs3so7GLLrZtb/ +zWx1xyWB5PVs8DGY2iK22H5k2jnvas9gzntshvRG6c+/skWOG7vtFp2qL7TvAath +E5YQEp/2T1iLcgxrqtUV2K7LHifvJghKxgN15QIDAQABAoIBAFLwVvsedS1Q1TkU +Ea5Ql05HODLhSowigh8I2SwH/bqtjDE7fX0C8N43I74pCpsw6JUMRAUw9PC1KnCw +/+SNFaw9mEo7Cp7LteBbZ/4yn7LmpF1V02Ttye81C8t4PH4lhuW8PMkStCM6te7J +4BKk10Lutuez6XXaQJxv6XEMIDrpeUC34huyLEeld7SekoO2YvBHEob24O8ZD7oD +ti1m6GFHDCRzose9dJ63CmFQExsToOYDBpqrFvhZ3tc//bEvMiIxIb91KPFk//L5 ++QnuDMuvuJMAU4A7Xmool9yiz7/WsFxQceQC0OPmj+btc+BK54+LhQo+pXwy5Zb4 +mCND1BECgYEA8hbfQwY4rvcjdKfJzU8ypPDgTK2kSmEZS2jQhKl2W+6a8Amc20CC +S1qMXKTEFccpZjJxvR3nywcQZ1n5atVUAeHP3VEhmNkLpOYDD2WEsjgfmDYWbuo4 +4fRENAa7PPJzv1EnBxzMFZowUGKMfGYP/0jhtAhTkBAfpKQO45QKrasCgYEA6Xbj +wwZ/TMUaJ0iswQcEk2EkoTreWPWT8A2nnBSczcBUPvrIKd5EnOLBImi/hJLO+sTN +8RBpEwcc+RdUId6BjaOQ/TVv7NX86DyS9lL4kjHrOQJoL0s+OQ17nI8BCNmIY9tD +8Zq8818ctyDwjC36wt5yG4E1rPzkdij8XYwaOq8CgYEAzj5QHJC7T8w6h5K+qMvV +EJIp9Qll0vwgCY+VPcAFltKTavY1jNDLcBkHRZIVf5w6F9fX8E7+/4fYIMSVab+u +nx/a7+jDn60hb22Jo99QCmkn+Yvy1rFynoV0aYJml8jSdWZUwol1EN5YVNNwbjah +YFKd/rutPSmPW7ts99NSuZsCgYEAldiJN5PkARJBRxWOTBaFCVNAf3uZWt/EpD8f +ZT6Vpjnb2NB9yOGwiEHCVKOGyUCxOKM4y5EM3/mgzv/6MALwhEiHtv2laQ2v1h+K +9C8s/CiuIVk6JaDVvyi4PjRLJbL5p54Ebf4zaMGTXLb3rgGVAZ5k/uJf4TgwKucD +k8dozmECgYEAtoKnCF8cQaJGKgr2bJt3JQb2gn2xO+tNW7LQStKBSpzYY8S1AuYB +JNrYl5eGXfT22zOsETPlO/xy2d6l4+9h7g3sn21FSVC0Ivgf6Utq40aI1rG5BbF6 +kFjXA2mIhgAUpIZYDdu7tQq8ysN/odAOANtBz8f3MbPzRuCn26/Xm0Y= +-----END RSA PRIVATE KEY----- diff --git a/requirements.txt b/requirements.txt index df47d9581..8a43dbb47 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ httplib2>=0.12.0 git+https://github.com/pysimplesoap/pysimplesoap.git@stable_py3k#pysimplesoap -m2crypto>=0.18 +# m2crypto>=0.18 fpdf>=1.7.2 dbf>=0.88.019 Pillow>=2.0.0 diff --git a/setup.py b/setup.py index 4c4cf4244..4be73f64e 100644 --- a/setup.py +++ b/setup.py @@ -76,7 +76,7 @@ import designer except ImportError: # el script pyfpdf/tools/designer.py no esta disponible: - print "IMPORTANTE: no se incluye el diseñador de plantillas PDF" + print("IMPORTANTE: no se incluye el diseñador de plantillas PDF") # parametros para setup: kwargs = {} @@ -92,9 +92,9 @@ ".", glob.glob(r'c:\Program Files\Mercurial\msvc*.dll') + glob.glob(r'c:\Program Files\Mercurial\Microsoft.VC90.CRT.manifest'), )] - # fix permission denied runtime error on win32com.client.gencache.GenGeneratePath - # (expects a __init__.py not pyc, also dicts.dat pickled or _LoadDicts/_SaveDicts will fail too) - # NOTE: on windows 8.1 64 bits, this is stored in C:\Users\REINGART\AppData\\Local\Temp\gen_py\2.7 + # fix permission denied runtime error on win32com.client.gencache.GenGeneratePath + # (expects a __init__.py not pyc, also dicts.dat pickled or _LoadDicts/_SaveDicts will fail too) + # NOTE: on windows 8.1 64 bits, this is stored in C:\Users\REINGART\AppData\\Local\Temp\gen_py\2.7 from win32com.client import gencache gen_py_path = gencache.GetGeneratePath() or r"C:\Python27\lib\site-packages\win32com\gen_py" data_files += [( diff --git a/utils.py b/utils.py index 4b819e763..873358398 100644 --- a/utils.py +++ b/utils.py @@ -866,7 +866,7 @@ def norm(x, encoding="latin1"): def date(fmt=None, timestamp=None): "Manejo de fechas (simil PHP)" if fmt == 'U': # return timestamp - t = datetime.datetime.now() + t = datetime.datetime.utcnow() return int(time.mktime(t.timetuple())) if fmt == 'c': # return isoformat d = datetime.datetime.fromtimestamp(timestamp) diff --git a/wsaa.py b/wsaa.py index 5cefbcb94..4639e3584 100644 --- a/wsaa.py +++ b/wsaa.py @@ -31,7 +31,7 @@ import warnings import unicodedata from pysimplesoap.client import SimpleXMLElement -from .utils import inicializar_y_capturar_excepciones, BaseWS, get_install_dir, \ +from utils import inicializar_y_capturar_excepciones, BaseWS, get_install_dir, \ exception_info, safe_console, date try: from M2Crypto import BIO, Rand, SMIME, SSL diff --git a/wsfev1.py b/wsfev1.py index 9d30eedb6..a90cf505d 100644 --- a/wsfev1.py +++ b/wsfev1.py @@ -30,7 +30,7 @@ import datetime import os import sys -from .utils import verifica, inicializar_y_capturar_excepciones, BaseWS, get_install_dir +from utils import verifica, inicializar_y_capturar_excepciones, BaseWS, get_install_dir HOMO = False # solo homologaci�n TYPELIB = False # usar librer�a de tipos (TLB) From 9cd7646990dd3da03af3a34c0cdc62cb082b91bd Mon Sep 17 00:00:00 2001 From: Utkarsh <73628133+chazuttu@users.noreply.github.com> Date: Tue, 1 Jun 2021 02:38:18 +0530 Subject: [PATCH 10/11] Delete reingart.crt --- reingart.crt | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 reingart.crt diff --git a/reingart.crt b/reingart.crt deleted file mode 100644 index cf6000e25..000000000 --- a/reingart.crt +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDTzCCAjegAwIBAgIIHJrQuzZhH+gwDQYJKoZIhvcNAQENBQAwODEaMBgGA1UEAwwRQ29tcHV0 -YWRvcmVzIFRlc3QxDTALBgNVBAoMBEFGSVAxCzAJBgNVBAYTAkFSMB4XDTE5MDcxMzE2NDEwM1oX -DTIxMDcxMjE2NDEwM1owNTEYMBYGA1UEAwwPcmVpbmdhcnQyMDE5cHViMRkwFwYDVQQFExBDVUlU -IDIwMjY3NTY1MzkzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Mc/IZ8X3x8YhIa0 -SQ89VjSOhEdYcJnffa5QqAtqISQ3Di382B4XOHDRg3CDzt/jck3fKEV7K/wfgS33KDAv2EWW2mTJ -aJZHlLSY05CtaesHpxlBCYlzTc7z0aABOx+e9S1R80R5LZ1a+kzEcgODeHi4PKu0Z1qHvkotrZ9F -Ex2kl3bwdX4LjyxCKdeqL4tY1OOkpNq6sT5geGBsHn8yQNVz7iP2OUYO7Acs3so7GLLrZtb/zWx1 -xyWB5PVs8DGY2iK22H5k2jnvas9gzntshvRG6c+/skWOG7vtFp2qL7TvAathE5YQEp/2T1iLcgxr -qtUV2K7LHifvJghKxgN15QIDAQABo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFLOy0//9 -6bre3o2vESGc1iB98k9vMB0GA1UdDgQWBBSNWsHTyranSfK1GGDUOLjPYe3Z6TAOBgNVHQ8BAf8E -BAMCBeAwDQYJKoZIhvcNAQENBQADggEBAFWW1a5sDm4e+JrZgCM4CwHhy2JeU9a8Glqpc/VWkf9v -XYaacHtARRdNgZNXbEB4tZVYIUcLEKvMgvEs2owllXiSxlIhWiCWPdRW8aocNASqBD7K3U1zppZy -bC8ZXOwvD2Wh8U9s6crX7QX9Ctx2aS19a7ipHHfAOG8Z90TzbluIIFPggiLKX76LVuW8c4zB5dgQ -JsCanML4jMwMUj9UEIulqYY3u835zhPwKFtTMhnea332cwLdApMDU5uMYVa6dpd58Rb36UTDvJc8 -OHV7eShgGSajEZFkvuwjssnFka1A5LbyE1CNAJnn/nWH84uo6dDj59Em1TgXDQ+g/RsbiZQ= ------END CERTIFICATE----- \ No newline at end of file From c67ccc43e1d2bc3db17fb3bb9e20b44926765d18 Mon Sep 17 00:00:00 2001 From: Utkarsh <73628133+chazuttu@users.noreply.github.com> Date: Tue, 1 Jun 2021 02:38:29 +0530 Subject: [PATCH 11/11] Delete reingart.key --- reingart.key | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 reingart.key diff --git a/reingart.key b/reingart.key deleted file mode 100644 index 56b154f3e..000000000 --- a/reingart.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEA3Mc/IZ8X3x8YhIa0SQ89VjSOhEdYcJnffa5QqAtqISQ3Di38 -2B4XOHDRg3CDzt/jck3fKEV7K/wfgS33KDAv2EWW2mTJaJZHlLSY05CtaesHpxlB -CYlzTc7z0aABOx+e9S1R80R5LZ1a+kzEcgODeHi4PKu0Z1qHvkotrZ9FEx2kl3bw -dX4LjyxCKdeqL4tY1OOkpNq6sT5geGBsHn8yQNVz7iP2OUYO7Acs3so7GLLrZtb/ -zWx1xyWB5PVs8DGY2iK22H5k2jnvas9gzntshvRG6c+/skWOG7vtFp2qL7TvAath -E5YQEp/2T1iLcgxrqtUV2K7LHifvJghKxgN15QIDAQABAoIBAFLwVvsedS1Q1TkU -Ea5Ql05HODLhSowigh8I2SwH/bqtjDE7fX0C8N43I74pCpsw6JUMRAUw9PC1KnCw -/+SNFaw9mEo7Cp7LteBbZ/4yn7LmpF1V02Ttye81C8t4PH4lhuW8PMkStCM6te7J -4BKk10Lutuez6XXaQJxv6XEMIDrpeUC34huyLEeld7SekoO2YvBHEob24O8ZD7oD -ti1m6GFHDCRzose9dJ63CmFQExsToOYDBpqrFvhZ3tc//bEvMiIxIb91KPFk//L5 -+QnuDMuvuJMAU4A7Xmool9yiz7/WsFxQceQC0OPmj+btc+BK54+LhQo+pXwy5Zb4 -mCND1BECgYEA8hbfQwY4rvcjdKfJzU8ypPDgTK2kSmEZS2jQhKl2W+6a8Amc20CC -S1qMXKTEFccpZjJxvR3nywcQZ1n5atVUAeHP3VEhmNkLpOYDD2WEsjgfmDYWbuo4 -4fRENAa7PPJzv1EnBxzMFZowUGKMfGYP/0jhtAhTkBAfpKQO45QKrasCgYEA6Xbj -wwZ/TMUaJ0iswQcEk2EkoTreWPWT8A2nnBSczcBUPvrIKd5EnOLBImi/hJLO+sTN -8RBpEwcc+RdUId6BjaOQ/TVv7NX86DyS9lL4kjHrOQJoL0s+OQ17nI8BCNmIY9tD -8Zq8818ctyDwjC36wt5yG4E1rPzkdij8XYwaOq8CgYEAzj5QHJC7T8w6h5K+qMvV -EJIp9Qll0vwgCY+VPcAFltKTavY1jNDLcBkHRZIVf5w6F9fX8E7+/4fYIMSVab+u -nx/a7+jDn60hb22Jo99QCmkn+Yvy1rFynoV0aYJml8jSdWZUwol1EN5YVNNwbjah -YFKd/rutPSmPW7ts99NSuZsCgYEAldiJN5PkARJBRxWOTBaFCVNAf3uZWt/EpD8f -ZT6Vpjnb2NB9yOGwiEHCVKOGyUCxOKM4y5EM3/mgzv/6MALwhEiHtv2laQ2v1h+K -9C8s/CiuIVk6JaDVvyi4PjRLJbL5p54Ebf4zaMGTXLb3rgGVAZ5k/uJf4TgwKucD -k8dozmECgYEAtoKnCF8cQaJGKgr2bJt3JQb2gn2xO+tNW7LQStKBSpzYY8S1AuYB -JNrYl5eGXfT22zOsETPlO/xy2d6l4+9h7g3sn21FSVC0Ivgf6Utq40aI1rG5BbF6 -kFjXA2mIhgAUpIZYDdu7tQq8ysN/odAOANtBz8f3MbPzRuCn26/Xm0Y= ------END RSA PRIVATE KEY-----