nodefact
Version:
Biblioteca para facturación electrónica en Perú con Node.js. Compatible con UBL 2.1 y servicios web de SUNAT.
216 lines (202 loc) • 10.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.dispatch2022 = void 0;
/**
* Plantilla para Guía de Remisión 2022 (Dispatch Advice 2022)
*/
const namespaces_1 = require("./namespaces");
exports.dispatch2022 = `
<DespatchAdvice xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"
xmlns:cac="${namespaces_1.namespaces.cac}"
xmlns:cbc="${namespaces_1.namespaces.cbc}"
xmlns:ccts="${namespaces_1.namespaces.ccts}"
xmlns:ds="${namespaces_1.namespaces.ds}"
xmlns:ext="${namespaces_1.namespaces.ext}"
xmlns:qdt="${namespaces_1.namespaces.qdt}"
xmlns:sac="${namespaces_1.namespaces.sac}"
xmlns:udt="${namespaces_1.namespaces.udt}"
xmlns:xsi="${namespaces_1.namespaces.xsi}">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Versión del UBL -->
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<!-- Versión de la estructura del documento -->
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<!-- Número de guía: Serie-Correlativo -->
<cbc:ID>{{serie}}-{{correlativo}}</cbc:ID>
<!-- Fecha de emisión -->
<cbc:IssueDate>{{fechaEmision}}</cbc:IssueDate>
<!-- Hora de emisión -->
<cbc:IssueTime>{{horaEmision}}</cbc:IssueTime>
<!-- Tipo de documento -->
<cbc:DespatchAdviceTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">{{tipoDocumento}}</cbc:DespatchAdviceTypeCode>
<!-- Observaciones -->
{{#if observaciones}}
<cbc:Note>{{observaciones}}</cbc:Note>
{{/if}}
<!-- Documento de referencia (Factura/Boleta relacionada) -->
{{#if documentoReferencia}}
<cac:AdditionalDocumentReference>
<cbc:ID>{{documentoReferencia.serie}}-{{documentoReferencia.correlativo}}</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Tipo de Documento" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo01">{{documentoReferencia.tipoDocumento}}</cbc:DocumentTypeCode>
<cbc:IssueDate>{{documentoReferencia.fechaEmision}}</cbc:IssueDate>
</cac:AdditionalDocumentReference>
{{/if}}
<!-- Firma Digital -->
<cac:Signature>
<cbc:ID>{{signatureID}}</cbc:ID>
<cac:SignatoryParty>
<cac:PartyIdentification>
<cbc:ID>{{emisor.ruc}}</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>{{emisor.razonSocial}}</cbc:Name>
</cac:PartyName>
</cac:SignatoryParty>
<cac:DigitalSignatureAttachment>
<cac:ExternalReference>
<cbc:URI>{{signatureURI}}</cbc:URI>
</cac:ExternalReference>
</cac:DigitalSignatureAttachment>
</cac:Signature>
<!-- Datos del Remitente -->
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="6" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">{{emisor.ruc}}</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>{{emisor.nombreComercial}}</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>{{emisor.razonSocial}}</cbc:RegistrationName>
<cac:RegistrationAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">{{emisor.direccion.ubigeo}}</cbc:ID>
<cbc:AddressTypeCode>0001</cbc:AddressTypeCode>
<cbc:CityName>{{emisor.direccion.provincia}}</cbc:CityName>
<cbc:CountrySubentity>{{emisor.direccion.departamento}}</cbc:CountrySubentity>
<cbc:District>{{emisor.direccion.distrito}}</cbc:District>
<cac:AddressLine>
<cbc:Line>{{emisor.direccion.direccion}}</cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- Datos del Destinatario -->
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="{{destinatario.tipoDocumento}}" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">{{destinatario.numeroDocumento}}</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>{{destinatario.razonSocial}}</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- Datos del Transportista -->
{{#if transportista}}
<cac:ShipperParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="{{transportista.tipoDocumento}}" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">{{transportista.numeroDocumento}}</cbc:ID>
</cac:PartyIdentification>
<cac:PartyLegalEntity>
<cbc:RegistrationName>{{transportista.razonSocial}}</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:ShipperParty>
{{/if}}
<!-- Datos del Envío -->
<cac:Shipment>
<cbc:ID>1</cbc:ID>
<cbc:HandlingCode listAgencyName="PE:SUNAT" listName="Motivo de traslado" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo20">{{motivoTraslado}}</cbc:HandlingCode>
<cbc:Information>{{descripcionTraslado}}</cbc:Information>
<cbc:GrossWeightMeasure unitCode="KGM">{{pesoBruto}}</cbc:GrossWeightMeasure>
<cbc:TotalTransportHandlingUnitQuantity>{{numeroBultos}}</cbc:TotalTransportHandlingUnitQuantity>
<!-- Fecha de inicio de traslado -->
<cac:ShipmentStage>
<cbc:TransportModeCode listAgencyName="PE:SUNAT" listName="Modalidad de traslado" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo18">{{modalidadTraslado}}</cbc:TransportModeCode>
<cac:TransitPeriod>
<cbc:StartDate>{{fechaInicioTraslado}}</cbc:StartDate>
</cac:TransitPeriod>
<!-- Datos del conductor -->
{{#if conductor}}
<cac:DriverPerson>
<cbc:ID schemeID="{{conductor.tipoDocumento}}" schemeAgencyName="PE:SUNAT" schemeURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">{{conductor.numeroDocumento}}</cbc:ID>
<cbc:FirstName>{{conductor.nombres}}</cbc:FirstName>
<cbc:FamilyName>{{conductor.apellidos}}</cbc:FamilyName>
<cbc:JobTitle>Principal</cbc:JobTitle>
{{#if conductor.licencia}}
<cac:IdentityDocumentReference>
<cbc:ID>{{conductor.licencia}}</cbc:ID>
<cbc:DocumentTypeCode listAgencyName="PE:SUNAT" listName="Tipo de documento de identidad" listURI="urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06">3</cbc:DocumentTypeCode>
</cac:IdentityDocumentReference>
{{/if}}
</cac:DriverPerson>
{{/if}}
</cac:ShipmentStage>
<!-- Dirección de partida -->
<cac:OriginAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">{{origen.ubigeo}}</cbc:ID>
<cbc:StreetName>{{origen.direccion}}</cbc:StreetName>
<cbc:CityName>{{origen.provincia}}</cbc:CityName>
<cbc:CountrySubentity>{{origen.departamento}}</cbc:CountrySubentity>
<cbc:District>{{origen.distrito}}</cbc:District>
<cac:Country>
<cbc:IdentificationCode listID="ISO 3166-1" listAgencyName="United Nations Economic Commission for Europe" listName="Country">PE</cbc:IdentificationCode>
</cac:Country>
</cac:OriginAddress>
<!-- Dirección de llegada -->
<cac:DeliveryAddress>
<cbc:ID schemeAgencyName="PE:INEI" schemeName="Ubigeos">{{destino.ubigeo}}</cbc:ID>
<cbc:StreetName>{{destino.direccion}}</cbc:StreetName>
<cbc:CityName>{{destino.provincia}}</cbc:CityName>
<cbc:CountrySubentity>{{destino.departamento}}</cbc:CountrySubentity>
<cbc:District>{{destino.distrito}}</cbc:District>
<cac:Country>
<cbc:IdentificationCode listID="ISO 3166-1" listAgencyName="United Nations Economic Commission for Europe" listName="Country">PE</cbc:IdentificationCode>
</cac:Country>
</cac:DeliveryAddress>
<!-- Datos del vehículo -->
{{#if vehiculo}}
<cac:TransportHandlingUnit>
<cbc:ID>{{vehiculo.placa}}</cbc:ID>
<cac:TransportEquipment>
<cbc:ID>{{vehiculo.placa}}</cbc:ID>
{{#if vehiculo.tarjetaCirculacion}}
<cac:ApplicableTransportMeans>
<cbc:RegistrationNationalityID>PE</cbc:RegistrationNationalityID>
<cbc:RegistrationID>{{vehiculo.tarjetaCirculacion}}</cbc:RegistrationID>
</cac:ApplicableTransportMeans>
{{/if}}
</cac:TransportEquipment>
</cac:TransportHandlingUnit>
{{/if}}
</cac:Shipment>
<!-- Detalle de ítems -->
{{#each items}}
<cac:DespatchLine>
<cbc:ID>{{@index}}</cbc:ID>
<cbc:DeliveredQuantity unitCode="{{unidadMedida}}">{{cantidad}}</cbc:DeliveredQuantity>
<!-- Descripción del ítem -->
<cac:Item>
<cbc:Name>{{descripcion}}</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>{{codigo}}</cbc:ID>
</cac:SellersItemIdentification>
{{#if codigoSunat}}
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="UNSPSC" listAgencyName="GS1 US" listName="Item Classification">{{codigoSunat}}</cbc:ItemClassificationCode>
</cac:CommodityClassification>
{{/if}}
</cac:Item>
</cac:DespatchLine>
{{/each}}
</DespatchAdvice>`;