Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cl.awto.microservice.poinvoice.components.invoice.signature;
- import cl.awto.microservice.msmodel.domain.model.AwInvoiceEntity;
- import cl.awto.microservice.msmodel.domain.model.AwPurchaseOrderEntity;
- import cl.awto.microservice.msmodel.domain.model.AwUserEntity;
- import cl.awto.microservice.poinvoice.domain.enums.invoice.signature.UserResidence;
- import cl.awto.microservice.poinvoice.service.message.MessageService;
- import cl.awto.microservice.poinvoice.domain.enums.purchaseorder.PurchaseOrderType;
- import cl.awto.microservice.poinvoice.domain.common.AwtoUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- @Component
- public class XMLSignatureComponent {
- @Autowired
- private MessageService messageService;
- /**
- * Creates the invoice xml.
- *
- * @param user the user info
- * @param invoice the invoice info
- * @return the string
- */
- public String createInvoiceXml(AwUserEntity user, AwInvoiceEntity invoice, AwPurchaseOrderEntity purchaseOrder) {
- StringBuilder xmlBuilder = new StringBuilder();
- if (user != null && invoice != null) {
- xmlBuilder.append(buildHeaderElement());
- String invoiceDate = convertInvoiceDateFormat(new Date());
- xmlBuilder.append(buildInvoiceInfo(invoiceDate, user, invoice));
- xmlBuilder.append(buildItemInfo(invoice, purchaseOrder));
- xmlBuilder.append(buildFooterElement());
- }
- return xmlBuilder.toString();
- }
- private static String convertInvoiceDateFormat(Date pDate) {
- SimpleDateFormat lSdf = new SimpleDateFormat("yyyy-MM-dd");
- String lStrDate = null;
- if (pDate != null) {
- lStrDate = lSdf.format(pDate);
- }
- return lStrDate;
- }
- /**
- * Builds the header element.
- *
- * @return the string
- */
- private String buildHeaderElement() {
- StringBuilder lXmlBuilder = new StringBuilder("<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?>");
- lXmlBuilder.append("<SigantureInvoice xmlns=\"http://www.sii.cl/SiiDte\">");
- lXmlBuilder.append("<DTE>");
- return lXmlBuilder.toString();
- }
- /**
- * Builds the footer element.
- *
- * @return the string
- */
- private String buildFooterElement() {
- StringBuilder lXmlBuilder = new StringBuilder("</DTE>");
- lXmlBuilder.append("</SigantureInvoice>");
- return lXmlBuilder.toString();
- }
- /**
- * Builds the invoice info.
- *
- * @param invoiceDate the invoice date
- * @param user the user info
- * @param invoice the invoice info
- * @return the string
- */
- private String buildInvoiceInfo(String invoiceDate,
- AwUserEntity user, AwInvoiceEntity invoice) {
- StringBuilder xmlBuilder = new StringBuilder("<Encabezado>");
- xmlBuilder.append(buildInvoiceDetail(invoiceDate));
- xmlBuilder.append(buildInvoiceUserDetail(user));
- xmlBuilder.append(buildInvoiceAmount(invoice.getAmount()));
- xmlBuilder.append("</Encabezado>");
- return xmlBuilder.toString();
- }
- private String buildItemInfo(AwInvoiceEntity invoice, AwPurchaseOrderEntity purchaseOrder) {
- String tpoCodigo = purchaseOrder.getOrderType();
- String vlrCodigo = "";
- String descripcion = purchaseOrder.getDescription();
- if (PurchaseOrderType.TRIP.toString().equals(purchaseOrder.getOrderType())) {
- String messageTpo = messageService.getMessage("invoice.tpo.trip");
- tpoCodigo = messageTpo;
- if (purchaseOrder.getAwTrip() != null) {
- vlrCodigo = purchaseOrder.getAwTrip().getAwVehicleByVehicleId().getPatent();
- } else {
- vlrCodigo = "Reserva";
- }
- String[] args = new String[2];
- args[0] = "$" + invoice.getAmount();
- args[1] = vlrCodigo;
- String messageDesc = messageService.getMessage("invoice.description.trip", args);
- descripcion = messageDesc;
- } else if (PurchaseOrderType.MEMBERSHIP.toString().equals(purchaseOrder.getOrderType())) {
- String messageTpo = messageService.getMessage("invoice.tpo.membership");
- tpoCodigo = messageTpo;
- vlrCodigo = purchaseOrder.getAwMemberShip().getMembershipName(); //TODO: falta null check
- String[] args = new String[2];
- args[0] = "$" + invoice.getAmount();
- args[1] = vlrCodigo;
- String messageDesc = messageService.getMessage("invoice.description.membership", args);
- descripcion = messageDesc;
- } else if (PurchaseOrderType.OTHER.toString().equals(purchaseOrder.getOrderType())) {
- vlrCodigo = purchaseOrder.getOrderType();
- String messageDesc = messageService.getMessage("invoice.description.other");
- descripcion = messageDesc;
- } else if (PurchaseOrderType.AWTO_CREDIT.toString().equals(purchaseOrder.getOrderType())) {
- String messageTpo = messageService.getMessage("invoice.tpo.awtocredit");
- tpoCodigo = messageTpo;
- vlrCodigo = tpoCodigo;//TODO: Metodo de recarga pendiente
- String messageDesc = messageService.getMessage("invoice.description.awtocredit");
- descripcion = messageDesc;
- } else if (PurchaseOrderType.EXTENDED_BOOKING.toString().equals(purchaseOrder.getOrderType())) {
- String messageTpo = messageService.getMessage("invoice.tpo.eb");
- tpoCodigo = messageTpo;
- vlrCodigo = purchaseOrder.getOrderType();
- descripcion = purchaseOrder.getDescription();
- } else if (PurchaseOrderType.DAMAGE.toString().equals(purchaseOrder.getOrderType())) {
- vlrCodigo = purchaseOrder.getAwTrip() != null ?
- purchaseOrder.getAwTrip().getAwVehicleByVehicleId().getPatent()
- : "Daño";
- }
- StringBuilder xmlBuilder = new StringBuilder("<Detalle>");
- xmlBuilder.append("<NroLinDet>");
- xmlBuilder.append(1);
- xmlBuilder.append("</NroLinDet>");
- xmlBuilder.append("<CdgItem>");
- xmlBuilder.append("<TpoCodigo>");
- xmlBuilder.append(tpoCodigo);
- xmlBuilder.append("</TpoCodigo>");
- xmlBuilder.append("<VlrCodigo>");
- xmlBuilder.append(vlrCodigo);
- xmlBuilder.append("</VlrCodigo>");
- xmlBuilder.append("</CdgItem>");
- xmlBuilder.append("<DscItem>");
- xmlBuilder.append((descripcion.replaceAll("\n", "")).replaceAll("\t", ""));
- xmlBuilder.append("</DscItem>");
- xmlBuilder.append("<MontoItem>");
- xmlBuilder.append(invoice.getAmount());
- xmlBuilder.append("</MontoItem>");
- xmlBuilder.append("</Detalle>");
- return xmlBuilder.toString();
- }
- /**
- * Builds the invoice detail.
- *
- * @param invoiceDate the invoice date
- * @return the string
- */
- private String buildInvoiceDetail(String invoiceDate) {
- StringBuilder xmlBuilder = new StringBuilder("<IdDoc>");
- xmlBuilder.append("<Folio>");
- xmlBuilder.append("");
- xmlBuilder.append("</Folio>");
- xmlBuilder.append("<FchEmis>");
- xmlBuilder.append(invoiceDate);
- xmlBuilder.append("</FchEmis>");
- xmlBuilder.append("<FchVenc>");
- xmlBuilder.append(invoiceDate);
- xmlBuilder.append("</FchVenc>");
- xmlBuilder.append("</IdDoc>");
- return xmlBuilder.toString();
- }
- /**
- * Builds the invoice user detail.
- *
- * @param user the user info
- * @return the string
- */
- private String buildInvoiceUserDetail(AwUserEntity user) {
- StringBuilder xmlBuilder = new StringBuilder();
- xmlBuilder.append("<Receptor>");
- xmlBuilder.append("<RUTRecep>");
- String rut = "";
- if (user.getResidence() != null && user.getResidence().equalsIgnoreCase(UserResidence.Foreign.name())) {
- rut = "11111111-1";
- } else {
- if (user.getRutNo() != null && !user.getRutNo().isEmpty()) {
- rut = user.getRutNo().replaceAll("\\s", "");
- rut = AwtoUtils.formatRut(rut);
- rut = rut.replace(".", "");
- }
- }
- xmlBuilder.append(rut);
- xmlBuilder.append("</RUTRecep>");
- xmlBuilder.append("<Nombre>");
- String fullName = user.getFname();
- if (!AwtoUtils.isEmpty(user.getLname())){
- fullName += " " + user.getLname();
- }
- xmlBuilder.append(fullName);
- xmlBuilder.append("</Nombre>");
- xmlBuilder.append("<Contacto>");
- xmlBuilder.append(user.getEmailId());
- xmlBuilder.append("</Contacto>");
- xmlBuilder.append("<DirRecep>");
- if (user.getContactAddress() != null && user.getContactAddress().getFormattedAddress() != null) {
- xmlBuilder.append(user.getContactAddress().getFormattedAddress());
- } else {
- xmlBuilder.append("Santiago, Chile");
- }
- xmlBuilder.append("</DirRecep>");
- xmlBuilder.append("<CiudadRecep>");
- if (user.getContactAddress().getCity() != null) {
- xmlBuilder.append(user.getContactAddress().getCity());
- } else {
- xmlBuilder.append("");
- }
- xmlBuilder.append("</CiudadRecep>");
- xmlBuilder.append("</Receptor>");
- return xmlBuilder.toString();
- }
- /**
- * Builds the invoice amount.
- *
- * @param pAmount the amount
- * @return the string
- */
- private String buildInvoiceAmount(double pAmount) {
- StringBuilder xmlBuilder = new StringBuilder("<Totales>");
- xmlBuilder.append("<MntTotal>");
- xmlBuilder.append(pAmount);
- xmlBuilder.append("</MntTotal>");
- xmlBuilder.append("</Totales>");
- return xmlBuilder.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement