diff --git a/wsfev1.py b/wsfev1.py index a97170d3d..68e24bed7 100644 --- a/wsfev1.py +++ b/wsfev1.py @@ -134,7 +134,7 @@ def CrearFactura(self, concepto=1, tipo_doc=80, nro_doc="", tipo_cbte=1, punto_v 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 + moneda_id="PES", moneda_ctz="1.0000", cond_iva_receptor=1, act_codigos=[], caea=None, fecha_hs_gen=None, **kwargs ): "Creo un objeto factura (interna)" @@ -148,6 +148,8 @@ 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, + 'cond_iva_receptor': cond_iva_receptor, + 'act_codigos': act_codigos, 'concepto': concepto, 'fecha_hs_gen': fecha_hs_gen, 'cbtes_asoc': [], 'tributos': [], @@ -254,6 +256,7 @@ def CAESolicitar(self): 'FchVtoPago': f.get('fecha_venc_pago'), 'MonId': f['moneda_id'], 'MonCotiz': f['moneda_ctz'], + 'CondicionIVAReceptorId': f['cond_iva_receptor'], 'CbtesAsoc': f['cbtes_asoc'] and [ {'CbteAsoc': { 'Tipo': cbte_asoc['tipo'], @@ -290,6 +293,12 @@ def CAESolicitar(self): 'DocNro': comprador['doc_nro'], 'Porcentaje': comprador['porcentaje'], }} for comprador in f['compradores']] or None, + **({'Actividades': [ + {'Actividad': { + 'Id': actividad_id, + }} + for actividad_id in f['act_codigos'] + ]} if f['act_codigos'] else {}) } }] }) @@ -392,6 +401,7 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False): 'FchVtoPago': f.get('fecha_venc_pago'), 'MonId': f['moneda_id'], 'MonCotiz': float(f['moneda_ctz']), + 'CondicionIVAReceptorId': f['cond_iva_receptor'], 'CbtesAsoc': [ {'CbteAsoc': { 'Tipo': cbte_asoc['tipo'], @@ -428,6 +438,12 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False): 'DocNro': comprador['doc_nro'], 'Porcentaje': comprador['porcentaje'], }} for comprador in f['compradores']], + **({'Actividades': [ + {'Actividad': { + 'Id': actividad_id, + }} + for actividad_id in f['act_codigos'] + ]} if f['act_codigos'] else {}) } verifica(verificaciones, resultget.copy(), difs) if difs: @@ -455,6 +471,10 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False): 'fecha_venc_pago': resultget.get('FchVtoPago'), 'moneda_id': resultget.get('MonId'), 'moneda_ctz': resultget.get('MonCotiz'), + 'cond_iva_receptor': resultget.get('CondicionIVAReceptorId'), + 'act_codigos': [ + actividad['Actividad']['Id'] + for actividad in resultget.get('Actividades', [])], 'cbtes_asoc': [ { 'tipo': cbte_asoc['CbteAsoc']['Tipo'], @@ -574,6 +594,7 @@ def CAESolicitarX(self): 'FchVtoPago': f.get('fecha_venc_pago'), 'MonId': f['moneda_id'], 'MonCotiz': f['moneda_ctz'], + 'CondicionIVAReceptorId': f['cond_iva_receptor'], 'CbtesAsoc': [ {'CbteAsoc': { 'Tipo': cbte_asoc['tipo'], @@ -604,6 +625,12 @@ def CAESolicitarX(self): 'Id': opcional['opcional_id'], 'Valor': opcional['valor'], }} for opcional in f['opcionales']] or None, + **({'Actividades': [ + {'Actividad': { + 'Id': actividad_id, + }} + for actividad_id in f['act_codigos'] + ]} if f['act_codigos'] else {}) } } for f in self.facturas] }) @@ -763,6 +790,7 @@ def CAEARegInformativo(self): 'FchVtoPago': f.get('fecha_venc_pago'), 'MonId': f['moneda_id'], 'MonCotiz': f['moneda_ctz'], + 'CondicionIVAReceptorId': f['cond_iva_receptor'], 'CbtesAsoc': [ {'CbteAsoc': { 'Tipo': cbte_asoc['tipo'], @@ -798,6 +826,12 @@ def CAEARegInformativo(self): }} for opcional in f['opcionales']] or None, 'CAEA': f['caea'], 'CbteFchHsGen': f.get('fecha_hs_gen'), + **({'Actividades': [ + {'Actividad': { + 'Id': actividad_id, + }} + for actividad_id in f['act_codigos'] + ]} if f['act_codigos'] else {}) } }] }) @@ -1122,6 +1156,9 @@ def main(): wsfev1.AgregarComprador(80, "30500010912", 99.99) wsfev1.AgregarComprador(80, "30999032083", 0.01) + act_codes = [883101, 883102] + wsfev1.EstablecerCampoFactura("act_codigos", act_codes) + # datos de Factura de Crédito Electrónica MiPyMEs (FCE): if '--fce' in sys.argv: wsfev1.AgregarOpcional(2101, "2850590940090418135201") # CBU @@ -1220,8 +1257,10 @@ def main(): p_assert_eq(wsfev1.ObtenerTagXml('CbteFch'), wsfev1.FechaCbte) p_assert_eq(wsfev1.ObtenerTagXml('MonId'), "PES") p_assert_eq(wsfev1.ObtenerTagXml('MonCotiz'), "1") + p_assert_eq(wsfev1.ObtenerTagXml('CondicionIVAReceptorId'), "1") p_assert_eq(wsfev1.ObtenerTagXml('DocTipo'), "80") p_assert_eq(wsfev1.ObtenerTagXml('DocNro'), "30500010912") + p_assert_eq(wsfev1.ObtenerTagXml('Actividades', 'Actividad', 0, 'Id'), "883101") if "--parametros" in sys.argv: import codecs