JeanCarlosChavarriaHughes / API_Hacienda

API de comunicacion con hacienda
https://crlibre.org/qa/
GNU Affero General Public License v3.0
1 stars 1 forks source link

issue #12 #15

Closed JeanCarlosChavarriaHughes closed 5 years ago

JeanCarlosChavarriaHughes commented 5 years ago

Codigo subido para Code Review

De acuerdo con la tabla B del documento: https://www.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.3/ANEXOS%20Y%20ESTRUCTURAS_V4.3.pdf

-# Para genXMLFe Se agrega codigo a detalles Se agrega codigoComercial (tipo y código) a detalles Se agrega unidadMedidaComercial a detalles Se agrega Descuento (MontoDescuento y NaturalezaDescuento) Se elimina MontoDescuento Se elimina NaturalezaDescuento Se agrega baseImponible Se modifica el nodo Impuesto Se agrega impuestoNeto

-# Para genXMLNC Se agrega codigo a detalles Se agrega codigoComercial (tipo y código) a detalles Se agrega unidadMedidaComercial a detalles Se agrega Descuento (MontoDescuento y NaturalezaDescuento) Se elimina MontoDescuento Se elimina NaturalezaDescuento Se agrega baseImponible Se modifica el nodo Impuesto Se agrega impuestoNeto Se agrega PartidaArancelaria

-# Para genXMLND Se agrega codigo a detalles Se agrega codigoComercial (tipo y código) a detalles Se agrega unidadMedidaComercial a detalles Se agrega Descuento (MontoDescuento y NaturalezaDescuento) Se elimina MontoDescuento Se elimina NaturalezaDescuento Se agrega baseImponible Se modifica el nodo Impuesto Se agrega impuestoNeto Se agrega PartidaArancelaria

-# Para genXMLTe Se agrega codigo a detalles Se agrega codigoComercial (tipo y código) a detalles Se agrega unidadMedidaComercial a detalles Se agrega Descuento (MontoDescuento y NaturalezaDescuento) Se elimina MontoDescuento Se elimina NaturalezaDescuento Se agrega baseImponible Se modifica el nodo Impuesto Se agrega impuestoNeto

Ejemplo json

{
   "1":{
      "Codigo":,
      "CodigoComercial":{
         "1":{
            "tipo": "3",
            "Codigo": "5"
         }
      },
      "cantidad":"1",
      "unidadMedida":"Sp",
      "detalle":"Impresora",
      "precioUnitario":"10000",
      "montoTotal":"10000",
      "Descuento": {
         "1":{
            "MontoDescuento": 3,
            "NaturalezaDescuento": "una naturalezaDescuento",
         }
      },
      "subtotal":"9900",
      "BaseImponible": ,
      "Impuesto":{
         "1":{
            "Codigo":,
            "CodigoTarifa":,
            "Tarifa":,
            "FactorIVA":,
            "Monto":,
            "MontoExportacion":,
            "Exoneración":{
                  "Tipodocumento":,
                  "NumeroDocumento":,
                  "NombreInstitucion":,
                  "FechaEmision":,
                  "PorcentajeExoneracion":,
                  "MontoExoneracion":
            },
         }
      },
      "ImpuestoNeto":,
      "montoTotalLinea":"9900",
   }
}
JeanCarlosChavarriaHughes commented 5 years ago

@mara9303
Puedes revisar mi codigo y dar feedback.?

mara9303 commented 5 years ago

El codigo de producto/servicio no es requerido aún, ni siquiera hacienda ha dado la lista de ellos. Por todo lo demás parece estar bien. Adjunto POST que realicé y RESPONSE

POST: http://localhost/www/api.php?w=genXML&r=gen_xml_fe&clave=50610061900310262197200100001010000001334180731959&consecutivo=00100001010000001334&fecha_emision=2019-06-10T10:42:43-06:00&emisor_nombre=Sistemas Inteligente SRL&emisor_tipo_indetif=02&emisor_num_identif=3102621972&nombre_comercial=Sistemas Inteligente SRL&emisor_provincia=1&emisor_canton=13&emisor_distrito=05&emisor_barrio=02&emisor_otras_senas=Detras del Walmart&emisor_cod_pais_tel=506&emisor_tel=84545845&emisor_email=michael@pruebas.cr&receptor_nombre=Bryan Navarro&receptor_tipo_identif=01&receptor_num_identif=305460345&receptor_cod_pais_tel=506&receptor_tel=24758957&receptor_email=bnavarro@pruebas.cr1&condicion_venta=02&plazo_credito=1 días&medio_pago=04&cod_moneda=USD&tipo_cambio=588.66&total_serv_gravados=0&total_serv_exentos=9497.00000&total_merc_gravada=0&total_merc_exenta=0&total_gravados=0&total_exento=9497.00000&total_ventas=9497.00000&total_descuentos=0&total_ventas_neta=9497.00000&total_impuestos=0&total_comprobante=9497.00000&otros=&codigo_actividad=702002&total_serv_exonerados=9497.00000&total_merc_exonerada=0&total_exonerado=9497.00000&totalIVADevuelto=0&totalOtrosCargos=0&infoRefeTipoDoc=1&infoRefeNumero=2&infoRefeFechaEmision=4&infoRefeCodigo=1&infoRefeRazon=Calidad&detalles=[ { "cantidad": 1, "unidadMedida": "Sp", "detalle": "Multa por Morosidad / febrero 2019, Filial FF02", "precioUnitario": 9497, "montoTotal": 9497, "subtotal": 9497, "montoTotalLinea": 9497, "unidadMedidaComercial": "1 Multa", "codigo": "", "baseImponible": "", "impuestoNeto": 0, "codigoComercial": [ { "codigo": "04", "tipo": "MICROSOFT" } ], "descuento": [ { "montoDescuento": 0, "naturalezaDescuento": 0 } ], "impuesto": [ { "codigo": "01", "monto": 0, "codigoTarifa": "01", "tarifa": 0, "factorIVA": 0, "montoExportacion": 0, "exoneracion": { "tipoDocumento": "01", "numeroDocumento": "BA3-21444-03", "nombreInstitucion": "Ba3 Software Corporation", "fechaEmision": "2018-10-10T09:00:00-06:00", "montoExoneracion": 0, "porcentajeExoneracion": 1 } } ] } ]&otrosType=

RESPONSE: { "resp": { "clave": "50610061900310262197200100001010000001334180731959", "xml": "PD94bWwgdmVyc2lvbiA9ICIxLjAiIGVuY29kaW5nID0gInV0Zi04Ij8+DQogICAgPEZhY3R1cmFFbGVjdHJvbmljYQ0KICAgIHhtbG5zPSJodHRwczovL2Nkbi5jb21wcm9iYW50ZXNlbGVjdHJvbmljb3MuZ28uY3IveG1sLXNjaGVtYXMvdjQuMy9mYWN0dXJhRWxlY3Ryb25pY2EiDQogICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSINCiAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4NCiAgICAgICAgPENsYXZlPjUwNjEwMDYxOTAwMzEwMjYyMTk3MjAwMTAwMDAxMDEwMDAwMDAxMzM0MTgwNzMxOTU5PC9DbGF2ZT4NCiAgICAgICAgPENvZGlnb0FjdGl2aWRhZD43MDIwMDI8L0NvZGlnb0FjdGl2aWRhZD4NCiAgICAgICAgPE51bWVyb0NvbnNlY3V0aXZvPjAwMTAwMDAxMDEwMDAwMDAxMzM0PC9OdW1lcm9Db25zZWN1dGl2bz4NCiAgICAgICAgPEZlY2hhRW1pc2lvbj4yMDE5LTA2LTEwVDEwOjQyOjQzLTA2OjAwPC9GZWNoYUVtaXNpb24+DQogICAgICAgIDxFbWlzb3I+DQogICAgICAgICAgICA8Tm9tYnJlPlNpc3RlbWFzIEludGVsaWdlbnRlIFNSTDwvTm9tYnJlPg0KICAgICAgICAgICAgPElkZW50aWZpY2FjaW9uPg0KICAgICAgICAgICAgICAgIDxUaXBvPjAyPC9UaXBvPg0KICAgICAgICAgICAgICAgIDxOdW1lcm8+MzEwMjYyMTk3MjwvTnVtZXJvPg0KICAgICAgICAgICAgPC9JZGVudGlmaWNhY2lvbj4NCiAgICAgICAgICAgIDxOb21icmVDb21lcmNpYWw+U2lzdGVtYXMgSW50ZWxpZ2VudGUgU1JMPC9Ob21icmVDb21lcmNpYWw+DQogICAgICAgIDxVYmljYWNpb24+DQogICAgICAgICAgICA8UHJvdmluY2lhPjE8L1Byb3ZpbmNpYT4NCiAgICAgICAgICAgIDxDYW50b24+MTM8L0NhbnRvbj4NCiAgICAgICAgICAgIDxEaXN0cml0bz4wNTwvRGlzdHJpdG8+PEJhcnJpbz4wMjwvQmFycmlvPg0KICAgICAgICAgICAgICAgIDxPdHJhc1NlbmFzPkRldHJhcyBkZWwgV2FsbWFydDwvT3RyYXNTZW5hcz4NCiAgICAgICAgICAgIDwvVWJpY2FjaW9uPg0KICAgICAgICAgICAgPFRlbGVmb25vPg0KICAgICAgICAgICAgICAgIDxDb2RpZ29QYWlzPjUwNjwvQ29kaWdvUGFpcz4NCiAgICAgICAgICAgICAgICA8TnVtVGVsZWZvbm8+ODQ1NDU4NDU8L051bVRlbGVmb25vPg0KICAgICAgICAgICAgPC9UZWxlZm9ubz48Q29ycmVvRWxlY3Ryb25pY28+bWljaGFlbEBwcnVlYmFzLmNyPC9Db3JyZW9FbGVjdHJvbmljbz4NCiAgICAgICAgPC9FbWlzb3I+PFJlY2VwdG9yPg0KICAgICAgICAgICAgPE5vbWJyZT5CcnlhbiBOYXZhcnJvPC9Ob21icmU+PElkZW50aWZpY2FjaW9uPg0KICAgICAgICAgICAgICAgICAgICA8VGlwbz4wMTwvVGlwbz4NCiAgICAgICAgICAgICAgICAgICAgPE51bWVybz4zMDU0NjAzNDU8L051bWVybz4NCiAgICAgICAgICAgICAgICA8L0lkZW50aWZpY2FjaW9uPjxUZWxlZm9ubz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb2RpZ29QYWlzPjUwNjwvQ29kaWdvUGFpcz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOdW1UZWxlZm9ubz4yNDc1ODk1NzwvTnVtVGVsZWZvbm8+DQogICAgICAgICAgICAgICAgICAgIDwvVGVsZWZvbm8+PENvcnJlb0VsZWN0cm9uaWNvPmJuYXZhcnJvQHBydWViYXMuY3IxPC9Db3JyZW9FbGVjdHJvbmljbz48L1JlY2VwdG9yPg0KICAgICAgICA8Q29uZGljaW9uVmVudGE+MDI8L0NvbmRpY2lvblZlbnRhPg0KICAgICAgICA8UGxhem9DcmVkaXRvPjEgZMOtYXM8L1BsYXpvQ3JlZGl0bz4NCiAgICAgICAgPE1lZGlvUGFnbz4wNDwvTWVkaW9QYWdvPg0KICAgICAgICA8RGV0YWxsZVNlcnZpY2lvPjxMaW5lYURldGFsbGU+DQogICAgICAgICAgICAgICAgICA8TnVtZXJvTGluZWE+MTwvTnVtZXJvTGluZWE+DQogICAgICAgICAgICAgICAgICA8Q2FudGlkYWQ+MTwvQ2FudGlkYWQ+DQogICAgICAgICAgICAgICAgICA8VW5pZGFkTWVkaWRhPlNwPC9VbmlkYWRNZWRpZGE+DQogICAgICAgICAgICAgICAgICA8VW5pZGFkTWVkaWRhQ29tZXJjaWFsPjEgTXVsdGE8L1VuaWRhZE1lZGlkYUNvbWVyY2lhbD4NCiAgICAgICAgICAgICAgICAgIDxEZXRhbGxlPk11bHRhIHBvciBNb3Jvc2lkYWQgLyBmZWJyZXJvIDIwMTksIEZpbGlhbCBGRjAyPC9EZXRhbGxlPg0KICAgICAgICAgICAgICAgICAgPFByZWNpb1VuaXRhcmlvPjk0OTc8L1ByZWNpb1VuaXRhcmlvPg0KICAgICAgICAgICAgICAgICAgPENvZGlnbz48L0NvZGlnbz4NCiAgICAgICAgICAgICAgICAgIDxNb250b1RvdGFsPjk0OTc8L01vbnRvVG90YWw+PENvZGlnb0NvbWVyY2lhbD4NCiAgICAgICAgICAgICAgICAgICAgPENvZGlnbz4wNDwvQ29kaWdvPg0KICAgICAgICAgICAgICAgICAgICA8VGlwbz5NSUNST1NPRlQ8L1RpcG8+DQogICAgICAgICAgICAgICAgICAgIDwvQ29kaWdvQ29tZXJjaWFsPjxTdWJUb3RhbD45NDk3PC9TdWJUb3RhbD48QmFzZUltcG9uaWJsZT48L0Jhc2VJbXBvbmlibGU+PEltcHVlc3RvPg0KICAgICAgICAgICAgICAgIDxDb2RpZ28+MDE8L0NvZGlnbz4NCiAgICAgICAgICAgICAgICA8TW9udG8+MDwvTW9udG8+PENvZGlnb1RhcmlmYT4wMTwvQ29kaWdvVGFyaWZhPg0KICAgICAgICAgICAgICAgICAgICA8RXhvbmVyYWNpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8VGlwb0RvY3VtZW50bz4wMTwvVGlwb0RvY3VtZW50bz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxOdW1lcm9Eb2N1bWVudG8+QkEzLTIxNDQ0LTAzPC9OdW1lcm9Eb2N1bWVudG8+DQogICAgICAgICAgICAgICAgICAgICAgICA8Tm9tYnJlSW5zdGl0dWNpb24+QmEzIFNvZnR3YXJlIENvcnBvcmF0aW9uPC9Ob21icmVJbnN0aXR1Y2lvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxGZWNoYUVtaXNpb24+MjAxOC0xMC0xMFQwOTowMDowMC0wNjowMDwvRmVjaGFFbWlzaW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPE1vbnRvRXhvbmVyYWNpb24+MDwvTW9udG9FeG9uZXJhY2lvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxQb3JjZW50YWplRXhvbmVyYWNpb24+MTwvUG9yY2VudGFqZUV4b25lcmFjaW9uPg0KICAgICAgICAgICAgICAgICAgICA8L0V4b25lcmFjaW9uPjwvSW1wdWVzdG8+PEltcHVlc3RvTmV0bz4wPC9JbXB1ZXN0b05ldG8+PE1vbnRvVG90YWxMaW5lYT45NDk3PC9Nb250b1RvdGFsTGluZWE+PC9MaW5lYURldGFsbGU+PC9EZXRhbGxlU2VydmljaW8+DQogICAgICAgIDxSZXN1bWVuRmFjdHVyYT4NCiAgICAgICAgPENvZGlnb1RpcG9Nb25lZGE+DQogICAgICAgICAgICA8Q29kaWdvTW9uZWRhPlVTRDwvQ29kaWdvTW9uZWRhPg0KICAgICAgICAgICAgPFRpcG9DYW1iaW8+NTg4LjY2PC9UaXBvQ2FtYmlvPg0KICAgICAgICA8L0NvZGlnb1RpcG9Nb25lZGE+DQogICAgICAgIDxUb3RhbFNlcnZHcmF2YWRvcz4wPC9Ub3RhbFNlcnZHcmF2YWRvcz4NCiAgICAgICAgPFRvdGFsU2VydkV4ZW50b3M+OTQ5Ny4wMDAwMDwvVG90YWxTZXJ2RXhlbnRvcz4NCiAgICAgICAgPFRvdGFsU2VydkV4b25lcmFkbz45NDk3LjAwMDAwPC9Ub3RhbFNlcnZFeG9uZXJhZG8+DQogICAgICAgIDxUb3RhbE1lcmNhbmNpYXNHcmF2YWRhcz4wPC9Ub3RhbE1lcmNhbmNpYXNHcmF2YWRhcz4NCiAgICAgICAgPFRvdGFsTWVyY2FuY2lhc0V4ZW50YXM+MDwvVG90YWxNZXJjYW5jaWFzRXhlbnRhcz4NCiAgICAgICAgPFRvdGFsTWVyY0V4b25lcmFkYT4wPC9Ub3RhbE1lcmNFeG9uZXJhZGE+DQogICAgICAgIDxUb3RhbEdyYXZhZG8+MDwvVG90YWxHcmF2YWRvPg0KICAgICAgICA8VG90YWxFeGVudG8+OTQ5Ny4wMDAwMDwvVG90YWxFeGVudG8+DQogICAgICAgIDxUb3RhbEV4b25lcmFkbz45NDk3LjAwMDAwPC9Ub3RhbEV4b25lcmFkbz4NCiAgICAgICAgPFRvdGFsVmVudGE+OTQ5Ny4wMDAwMDwvVG90YWxWZW50YT4NCiAgICAgICAgPFRvdGFsRGVzY3VlbnRvcz4wPC9Ub3RhbERlc2N1ZW50b3M+DQogICAgICAgIDxUb3RhbFZlbnRhTmV0YT45NDk3LjAwMDAwPC9Ub3RhbFZlbnRhTmV0YT4NCiAgICAgICAgPFRvdGFsSW1wdWVzdG8+MDwvVG90YWxJbXB1ZXN0bz4NCiAgICAgICAgPFRvdGFsSVZBRGV2dWVsdG8+MDwvVG90YWxJVkFEZXZ1ZWx0bz4NCiAgICAgICAgPFRvdGFsT3Ryb3NDYXJnb3M+MDwvVG90YWxPdHJvc0Nhcmdvcz4NCiAgICAgICAgPFRvdGFsQ29tcHJvYmFudGU+OTQ5Ny4wMDAwMDwvVG90YWxDb21wcm9iYW50ZT4NCiAgICAgICAgPC9SZXN1bWVuRmFjdHVyYT4NCiAgICAgICAgPE5vcm1hdGl2YT4NCiAgICAgICAgPE51bWVyb1Jlc29sdWNpb24+REdULVItNDgtMjAxNjwvTnVtZXJvUmVzb2x1Y2lvbj4NCiAgICAgICAgPEZlY2hhUmVzb2x1Y2lvbj4wNy0xMC0yMDE2IDA4OjAwOjAwPC9GZWNoYVJlc29sdWNpb24+DQogICAgICAgIDwvTm9ybWF0aXZhPjxJbmZvcm1hY2lvblJlZmVyZW5jaWE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRpcG9Eb2M+MTwvVGlwb0RvYz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TnVtZXJvPjI8L051bWVybz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmVjaGFFbWlzaW9uPjQ8L0ZlY2hhRW1pc2lvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29kaWdvPjE8L0NvZGlnbz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmF6b24+Q2FsaWRhZDwvUmF6b24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L0luZm9ybWFjaW9uUmVmZXJlbmNpYT4NCiAgICA8L0ZhY3R1cmFFbGVjdHJvbmljYT4=" } }