Pozdrav ljudi, može mali help? Pitao sam i APIS ali sam dobio generalni odgovor... Znači imam JAVA program i za implementaciju fiskalizaciju napojnica. Ali mi javlja da podaci računa su drugačiji nego podaci već poslanog računa iako sam već 5 puta pregledao i property-e i iz baze u bazu sve sve i ne mogu naći u čemu je stvar, pa ako može help ... Doslovno je copy paste kako sam i gore našao računa, u kombinaciji s iznosom napojnice i tipom plaćanja.
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
SOAPEnvelope envelope = soapMessage.getSOAPPart().getEnvelope();
envelope.addNamespaceDeclaration(myNamespace, myNamespaceURI);
SOAPBody soapBody = envelope.getBody();
SOAPElement rootElem = soapBody.addChildElement("
NapojnicaZahtjev", myNamespace);
Name idName = envelope.createName("Id");
rootElem.addAttribute(idName, "NapojnicaZahtjev");
rootElem.setIdAttribute("Id", true);
// Header
Date currentDate = new Date();
SOAPElement headerElem = rootElem.addChildElement("Zaglavlje", myNamespace);
headerElem.addChildElement("IdPoruke", myNamespace).addTextNode(UUID.randomUUID().toStrin g());
headerElem.addChildElement("DatumVrijeme", myNamespace).addTextNode(new SimpleDateFormat("dd.MM.yyyy").format(currentDate) + "T" + new SimpleDateFormat("HH:mm
s").format(currentDate));
// Invoice data 1
SOAPElement invoiceElem = rootElem.addChildElement("Racun", myNamespace);
invoiceElem.addChildElement("Oib", myNamespace).addTextNode(GetFiscOib(false));
invoiceElem.addChildElement("USustPdv", myNamespace).addTextNode(invoice.isInVatSystem ? "true" : "false");
invoiceElem.addChildElement("DatVrijeme", myNamespace).addTextNode(new SimpleDateFormat("dd.MM.yyyy").format(invoice.date ) + "T" + new SimpleDateFormat("HH:mm
s").format(invoice.date)) ;
invoiceElem.addChildElement("OznSlijed", myNamespace).addTextNode("P");
SOAPElement invoiceNumberElem = invoiceElem.addChildElement("BrRac", myNamespace);
invoiceNumberElem.addChildElement("BrOznRac", myNamespace).addTextNode("" + invoice.invoiceNumber);
invoiceNumberElem.addChildElement("OznPosPr", myNamespace).addTextNode("" + invoice.officeTag);
invoiceNumberElem.addChildElement("OznNapUr", myNamespace).addTextNode("" + invoice.cashRegisterNumber);
InvoiceTaxes invoiceTaxes = ClientAppUtils.CalculateTaxes(invoice);
SOAPElement taxesElem = invoiceElem.addChildElement("Pdv", myNamespace);
for (int i = 0; i < invoiceTaxes.taxRates.size(); ++i){
if(invoiceTaxes.isConsumpionTax.get(i))
continue;
SOAPElement taxElem = taxesElem.addChildElement("Porez", myNamespace);
taxElem.addChildElement("Stopa", myNamespace).addTextNode(ClientAppUtils.DoubleToPr iceString(invoiceTaxes.taxRates.get(i)));
taxElem.addChildElement("Osnovica", myNamespace).addTextNode(ClientAppUtils.DoubleToPr iceString(invoiceTaxes.taxBases.get(i)));
taxElem.addChildElement("Iznos", myNamespace).addTextNode(ClientAppUtils.DoubleToPr iceString(invoiceTaxes.taxAmounts.get(i)));
}
float totalPrice = ClientAppUtils.FloatToPriceFloat(invoice.totalPric e * (100f - invoice.discountPercentage) / 100f - invoice.discountValue);
invoiceElem.addChildElement("IznosUkupno", myNamespace).addTextNode(ClientAppUtils.FloatToPri ceString(totalPrice));
invoiceElem.addChildElement("NacinPlac", myNamespace).addTextNode(GetPaymentMethodCode(invo ice));
invoiceElem.addChildElement("OibOper", myNamespace).addTextNode(invoice.staffOib);
invoiceElem.addChildElement("ZastKod", myNamespace).addTextNode(invoice.zki);
invoiceElem.addChildElement("NakDost", myNamespace).addTextNode("false");
SOAPElement napojnicaElement = invoiceElem.addChildElement("Napojnica", myNamespace);
DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.forLanguageTag("hr-HR"));
symbols.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00", symbols);
String formattedValue = df.format((double) iznosNapojnice);
System.out.println(formattedValue);
napojnicaElement.addChildElement("iznosNapojnice", myNamespace).addTextNode(formattedValue);
napojnicaElement.addChildElement("nacinPlacanjaNap ojnice", myNamespace).addTextNode(invoice.tipNapojnice);
// Save message
soapMessage.setProperty(SOAPMessage.WRITE_XML_DECL ARATION, "true");
soapMessage.saveChanges();
// Sign the message
SignMessage(rootElem, "#NapojnicaZahtjev", !invoice.isTest);
soapMessage.saveChanges();
SOAPConnection soapConnection = SOAPConnectionFactory.newInstance().createConnecti on();
SOAPMessage soapResponse = soapConnection.call(soapMessage, FISK_URL_TEST);
final int timeout;
if (isNow){
timeout = 1000 * ClientAppSettings.GetInt(Values.AppSettingsEnum.SE TTINGS_FISCALISATION_WAITTIME.ordinal());
} else {
timeout = 1000 * ClientAppSettings.GetInt(Values.AppSettingsEnum.SE TTINGS_FISCALISATION_WAITTIME_REPEAT.ordinal());
}
URL endpoint = new URL(new URL(invoice.isTest ? FISK_URL_TEST : FISK_URL_PROD), "", new URLStreamHandler() {
@Override
protected URLConnection openConnection(URL url) throws IOException {
URL target = new URL(url.toString());
URLConnection connection = target.openConnection();
// Connection settings
connection.setConnectTimeout(timeout);
connection.setReadTimeout(timeout);
return connection;
}
});
SOAPMessage soapResponse = soapConnection.call(soapMessage, endpoint);
ClientAppLogger.GetInstance().LogFiscalizationXMLR eceived(soapResponse, "R-" + invoice.invoiceNumber + "-"+ invoice.officeTag + "-" + invoice.cashRegisterNumber);
Iterator reponseIterator = soapResponse.getSOAPBody().getChildElements();
while(reponseIterator.hasNext()){
Node responseNode = (Node) reponseIterator.next();
ClientAppLogger.GetInstance().LogMessage("Response node: " + responseNode.getNodeName());
if("tns:NapojnicaOdgovor".equals(responseNode.getN odeName())){
ClientAppLogger.GetInstance().LogMessage(responseN ode.getTextContent());
NodeList racunOdgovorNodes = responseNode.getChildNodes();
for(int i = 0; i < racunOdgovorNodes.getLength(); ++i){
ClientAppLogger.GetInstance().LogMessage("racun odgovor node: " + responseNode.getNodeName());
Node racunOdgovorNode = (Node) racunOdgovorNodes.item(i);
if("tns:PorukaOdgovora".equals(racunOdgovorNode.ge tNodeName())){
NodeList porukaOdgovoraNodes = responseNode.getChildNodes();
for(int j = 0; j < porukaOdgovoraNodes.getLength(); ++j){
Node porukaOdgovoraNode = (Node) porukaOdgovoraNodes.item(j);
ClientAppLogger.GetInstance().LogMessage("poruka odgovora node: " + porukaOdgovoraNodes.item(j));
if("tns:SifraPoruke".equals(porukaOdgovoraNode.get NodeName())){
ClientAppLogger.GetInstance().LogMessage(porukaOdg ovoraNode.getTextContent());
};
}
}
else if ("tns:Greske".equals(racunOdgovorNode.getNodeName( ))){
ClientAppLogger.GetInstance().LogMessage(racunOdgo vorNode.getTextContent());
NodeList porukaGresakaNodes = racunOdgovorNode.getChildNodes();
for(int k = 0; k < porukaGresakaNodes.getLength(); ++k){
Node porukaGresakaNode = (Node) porukaGresakaNodes.item(k);
ClientAppLogger.GetInstance().LogMessage("poruka gresaka node: " + porukaGresakaNodes.item(k));
if ("tns:Greska".equals(porukaGresakaNode.getNodeName ())){
NodeList porukaNaGreskiNodes = porukaGresakaNode.getChildNodes();
for(int m = 0; m < porukaNaGreskiNodes.getLength(); ++m){
Node porukaGreskeNode = (Node) porukaNaGreskiNodes.item(m);
ClientAppLogger.GetInstance().LogMessage("poruka na greski node: " + porukaNaGreskiNodes.item(m));
if("tns:PorukaGreske".equals(porukaGreskeNode.getN odeName())){
ClientAppLogger.GetInstance().LogMessage(porukaGre skeNode.getTextContent());
}
}
}
}
}
}
}
}