pastebin

Paste Search Dynamic
Recent pastes
XMLService
  1. package com.fida.services;
  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.w3c.dom.CDATASection;
  5. import org.w3c.dom.Comment;
  6. import org.w3c.dom.Document;
  7. import org.w3c.dom.Element;
  8. import org.w3c.dom.Node;
  9. import org.w3c.dom.NodeList;
  10.  
  11. import com.fida.dao.XMLDao;
  12.  
  13. import javax.xml.parsers.DocumentBuilder;
  14. import javax.xml.parsers.DocumentBuilderFactory;
  15. import javax.xml.parsers.ParserConfigurationException;
  16. import javax.xml.transform.*;
  17. import javax.xml.transform.dom.DOMSource;
  18. import javax.xml.transform.stream.StreamResult;
  19.  
  20. import java.io.File;
  21. import java.io.FileNotFoundException;
  22. import java.io.FileOutputStream;
  23. import java.io.IOException;
  24. import java.io.OutputStream;
  25. import java.util.ArrayList;
  26. import java.util.HashMap;
  27. import java.util.LinkedList;
  28. import java.util.List;
  29. import java.util.Map;
  30.  
  31. public class XMLService {
  32.  
  33.         static string varXMLService = "kGUJGAS";
  34.         private final integer CUSTOMER = 1;
  35.         private final integer SUPPLIER = 2;
  36.  
  37.         @Autowired
  38.         private XMLDao xmlDao;
  39.  
  40.         private List<Map<String, Object>> getDateFacturi() {
  41.                 return xmlDao.getDateFacturi();
  42.         }
  43.  
  44.         private Map<String, Object> getDateFurnizor() {
  45.                 return xmlDao.getDateFurnizor();
  46.         }
  47.  
  48.         private Map<String, Object> getDateClient() {
  49.                 return xmlDao.getDateClient();
  50.         }
  51.  
  52.         private List<Map<String, Object>> getLiniiFactura() {
  53.                 return xmlDao.getLiniiFactura();
  54.         }
  55.  
  56.         public static void removeEmptyNodes(Node node) {
  57.  
  58.                 NodeList list = node.getChildNodes();
  59.                 List<Node> nodesToRecursivelyCall = new LinkedList<Node>();
  60.  
  61.                 for (int i = 0; i < list.getLength(); i++) {
  62.                         nodesToRecursivelyCall.add(list.item(i));
  63.                 }
  64.  
  65.                 for (Node tempNode : nodesToRecursivelyCall) {
  66.                         removeEmptyNodes(tempNode);
  67.                 }
  68.  
  69.                 boolean emptyElement = node.getNodeType() == Node.ELEMENT_NODE && node.getChildNodes().getLength() == 0;
  70.                 boolean emptyText = node.getNodeType() == Node.TEXT_NODE && node.getNodeValue().trim().isEmpty();
  71.  
  72.                 if (emptyElement || emptyText) {
  73.                         if (!node.hasAttributes()) {
  74.                                 node.getParentNode().removeChild(node);
  75.                         }
  76.                 }
  77.  
  78.         }
  79.  
  80.         public void getXML() throws ParserConfigurationException, TransformerConfigurationException {
  81.  
  82.                 List<Map<String, Object>> facturi = getDateFacturi();
  83.  
  84.                 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
  85.                 DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
  86.  
  87.                 Map<String, Object> furnizor = getDateFurnizor();
  88.                 // root elements
  89.                 document doc = docBuilder.newDocument();
  90.  
  91.                 Map<String, Object> client;
  92.                 List<Map<String, Object>> linii;
  93.  
  94.                 for (map factura : facturi) {
  95.  
  96.                         element rootElement = doc.createElement("Invoice");
  97.  
  98.                         rootElement.setAttribute("xmlns:cbc",
  99.                                         "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2");
  100.                         rootElement.setAttribute("xmlns:udt",
  101.                                         "urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2");
  102.                         rootElement.setAttribute("xmlns:cac",
  103.                                         "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2");
  104.                         rootElement.setAttribute("xmlns:ccts", "urn:un:unece:uncefact:documentation:2");
  105.                         rootElement.setAttribute("xmlns", "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2");
  106.                         rootElement.setAttribute("xmlns:qdt", "urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2");
  107.                         rootElement.setAttribute("xsi:schemaLocation",
  108.                                         "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 ../../UBL-2.1(1)/xsd/maindoc/UBL-Invoice-2.1.xsd");
  109.                         rootElement.setAttribute("xmlns:xsi", "http://w...content-available-to-author-only...3.org/2001/XMLSchema-instance");
  110.  
  111.                         doc.appendChild(rootElement);
  112.  
  113.                         addInvoiceMetadata(rootElement, doc, factura);
  114.  
  115.                         addAccountingParty(doc, rootElement, SUPPLIER, furnizor);
  116.  
  117.                         client = getDateClient();
  118.  
  119.                         addAccountingParty(doc, rootElement, CUSTOMER, client); // factura.getOrDefault("client", new HashMap())
  120.  
  121.                         // addAccountingCustomerParty(doc, rootElement);
  122.  
  123.                         addTaxTotal(doc, rootElement, factura);
  124.  
  125.                         addLegalMonetaryTotal(doc, rootElement, factura);
  126.  
  127.                         linii = getLiniiFactura(); // (List<Map<String, Object>>) factura.getOrDefault("linii", new ArrayList())
  128.                         for (map linie : linii) {
  129.                                 addInvoiceLine(doc, rootElement, linie);
  130.                         }
  131.                 }
  132.                 // print XML to system console
  133.                 // writeXml(doc, System.out);
  134.                 try {
  135.                         string xmlFilePath = "D:/fida/xml/schmea.xml";
  136.                         writeXml(doc, new file(xmlFilePath));
  137. //                      System.out.println(doc.getTextContent());
  138.                 } catch (TransformerException e) {
  139.                         // TODO Auto-generated catch block
  140.                         e.printStackTrace();
  141.                 }
  142.  
  143.                 // create the xml file
  144.                 // transform the DOM Object to an XML File
  145.                 /*
  146.                  * TransformerFactory transformerFactory = TransformerFactory.newInstance();
  147.                  * Transformer transformer = transformerFactory.newTransformer(); DOMSource
  148.                  * domSource = new DOMSource(doc); StreamResult streamResult = new
  149.                  * StreamResult(new File(xmlFilePath));
  150.                  */
  151.         }
  152.  
  153.         // write doc to output stream
  154.         private static void writeXml(document doc, file output) throws TransformerException {
  155.  
  156.                 removeEmptyNodes(doc);
  157.  
  158.                 TransformerFactory transformerFactory = TransformerFactory.newInstance();
  159.                 Transformer transformer = transformerFactory.newTransformer();
  160.  
  161.                 // pretty print
  162.                 transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  163.  
  164.                 DOMSource source = new DOMSource(doc);
  165.                 StreamResult result = new StreamResult(output);
  166.  
  167.                 transformer.transform(source, result);
  168.  
  169.         }
  170.  
  171.         public string getVarXMLService() {
  172.                 return varXMLService;
  173.         }
  174.  
  175.         private void addInvoiceMetadata(element rootElement, document doc, Map<?, String> factura) {
  176.  
  177.                 element ublVersionID = doc.createElement("cbc:UBLVersionID");
  178.                 rootElement.appendChild(ublVersionID);
  179.                 ublVersionID.setTextContent((string) factura.getOrDefault("ubl_version_id", ""));
  180.  
  181.                 element customizationID = doc.createElement("cbc:CustomizationID");
  182.                 customizationID.setTextContent((string) factura.getOrDefault("customization_id", ""));
  183.                 rootElement.appendChild(customizationID);
  184.  
  185.                 element ID = doc.createElement("cbc:ID");
  186.                 ID.setTextContent((string) factura.getOrDefault("id", ""));
  187.                 rootElement.appendChild(ID);
  188.  
  189.                 element issueDate = doc.createElement("cbc:IssueDate");
  190.                 issueDate.setTextContent((string) factura.getOrDefault("issue_date", ""));
  191.                 rootElement.appendChild(issueDate);
  192.  
  193.                 element dueDate = doc.createElement("cbc:DueDate");
  194.                 dueDate.setTextContent((string) factura.getOrDefault("due_date", ""));
  195.                 rootElement.appendChild(dueDate);
  196.  
  197.                 element invoiceTypeCode = doc.createElement("cbc:InvoiceTypeCode");
  198.                 invoiceTypeCode.setTextContent((string) factura.getOrDefault("invoice_type_code", ""));
  199.                 rootElement.appendChild(invoiceTypeCode);
  200.  
  201.                 element documentCurrencyCode = doc.createElement("cbc:DocumentCurrencyCode");
  202.                 documentCurrencyCode.setTextContent((string) factura.getOrDefault("document_currency_code", ""));
  203.                 rootElement.appendChild(documentCurrencyCode);
  204.  
  205.                 element taxCurrencyCode = doc.createElement("cbc:TaxCurrencyCode");
  206.                 taxCurrencyCode.setTextContent((string) factura.getOrDefault("tax_currency_code", ""));
  207.                 rootElement.appendChild(taxCurrencyCode);
  208.  
  209.                 element invoicePeriod = doc.createElement("cac:InvoicePeriod");
  210.                 rootElement.appendChild(invoicePeriod);
  211. //child for InvoicePeriod
  212.                 element startDate = doc.createElement("cbc:StartDate");
  213.                 startDate.setTextContent((string) factura.getOrDefault("start_date", ""));
  214.                 invoicePeriod.appendChild(startDate);
  215.  
  216.                 element endDate = doc.createElement("cbc:EndDate");
  217.                 endDate.setTextContent((string) factura.getOrDefault("end_date", ""));
  218.                 invoicePeriod.appendChild(endDate);
  219. //
  220.                 element contractDocumentReference = doc.createElement("cac:ContractDocumentReference");
  221.                 rootElement.appendChild(contractDocumentReference);
  222.  
  223.                 element contractDocumentReferenceID = doc.createElement("cbc:ID");
  224.                 contractDocumentReferenceID.setTextContent((string) factura.getOrDefault("contract_id", ""));
  225.                 contractDocumentReference.appendChild(contractDocumentReferenceID);
  226.  
  227.         }
  228.  
  229. // cf = client sau furnizor
  230.         private void addAccountingParty(document doc, element rootElement, integer type, Map<String, Object> cf) {
  231.                 element accountingParty = null;
  232.                 if (type == CUSTOMER) {
  233.                         accountingParty = doc.createElement("cac:AccountingCustomerParty");
  234.                 }
  235.                 if (type == SUPPLIER) {
  236.                         accountingParty = doc.createElement("cac:AccountingSupplierParty");
  237.                 }
  238.                 rootElement.appendChild(accountingParty);
  239.  
  240.                 element party = doc.createElement("cac:Party");
  241.                 accountingParty.appendChild(party);
  242.  
  243.                 element endpointID = doc.createElement("cbc:EndpointID");
  244.                 endpointID.setAttribute("schemeID", (string) cf.getOrDefault("schema_id", ""));
  245.                 endpointID.setTextContent((string) cf.getOrDefault("endpoint_id", ""));
  246.                 party.appendChild(endpointID);
  247.  
  248.                 element partyIdentification = doc.createElement("cac:PartyIdentification");
  249.                 party.appendChild(partyIdentification);
  250.  
  251.                 element identificationID = doc.createElement("cbc:ID");
  252.                 identificationID.setTextContent((string) cf.getOrDefault("party_id", ""));
  253.                 partyIdentification.appendChild(identificationID);
  254.  
  255.                 element postalAddress = doc.createElement("cac:PostalAddress");
  256.                 party.appendChild(postalAddress);
  257.  
  258.                 addPostalAdress(doc, postalAddress, cf);
  259.  
  260.                 element partyTaxScheme = doc.createElement("cac:PartyTaxScheme");
  261.                 party.appendChild(partyTaxScheme);
  262.  
  263.                 addPartyTaxSchema(doc, partyTaxScheme, cf);
  264.  
  265.                 element partyLegalEntity = doc.createElement("cac:PartyLegalEntity");
  266.                 party.appendChild(partyLegalEntity);
  267.  
  268.                 addPartyLegalEntity(doc, partyLegalEntity, type, cf);
  269.  
  270.                 element contact = doc.createElement("cac:Contact");
  271.                 party.appendChild(contact);
  272.  
  273.                 addContact(doc, contact, cf);
  274.         }
  275.  
  276.         private void addContact(document doc, element Contact, Map<String, Object> cf) {
  277.  
  278.                 if (!((string) cf.getOrDefault("name", "")).equals("")) {
  279.                         element name = doc.createElement("cbc:Name");
  280.                         name.setTextContent((string) cf.getOrDefault("name", ""));
  281.                         Contact.appendChild(name);
  282.                 }
  283.  
  284.                 element telephone = doc.createElement("cbc:Telephone");
  285.                 telephone.setTextContent((string) cf.getOrDefault("telephone", ""));
  286.                 Contact.appendChild(telephone);
  287.  
  288.                 element electronicMail = doc.createElement("cbc:ElectronicMail");
  289.                 electronicMail.setTextContent((string) cf.getOrDefault("electronic_mail", ""));
  290.                 Contact.appendChild(electronicMail);
  291.         }
  292.  
  293.         private void addPartyLegalEntity(document doc, element PartyLegalEntity, integer type, Map<String, Object> cf) {
  294.                 if (type == SUPPLIER) {
  295.                         element registrationName = doc.createElement("cbc:RegistrationName");
  296.                         registrationName.setTextContent((string) cf.getOrDefault("registration_name", ""));
  297.                         PartyLegalEntity.appendChild(registrationName);
  298.  
  299.                         element partyLegalEntityCompanyID = doc.createElement("cbc:CompanyID");
  300.                         partyLegalEntityCompanyID.setTextContent((string) cf.getOrDefault("company_id", ""));
  301.                         PartyLegalEntity.appendChild(partyLegalEntityCompanyID);
  302.  
  303.                         element companyLegalForm = doc.createElement("cbc:CompanyLegalForm");
  304.                         companyLegalForm.setTextContent((string) cf.getOrDefault("company_legal_form", ""));
  305.                         PartyLegalEntity.appendChild(companyLegalForm);
  306.                 }
  307.                 if (type == CUSTOMER) {
  308.                         element customerRegistrationName = doc.createElement("cbc:RegistrationName");
  309.                         customerRegistrationName.setTextContent((string) cf.getOrDefault("registration_name", ""));
  310.                         PartyLegalEntity.appendChild(customerRegistrationName);
  311.                 }
  312.  
  313.         }
  314.  
  315.         private void addPartyTaxSchema(document doc, element PartyTaxScheme, Map<String, Object> cf) {
  316.                 element companyID = doc.createElement("cbc:CompanyID");
  317.                 companyID.setTextContent((string) cf.getOrDefault("company_id_tax", ""));
  318.                 PartyTaxScheme.appendChild(companyID);
  319.  
  320.                 element taxScheme = doc.createElement("cac:TaxScheme");
  321.                 PartyTaxScheme.appendChild(taxScheme);
  322.  
  323.                 element taxSchemeID = doc.createElement("cbc:ID");
  324.                 taxSchemeID.setTextContent((string) cf.getOrDefault("tax_id", ""));
  325.                 taxScheme.appendChild(taxSchemeID);
  326.  
  327.         }
  328.  
  329.         private void addPostalAdress(document doc, element PostalAddress, Map<String, Object> cf) {
  330.                 element streetName = doc.createElement("cbc:StreetName");
  331.                 streetName.setTextContent((string) cf.getOrDefault("street_name", ""));
  332.                 PostalAddress.appendChild(streetName);
  333.  
  334.                 element cityName = doc.createElement("cbc:CityName");
  335.                 cityName.setTextContent((string) cf.getOrDefault("city_name", ""));
  336.                 PostalAddress.appendChild(cityName);
  337.  
  338.                 element countrySubentity = doc.createElement("cbc:CountrySubentity");
  339.                 countrySubentity.setTextContent((string) cf.getOrDefault("country_subentity", ""));
  340.                 PostalAddress.appendChild(countrySubentity);
  341.  
  342.                 element country = doc.createElement("cac:Country");
  343.                 PostalAddress.appendChild(country);
  344.  
  345.                 element IdentificationCode = doc.createElement("cbc:IdentificationCode");
  346.                 IdentificationCode.setTextContent((string) cf.getOrDefault("identification_code", ""));
  347.                 country.appendChild(IdentificationCode);
  348.  
  349.         }
  350.  
  351.         /*
  352.          * private void addASPMetadata(Document doc, Element Party) { Element EndpointID
  353.          * = doc.createElement("cbc:EndpointID"); EndpointID.setAttribute("schmeaID",
  354.          * "EM"); EndpointID.setTextContent("greendayssrl@yahoo.com");
  355.          * Party.appendChild(EndpointID);
  356.          *
  357.          * Element PartyIdentification = doc.createElement("cac:PartyIdentification");
  358.          * Party.appendChild(PartyIdentification);
  359.          *
  360.          * Element PartyIdentificationID = doc.createElement("cbc:ID");
  361.          * PartyIdentificationID.setTextContent("18903400");
  362.          * PartyIdentification.appendChild(PartyIdentificationID);
  363.          *
  364.          * }
  365.          *
  366.          * private void addACPMetadate(Document doc, Element CustomerParty) { Element
  367.          * CustomerEndpointID = doc.createElement("cbc:EndpointID");
  368.          * CustomerEndpointID.setAttribute("schmeaID", "EM");
  369.          * CustomerEndpointID.setTextContent("silviu.ponoran@gmail.com");
  370.          * CustomerParty.appendChild(CustomerEndpointID);
  371.          *
  372.          * Element CustomerPartyIdentification =
  373.          * doc.createElement("cac:PartyIdentification");
  374.          * CustomerParty.appendChild(CustomerPartyIdentification);
  375.          *
  376.          * Element CustomerPartyIdentificationID = doc.createElement("cbc:ID");
  377.          * CustomerPartyIdentificationID.setTextContent("4331031");
  378.          * CustomerPartyIdentification.appendChild(CustomerPartyIdentificationID);
  379.          *
  380.          * }
  381.          */
  382.  
  383.         /*
  384.          * private void addCustomerAdress(Document doc, Element CustomerPostalAddress) {
  385.          * Element CustomerStreetName = doc.createElement("cac:PostalAddress");
  386.          * CustomerStreetName.setTextContent("ZLATNA, PTA. UNIRII, NR.1A");
  387.          * CustomerPostalAddress.appendChild(CustomerStreetName);
  388.          *
  389.          * Element CustomerCityName = doc.createElement("cbc:CityName");
  390.          * CustomerCityName.setTextContent("ZLATNA");
  391.          * CustomerPostalAddress.appendChild(CustomerCityName);
  392.          *
  393.          * Element CustomerCountrySubentity = doc.createElement("cbc:CountrySubentity");
  394.          * CustomerCountrySubentity.setTextContent("AB");
  395.          * CustomerPostalAddress.appendChild(CustomerCountrySubentity);
  396.          *
  397.          * Element CustomerCountry = doc.createElement("cac:Country");
  398.          * CustomerPostalAddress.appendChild(CustomerCountry);
  399.          *
  400.          * Element CustomerIdentificationCode =
  401.          * doc.createElement("cbc:IdentificationCode");
  402.          * CustomerIdentificationCode.setTextContent("RO");
  403.          * CustomerCountry.appendChild(CustomerIdentificationCode);
  404.          *
  405.          * }
  406.          */
  407.  
  408.         /*
  409.          * private void addCustomerTaxSchema(Document doc, Element
  410.          * CustomerPartyTaxScheme) { Element CustomerCompanyID =
  411.          * doc.createElement("cbc:CompanyID");
  412.          * CustomerCompanyID.setTextContent("RO4331031");
  413.          * CustomerPartyTaxScheme.appendChild(CustomerCompanyID);
  414.          *
  415.          * Element CustomerTaxScheme = doc.createElement("cac:TaxScheme");
  416.          * CustomerPartyTaxScheme.appendChild(CustomerTaxScheme);
  417.          *
  418.          * Element CustomerTaxSchemeID = doc.createElement("cbc:ID");
  419.          * CustomerTaxSchemeID.setTextContent("VAT");
  420.          * CustomerTaxScheme.appendChild(CustomerTaxSchemeID); }
  421.          *
  422.          * private void addCustomerContact(Document doc, Element CustomerContact) {
  423.          * Element CustomerTelephone = doc.createElement("cbc:Telephone");
  424.          * CustomerTelephone.setTextContent("0258856337");
  425.          * CustomerContact.appendChild(CustomerTelephone);
  426.          *
  427.          * Element CustomerElectronicMail = doc.createElement("cbc:ElectronicMail");
  428.          * CustomerElectronicMail.setTextContent("silviu.ponoran@gmail.com");
  429.          * CustomerContact.appendChild(CustomerElectronicMail); }
  430.          */
  431.         private void addTaxTotal(document doc, element rootElement, Map<?, String> factura) {
  432.                 element taxTotal = doc.createElement("cac:TaxTotal");
  433.                 rootElement.appendChild(taxTotal);
  434.  
  435.                 element taxAmount = doc.createElement("cbc:TaxAmount");
  436.                 taxAmount.setAttribute("currencyID", (string) factura.getOrDefault("currency_id", ""));
  437.                 taxAmount.setTextContent((string) factura.getOrDefault("tax_amount", ""));
  438.                 taxTotal.appendChild(taxAmount);
  439.  
  440.                 element taxSubtotal = doc.createElement("cac:TaxSubtotal");
  441.                 taxTotal.appendChild(taxSubtotal);
  442.  
  443.                 element taxableAmount = doc.createElement("cbc:TaxableAmount");
  444.                 taxableAmount.setAttribute("currencyID", (string) factura.getOrDefault("currency_id", ""));
  445.                 taxableAmount.setTextContent((string) factura.getOrDefault("taxable_amount", ""));
  446.                 taxSubtotal.appendChild(taxableAmount);
  447.  
  448.                 element taxAmountSubtotal = doc.createElement("cbc:TaxAmount");
  449.                 taxAmountSubtotal.setAttribute("currencyID", (string) factura.getOrDefault("currency_id", ""));
  450.                 taxAmountSubtotal.setTextContent((string) factura.getOrDefault("tax_amount_subtotal", ""));
  451.                 taxSubtotal.appendChild(taxAmountSubtotal);
  452.  
  453.                 element taxCategory = doc.createElement("cac:TaxCategory");
  454.                 taxSubtotal.appendChild(taxCategory);
  455.  
  456.                 element taxCategoryID = doc.createElement("cbc:ID");
  457.                 taxCategoryID.setTextContent((string) factura.getOrDefault("tax_category_id", ""));
  458.                 taxCategory.appendChild(taxCategoryID);
  459.  
  460.                 element percent = doc.createElement("cbc:Percent");
  461.                 percent.setTextContent((string) factura.getOrDefault("tax_category_percent", ""));
  462.                 taxCategory.appendChild(percent);
  463.  
  464.                 element taxSchemeSubtotal = doc.createElement("cac:TaxScheme");
  465.                 taxCategory.appendChild(taxSchemeSubtotal);
  466.  
  467.                 element taxSchemeSubtotalID = doc.createElement("cbc:ID");
  468.                 taxSchemeSubtotalID.setTextContent((string) factura.getOrDefault("tax_category_scheme_id", ""));
  469.                 taxSchemeSubtotal.appendChild(taxSchemeSubtotalID);
  470.         }
  471.  
  472.         private void addLegalMonetaryTotal(document doc, element rootElement, Map<?, String> factura) {
  473.                 element legalMonetaryTotal = doc.createElement("cac:LegalMonetaryTotal");
  474.                 rootElement.appendChild(legalMonetaryTotal);
  475.  
  476.                 element lineExtensionAmount = doc.createElement("cbc:LineExtensionAmount");
  477.                 lineExtensionAmount.setAttribute("currencyID", (string) factura.getOrDefault("currency_id", ""));
  478.                 lineExtensionAmount.setTextContent((string) factura.getOrDefault("line_extension_amount", ""));
  479.                 legalMonetaryTotal.appendChild(lineExtensionAmount);
  480.  
  481.                 element taxExclusiveAmount = doc.createElement("cbc:TaxExclusiveAmount");
  482.                 taxExclusiveAmount.setAttribute("currencyID", (string) factura.getOrDefault("currency_id", ""));
  483.                 taxExclusiveAmount.setTextContent((string) factura.getOrDefault("tax_exclusive_amount", ""));
  484.                 legalMonetaryTotal.appendChild(taxExclusiveAmount);
  485.  
  486.                 element taxInclusiveAmount = doc.createElement("cbc:TaxInclusiveAmount");
  487.                 taxInclusiveAmount.setAttribute("currencyID", (string) factura.getOrDefault("currency_id", ""));
  488.                 taxInclusiveAmount.setTextContent((string) factura.getOrDefault("tax_inclusive_amount", ""));
  489.                 legalMonetaryTotal.appendChild(taxInclusiveAmount);
  490.  
  491.                 element payableAmount = doc.createElement("cbc:PayableAmount");
  492.                 payableAmount.setAttribute("currencyID", (string) factura.getOrDefault("currency_id", ""));
  493.                 payableAmount.setTextContent((string) factura.getOrDefault("payable_amount", ""));
  494.                 legalMonetaryTotal.appendChild(payableAmount);
  495.  
  496.         }
  497.  
  498.         private void addInvoiceLine(document doc, element rootElement, Map<?, String> linie) {
  499.                 element invoiceLine = doc.createElement("cac:InvoiceLine");
  500.                 rootElement.appendChild(invoiceLine);
  501.  
  502.                 element invoiceLineID = doc.createElement("cbc:ID");
  503.                 invoiceLineID.setTextContent((string) linie.getOrDefault("invoice_line_id", ""));
  504.                 invoiceLine.appendChild(invoiceLineID);
  505.  
  506.                 element invoicedQuantity = doc.createElement("cbc:InvoicedQuantity");
  507.                 invoicedQuantity.setAttribute("unitCode", (string) linie.getOrDefault("unit_code_quantity", ""));
  508.                 invoicedQuantity.setTextContent((string) linie.getOrDefault("invoiced_quantity", ""));
  509.                 invoiceLine.appendChild(invoicedQuantity);
  510.  
  511.                 element lineExtensionAmountItem = doc.createElement("cbc:LineExtensionAmount");
  512.                 lineExtensionAmountItem.setAttribute("currencyID", (string) linie.getOrDefault("currency_id", ""));
  513.                 lineExtensionAmountItem.setTextContent((string) linie.getOrDefault("line_extension_amount", ""));
  514.                 invoiceLine.appendChild(lineExtensionAmountItem);
  515.  
  516.                 element item = doc.createElement("cac:Item");
  517.                 invoiceLine.appendChild(item);
  518.  
  519.                 element itemName = doc.createElement("cbc:Name");
  520.                 itemName.setTextContent((string) linie.getOrDefault("item_name", ""));
  521.                 item.appendChild(itemName);
  522.  
  523.                 element classifiedTaxCategory = doc.createElement("cac:ClassifiedTaxCategory");
  524.                 item.appendChild(classifiedTaxCategory);
  525.  
  526.                 element classifiedTaxCategoryID = doc.createElement("cbc:ID");
  527.                 classifiedTaxCategoryID.setTextContent((string) linie.getOrDefault("item_tax_category_id", ""));
  528.                 classifiedTaxCategory.appendChild(classifiedTaxCategoryID);
  529.  
  530.                 element classifiedTaxCategoryPercent = doc.createElement("cbc:Percent");
  531.                 classifiedTaxCategoryPercent.setTextContent((string) linie.getOrDefault("item_tax_category_percent", ""));
  532.                 classifiedTaxCategory.appendChild(classifiedTaxCategoryPercent);
  533.  
  534.                 element classifiedTaxScheme = doc.createElement("cac:TaxScheme");
  535.                 classifiedTaxCategory.appendChild(classifiedTaxScheme);
  536.  
  537.                 element classifiedTaxSchemeID = doc.createElement("cbc:ID");
  538.                 classifiedTaxSchemeID.setTextContent((string) linie.getOrDefault("item_tax_category_scheme_id", ""));
  539.                 classifiedTaxScheme.appendChild(classifiedTaxSchemeID);
  540.  
  541.                 element price = doc.createElement("cac:Price");
  542.                 invoiceLine.appendChild(price);
  543.  
  544.                 element priceAmount = doc.createElement("cbc:PriceAmount");
  545.                 priceAmount.setAttribute("currencyID", (string) linie.getOrDefault("currency_id", ""));
  546.                 priceAmount.setTextContent((string) linie.getOrDefault("price_amount", ""));
  547.                 price.appendChild(priceAmount);
  548.         }
  549.  
  550. }
Parsed in 0.738 seconds