nodefact
Version:
Biblioteca para facturación electrónica en Perú con Node.js. Compatible con UBL 2.1 y servicios web de SUNAT.
185 lines (171 loc) • 7.86 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.dispatch = void 0;
/**
* Plantilla para Guía de Remisión (Dispatch Advice)
*/
const namespaces_1 = require("./namespaces");
exports.dispatch = `
<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>1.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>
<!-- Tipo de documento -->
<cbc:DespatchAdviceTypeCode>{{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>{{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>
<cbc:CustomerAssignedAccountID>{{emisor.ruc}}</cbc:CustomerAssignedAccountID>
<cbc:AdditionalAccountID>6</cbc:AdditionalAccountID>
<cac:Party>
<cac:PartyLegalEntity>
<cbc:RegistrationName>{{emisor.razonSocial}}</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DespatchSupplierParty>
<!-- Datos del Destinatario -->
<cac:DeliveryCustomerParty>
<cbc:CustomerAssignedAccountID>{{destinatario.numeroDocumento}}</cbc:CustomerAssignedAccountID>
<cbc:AdditionalAccountID>{{destinatario.tipoDocumento}}</cbc:AdditionalAccountID>
<cac:Party>
<cac:PartyLegalEntity>
<cbc:RegistrationName>{{destinatario.razonSocial}}</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:DeliveryCustomerParty>
<!-- Datos del Transportista -->
{{#if transportista}}
<cac:ShipperParty>
<cbc:CustomerAssignedAccountID>{{transportista.numeroDocumento}}</cbc:CustomerAssignedAccountID>
<cbc:AdditionalAccountID>{{transportista.tipoDocumento}}</cbc:AdditionalAccountID>
<cac:Party>
<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>{{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>{{modalidadTraslado}}</cbc:TransportModeCode>
<cac:TransitPeriod>
<cbc:StartDate>{{fechaInicioTraslado}}</cbc:StartDate>
</cac:TransitPeriod>
<!-- Datos del conductor -->
{{#if conductor}}
<cac:DriverPerson>
<cbc:ID schemeID="{{conductor.tipoDocumento}}">{{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>
</cac:IdentityDocumentReference>
{{/if}}
</cac:DriverPerson>
{{/if}}
</cac:ShipmentStage>
<!-- Dirección de partida -->
<cac:OriginAddress>
<cbc:ID>{{origen.ubigeo}}</cbc:ID>
<cbc:StreetName>{{origen.direccion}}</cbc:StreetName>
<cbc:CitySubdivisionName>-</cbc:CitySubdivisionName>
<cbc:CityName>{{origen.provincia}}</cbc:CityName>
<cbc:CountrySubentity>{{origen.departamento}}</cbc:CountrySubentity>
<cbc:District>{{origen.distrito}}</cbc:District>
<cac:Country>
<cbc:IdentificationCode>PE</cbc:IdentificationCode>
</cac:Country>
</cac:OriginAddress>
<!-- Dirección de llegada -->
<cac:DeliveryAddress>
<cbc:ID>{{destino.ubigeo}}</cbc:ID>
<cbc:StreetName>{{destino.direccion}}</cbc:StreetName>
<cbc:CitySubdivisionName>-</cbc:CitySubdivisionName>
<cbc:CityName>{{destino.provincia}}</cbc:CityName>
<cbc:CountrySubentity>{{destino.departamento}}</cbc:CountrySubentity>
<cbc:District>{{destino.distrito}}</cbc:District>
<cac:Country>
<cbc:IdentificationCode>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>
</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>
</cac:Item>
</cac:DespatchLine>
{{/each}}
</DespatchAdvice>`;