Καλησπέρα ομάδα,
Έχω αναλάβει ένα project όπου μέσα από ένα παραστατικό πωλήσεων πρέπει να γίνεται έλεγχος ενός κωδικού εργοστασίου (CODE2).
Για αυτό τον σκοπό, έχει προστεθεί ένα RunButton και το πεδίο SALDOC.VARCHAR01. Ο χρήστης εισάγει έναν κωδικό στο πεδίο και πατώντας το κουμπί, εκτελείται ο εξής έλεγχος:
1️⃣ Αναζήτηση του κωδικού στον πίνακα MTRL (CODE2).
2️⃣ Αν δεν υπάρχει, γίνεται κλήση στο API του προμηθευτή για να βρεθεί το προϊόν.
3️⃣ Αν εντοπιστεί στο API, ζητείται επιβεβαίωση από τον χρήστη για να δημιουργηθεί το νέο είδος.
4️⃣ Αν ο χρήστης επιβεβαιώσει, εκτελείται το X.CreateObj("MTRL") ώστε να δημιουργηθεί το προϊόν στο SoftOne και να προστεθεί στις γραμμές (ITELINES).
Πρόβλημα:
Όταν καλώ X.CreateObj("MTRL"), λαμβάνω το σφάλμα:
❌ "Σφάλμα: Δεν ήταν δυνατή η δημιουργία του αντικειμένου MTRL."
Δοκιμές που έκανα:
✅ X.CreateObjForm("MTRL") → Εμφανίζει το ίδιο σφάλμα.
Παρακάτω φαίνεται το script που έχω φτιάξει:
function checkOktabitAPI(factoryCode) {
try {
let url = "...";
// <-- Το πραγματικό url έχει αφαιρεθεί
let token = "...";
// <-- Το πραγματικό token έχει αφαιρεθεί
let xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("GET", url, false);
xmlhttp.setRequestHeader("Authorization", "Token " + token);
xmlhttp.setRequestHeader("Content-Type", "application/xml");
xmlhttp.send();
if (xmlhttp.status != 200) {
X.WARNING("Σφάλμα κατά την κλήση του API. Κωδικός σφάλματος: " + xmlhttp.status);
return;
}
let responseText = xmlhttp.responseText;
if (!responseText) {
X.WARNING("Δεν ελήφθη απάντηση από το API της ΟΚΤΑΒΙΤ.");
return;
}
let xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(responseText);
let items = xmlDoc.getElementsByTagName("item");
var found = false;
var description = "";
var price = 0;
for (var i = 0; i < items.length; i++) {
var oktabitCode = items[i].getElementsByTagName("product_code")[0];
if (oktabitCode && oktabitCode.text == factoryCode) {
found = true;
var nameNode = items[i].getElementsByTagName("titlos")[0];
var priceNode = items[i].getElementsByTagName("timi_xontrikis")[0];
description = nameNode ? nameNode.text : "Άγνωστο";
price = priceNode ? parseFloat(priceNode.text) : 0;
break;
}
}
if (found) {
X.WARNING("Ο κωδικός " + factoryCode + " βρέθηκε στην ΟΚΤΑΒΙΤ.\n" +
"Περιγραφή: " + description + "\n" +
"Τιμή: " + price.toFixed(2) + "€");
let addItem = X.ASKYESNO("Θέλετε να καταχωρήσουμε το νέο είδος στο SoftOne;");
if (addItem) {
createNewItem(factoryCode, description, price);
}
} else {
X.WARNING("Ο κωδικός " + factoryCode + " ΔΕΝ βρέθηκε στην ΟΚΤΑΒΙΤ.");
}
} catch (e) {
X.WARNING("Σφάλμα επικοινωνίας με την ΟΚΤΑΒΙΤ: " + e.message);
}
}
function createNewItem(factoryCode, description, price) {
try {
let myObj = X.CreateObjForm("MTRL");
if (!myObj) {
X.WARNING("Σφάλμα: Δεν ήταν δυνατή η δημιουργία του αντικειμένου MTRL.");
return;
}
myObj.DBInsert;
myObj.CODE2 = factoryCode;
myObj.NAME = description;
myObj.PRICEW = price;
myObj.PRICER = price;
myObj.MTRACN = 301;
myObj.BUSUNITS = 5299;
myObj.MTRMANFCTR = 47;
myObj.MTRCATEGORY = 13;
myObj.EXPN1 = 305;
myObj.EXPVAL1 = price;
myObj.POST;
X.WARNING("Το νέο είδος '" + description + "' καταχωρήθηκε επιτυχώς στο SoftOne.");
addItemToSalesDoc(myObj.MTRL, description, price);
} catch (e) {
X.WARNING("Σφάλμα κατά την καταχώρηση του νέου είδους: " + e.message);
}
}
Κάθε βοήθεια ευπρόσδεκτη!
Ευχαριστώ εκ των προτέρων.
Για την Fulltech,
Μιχάλης Φούλος |Μηχανογράφηση Επιχειρήσεων| FULLTECH
Κιν +30 6977569470 | Τηλ: +30 2531404287|m.foulos@fullltech.gr
Ανδρούτσου 20| 69100 Κομοτηνή | www.fulltech.gr
--
Softone Developers Network group.
To post to this group, send email to so...@googlegroups.com
---
Λάβατε αυτό το μήνυμα επειδή έχετε εγγραφεί στην ομάδα "Softone Developers Network" των Ομάδων Google.
Για να απεγγραφείτε απ' αυτή την ομάδα και να σταματήσετε να λαμβάνετε μηνύματα ηλεκτρονικού ταχυδρομείου απ' αυτή, στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση soft1+un...@googlegroups.com.
Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/54eb445b-ff24-4ea3-bb56-45c4a1ca2a4dn%40googlegroups.com.
Το πρόβλημα που αντιμετωπίζω είναι το εξής:
Κάθε βοήθεια θα ήταν πολύτιμη! Ευχαριστώ εκ των προτέρων.