[API FE CRI] SOPORTE A ELEMENTOS FARMACEUTICOS.
Para los documentos electronicos, Factura electrónica de venta , Factura electrónica de exportación , Factura electrónica de compra , Tiquete electrónico , Nota de crédito y Nota débito, se han agregado dos elementos relacionados a la forma famaceutica ( item details'. [*].pharmaceuticalForm
) y el registro sanitario del medicamento (` item details'.[*]. Registration medicine' ) situados en la la línea de detalle del comprobante electrónico.
Estos dos campos son opcionales y solo serán obligatorios cuando el código Cabys pertenezca a un medicamento del registro sanitario (por ahora este comportamiento/validación no rechazará la emisión de un comprobante electrónico, por lo que será una observación por parte de Hacienda, posteriormente se activará cuando la aceptación del documento dependa de la validación y la presencia de los campos en el XML/request).
Tambien se ha agregago un nuevo endpoint /hacienda/pharmaceutical-forms
para obtener la tabla de Forma Farmacéutica para que puedan implementarla con sus integraciones.
Ejemplos:
En la Factura Electronica de Venta seria agregar estas dos propiedades además de en itemDetails. [*].code
colocar el siguiente codigo Cabys correspondiente a Registro Sanitario. Request de ejemplo para emisión de una FE de Venta.
{
"idDoc": {
"headquarters": "514",
"terminal": "00001",
"numberOfDocument": "016",
"situationOfDocument": "1",
"issueDate": "2024-11-25T13:38:54-06:00"
},
"sender": {
"id": "{{idCompany}}"
},
"receiver": {
"name": "Alanube 2",
"email": "[email protected]",
"identification": {
"identificationType": "02",
"identificationNumber": "00000000"
},
"address": {
"province": "6",
"canton": "12",
"district": "01",
"otrasSenas": "otras",
"neighborhood": "01"
}
},
"itemDetails": [
{
"code": "3562101000101",
"unitMeasurement": "Unid",
"detail": "Medicamento 1",
"quantity": "2",
"unitPrice": "150.00000",
"amountTotal": "300",
"subTotal": "300",
"amountTotalLine": "339",
"registrationMedicine": "Registration de 25",
"pharmaceuticalForm": "01",
"taxes": [
{
"code": "01",
"fee": "13.00",
"amount": "39",
"feeCode": "08"
}
],
"taxNet": "39"
}
],
"information": {
"activityCode": "011101",
"saleCondition": "11",
"paymentMethod": "01",
"creditTerm": "0",
"referenceDocuments": [
{
"typeDoc": "01",
"number": "00200003010000000126",
"dateEmission": "2024-11-18T00:00:00+00:00",
"code": "04",
"reason": "10"
}
],
"currency": {
"codeCurrency": "CRC",
"exchangeRate": "1.00000"
}
},
"totals": {
"totalServicesTaxable": "0",
"totalServicesExempt": "0",
"totalTaxableMerchandise": "300",
"totalExemptMerchandise": "0",
"totalTaxed": "300",
"totalExempt": "0",
"totalSale": "300",
"totalDiscounts": "0",
"totalNetSales": "300",
"totalTax": "39",
"totalOtherCharges": "0",
"totalVoucher": "339",
"totalServicesExonerated": "0",
"totalExoneratedMerchandise": "0",
"totalExonerated": "0",
"totalVATRefunded": "0"
}
}
El XML enviado:
<?xml version="1.0" encoding="utf-8"?>
<FacturaElectronica
xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronica"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Clave>50625112400310281761951400001010000000016126676000</Clave>
<CodigoActividad>011101</CodigoActividad>
<NumeroConsecutivo>51400001010000000016</NumeroConsecutivo>
<FechaEmision>2024-11-25T13:38:54-06:00</FechaEmision>
<Emisor>
<Nombre>Alanube test company</Nombre>
<Identificacion>
<Tipo>02</Tipo>
<Numero>000000000</Numero>
</Identificacion>
<NombreComercial>Alanube </NombreComercial>
<Ubicacion>
<Provincia>6</Provincia>
<Canton>01</Canton>
<Distrito>01</Distrito>
<OtrasSenas>Otras señas</OtrasSenas>
</Ubicacion>
<Telefono>
<CodigoPais>506</CodigoPais>
<NumTelefono>12345678</NumTelefono>
</Telefono>
<CorreoElectronico>[email protected]</CorreoElectronico>
</Emisor>
<Receptor>
<Nombre>Alanube 2</Nombre>
<Identificacion>
<Tipo>02</Tipo>
<Numero>0000000</Numero>
</Identificacion>
<Ubicacion>
<Provincia>6</Provincia>
<Canton>12</Canton>
<Distrito>01</Distrito>
<Barrio>01</Barrio>
<OtrasSenas>otras</OtrasSenas>
</Ubicacion>
<CorreoElectronico>[email protected]</CorreoElectronico>
</Receptor>
<CondicionVenta>11</CondicionVenta>
<PlazoCredito>0</PlazoCredito>
<MedioPago>01</MedioPago>
<DetalleServicio>
<LineaDetalle>
<NumeroLinea>1</NumeroLinea>
<Codigo>3562101000101</Codigo>
<Cantidad>2</Cantidad>
<UnidadMedida>Unid</UnidadMedida>
<Detalle>Medicamento 1</Detalle>
<RegistroMedicamento>Registration de 25</RegistroMedicamento>
<FormaFarmaceutica>01</FormaFarmaceutica>
<PrecioUnitario>150.00000</PrecioUnitario>
<MontoTotal>300</MontoTotal>
<SubTotal>300</SubTotal>
<Impuesto>
<Codigo>01</Codigo>
<CodigoTarifa>08</CodigoTarifa>
<Tarifa>13.00</Tarifa>
<Monto>39</Monto>
</Impuesto>
<ImpuestoNeto>39</ImpuestoNeto>
<MontoTotalLinea>339</MontoTotalLinea>
</LineaDetalle>
</DetalleServicio>
<ResumenFactura>
<CodigoTipoMoneda>
<CodigoMoneda>CRC</CodigoMoneda>
<TipoCambio>1.00000</TipoCambio>
</CodigoTipoMoneda>
<TotalServGravados>0</TotalServGravados>
<TotalServExentos>0</TotalServExentos>
<TotalServExonerado>0</TotalServExonerado>
<TotalMercanciasGravadas>300</TotalMercanciasGravadas>
<TotalMercanciasExentas>0</TotalMercanciasExentas>
<TotalMercExonerada>0</TotalMercExonerada>
<TotalGravado>300</TotalGravado>
<TotalExento>0</TotalExento>
<TotalExonerado>0</TotalExonerado>
<TotalVenta>300</TotalVenta>
<TotalDescuentos>0</TotalDescuentos>
<TotalVentaNeta>300</TotalVentaNeta>
<TotalImpuesto>39</TotalImpuesto>
<TotalIVADevuelto>0</TotalIVADevuelto>
<TotalOtrosCargos>0</TotalOtrosCargos>
<TotalComprobante>339</TotalComprobante>
</ResumenFactura>
<InformacionReferencia>
<TipoDoc>01</TipoDoc>
<Numero>{{hashedValue}}</Numero>
<FechaEmision>2024-11-18T00:00:00+00:00</FechaEmision>
<Codigo>04</Codigo>
<Razon>10</Razon>
</InformacionReferencia>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-{{hashedValue}}">
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronica"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference Id="Reference-{{hashedValue}}" URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>{{hashedValue}}</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="ReferenceKeyInfo" URI="#KeyInfoId-Signature-{{hashedValue}}">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>{{hashedValue}}</ds:DigestValue>
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties"
URI="#SignedProperties-Signature-{{hashedValue}}">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>{{hashedValue}}</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="SignatureValue-{{hashedValue}}">{{hashedValue}}</ds:SignatureValue>
<ds:KeyInfo Id="KeyInfoId-Signature-{{hashedValue}}"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronica"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ds:X509Data>
<ds:X509Certificate>{{hashedValue}}</ds:X509Certificate>
</ds:X509Data>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>{{hashedValue}}</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
<ds:Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
Id="QualifyingProperties-{{hashedValue}}" Target="#Signature-{{hashedValue}}">
<xades:SignedProperties Id="SignedProperties-Signature-{{hashedValue}}"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronica"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xades:SignedSignatureProperties>
<xades:SigningTime>2024-11-27T11:14:06.996-06:00</xades:SigningTime>
<xades:SigningCertificate>
<xades:Cert>
<xades:CertDigest>
<ds:DigestMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>{{hashedValue}}</ds:DigestValue>
</xades:CertDigest>
<xades:IssuerSerial>
<ds:X509IssuerName>CN=CA PERSONA JURIDICA - SANDBOX, OU=DGT,
O=MINISTERIO DE HACIENDA - SANDBOX, C=CR</ds:X509IssuerName>
<ds:X509SerialNumber>{{hashedValue}}</ds:X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
<xades:SignaturePolicyIdentifier>
<xades:SignaturePolicyId>
<xades:SigPolicyId>
<xades:Identifier>
https://atv.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.3/Resoluci%C3%B3n_General_sobre_disposiciones_t%C3%A9cnicas_comprobantes_electr%C3%B3nicos_para_efectos_tributarios.pdf</xades:Identifier>
<xades:Description />
</xades:SigPolicyId>
<xades:SigPolicyHash>
<ds:DigestMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>{{hashedValue}}=</ds:DigestValue>
</xades:SigPolicyHash>
</xades:SignaturePolicyId>
</xades:SignaturePolicyIdentifier>
</xades:SignedSignatureProperties>
<xades:SignedDataObjectProperties>
<xades:DataObjectFormat ObjectReference="#Reference-{{hashedValue}}">
<xades:MimeType>text/xml</xades:MimeType>
<xades:Encoding>UTF-8</xades:Encoding>
</xades:DataObjectFormat>
</xades:SignedDataObjectProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>
</FacturaElectronica>
Al obtener el documento tenemos que el documento electrónico estará aceptado:
{
"document": {
"id": "01JDQ9V8YD8QYVGM86NJMNCX4V",
"key": "50625112400310281761951400001010000000016126676000",
"status": "FINISHED",
"legalStatus": "ACCEPTED",
"governmentResponse": "Este comprobante fue aceptado en el ambiente de pruebas, por lo cual no tiene validez para fines tributarios.\n\ncodigo, mensaje, fila, columna\n-37, \"\"Estimado obligado tributario los datos suministrados en provincia, cantón y distrito del 'emisor' no concuerdan con la información registrada en la Dirección General de Tributación, favor proceder actualizar sus datos.\"\", 0, 0\n",
"errorMessage": null
}
}
NOTA: Este cambio ya se puede probar en nuestro ambiente sandbox pronto estara en nuestros ambientes de produccion, tambien se reitera el mensaje anterior, aún no son obligatorios colocar estos campos pero tendremos una observación en el campo governmentReponse porterior a esto, si la obligación de los campos al tratarse de un código que pertenece al Cabys de Regsitro Sanitario, se empleara una validación que no permita crear la FE.