JS SALDOC με 2 ιδια προϊόντα σε ITELINES

60 views
Skip to first unread message

Redin Neza

unread,
May 26, 2026, 8:05:46 AM (12 days ago) May 26
to Softone Developers Network
Καλησπέρα σε όλους, προσπαθώ να δημιουργήσω ένα παραστατικό μέσω Advanced Javascript και να προσθέσω 2 φορές το ίδιο προϊόν με διαφορετική τιμή αλλά πάντα βάζει την δεύτερη προσθήκη πάνω στην πρώτη και κρατάει την τιμή της πρώτης.
Έχω δοκιμάσει να ορίσω unique MTRLINES και LINENUM αλλά δεν βοήθησε, ενώ με setData γίνεται κανονικά με unique LINENUM.

Ο κώδικας JS είναι ο παρακάτω: (τον βρήκα και έκλεψα από εδώ)
function AddOrder(obj) {
if (CheckSec(obj)) {
return { success: false, error: "Auth" };
}

var SDObj = X.CreateObj('SALDOC');
try {
SDObj.DBINSERT;
var TFINDOC = SDObj.FindTable('FINDOC');
TFINDOC.Edit;
TFINDOC.SERIES = 1019;
TFINDOC.TRDR = X.GETSQLDATASET("SELECT TOP 1 TR.TRDR FROM TRDR TR JOIN TRDEXTRA TE ON TE.TRDR=TR.TRDR LEFT JOIN FINDOC FIN ON FIN.TRDR=TR.TRDR WHERE TR.COMPANY=30 AND TR.PHONE01='"+obj.phone+"' ORDER BY FIN.UPDDATE DESC",null).TRDR;;
TFINDOC.PAYMENT = 6000;
TFINDOC.SHIPMENT = 1000;
TFINDOC.REMARKS = "TEST";
TFINDOC.CCCShipFName = obj.fname;
TFINDOC.CCCShipLName = obj.lname;
TFINDOC.CCCB2CNew = obj.orderid;
TFINDOC.COMMENTS = obj.comments;
TFINDOC.FINSTATES = 1002;
TFINDOC.SALESMAN = 182;

var TMTRDOC = SDObj.FindTable('MTRDOC');
TMTRDOC.SHIPPINGADDR = obj.street;
TMTRDOC.SHPZIP = obj.zip;
TMTRDOC.SHPCITY = obj.city;

var TITELINES = SDObj.FindTable('ITELINES');
var items = obj.items;
for (var item in items){
TITELINES.Append;
TITELINES.MTRLINES = items[item].linenum;
TITELINES.LINENUM = items[item].linenum;
TITELINES.MTRL = X.GETSQLDATASET("SELECT MTRL FROM MTRL WHERE COMPANY=30 AND CODE='"+items[item].code+"'",null).mtrl;
TITELINES.VAT = 1410;
TITELINES.QTY1 = items[item].qty;
TITELINES.PRICE = items[item].price;
TITELINES.LINEVAL = items[item].qty * items[item].price;
TITELINES.DISC1PRC = 0;
TITELINES.Post;
}
var id = SDObj.DBPOST;
if (id > 0){
return 'FINDOC: ' + id;
}
} catch (e) {
if (SDObj != null){
return "Error: " +e.message+" nObject Error: "+SDObj.GETLASTERROR;
}else{
return "Error: " +e.message;
}
}finally {

}
}

και τα δεδομένα που στέλνω:
{
    "clientID": "<clientid>",
    "phone": "<phone>",
    "fname": "<firstname>",
    "lname": "<lastname>",
    "orderid": "<orderid>",
    "street": "<address>",
    "zip": "<zipcode>",
    "city": "<city>",
    "comments":"<comment>",
    "items": [
        {
            "linenum":1,
            "code": "<product code1>",
            "qty": 2,
            "price": 8.9
        },
        {
            "linenum":2,
            "code": "product code2",
            "qty": 2,
            "price": 2
        },
        {
            "linenum":3,
            "code": "product code3",
            "qty": 3,
            "price": 14.9
        },
        {
            "linenum":4,
            "code": "product code 2",
            "qty": 3,
            "price": 1.1
        }
    ]
}

Chris Panagiotopoulos

unread,
May 26, 2026, 8:47:54 AM (12 days ago) May 26
to Softone Developers Network
Το MTRLINES είναι auto increment δεν χρειάζεται να το δώσεις.

Επίσης η for in κάνει σωστό iterate ? Δοκίμασε 

for (var i = 0; i < items.length; i++) {

TITELINES.Append;

TITELINES.LINENUM = i + 1;
TITELINES.VAT = 1410;
TITELINES.QTY1 = items[i].qty;
..
..

Redin Neza

unread,
May 26, 2026, 8:53:47 AM (12 days ago) May 26
to Softone Developers Network
Ναί, η for λειτουργεί κανονικά. απλα αντί να βάλει 4 γραμμές με το <product code2> σε ITELINES 2 και 4 με διαφορετική τιμή παει και τα βάζει όλα στο ITELINES 2 με την πρώτη τιμή.

Δοκίμασα με αυτό που μου έστειλες αλλά έχω το ίδιο αποτέλεσμα.

Chris Panagiotopoulos

unread,
May 26, 2026, 9:05:15 AM (12 days ago) May 26
to Softone Developers Network
Τις προσθέτει τις ποσότητες ; 

Redin Neza

unread,
May 26, 2026, 9:12:07 AM (12 days ago) May 26
to Softone Developers Network
ναι κανονικά, εμφανίζει 5 τεμάχια με τιμή 2€/τμχ

Chris Panagiotopoulos

unread,
May 26, 2026, 9:13:11 AM (12 days ago) May 26
to Softone Developers Network
Untitled.pngΤο ρωτάω γιατί υπάρχει αυτή η παράμετρος στον τύπο την σειράς.

Redin Neza

unread,
May 26, 2026, 9:27:08 AM (12 days ago) May 26
to Softone Developers Network
Αυτό είναι μάλλον, είναι ρυθμισμένο σε "Συμπύκνωση", το περίεργο είναι πως με webservices και setData το δέχεται κανονικά όπως το θέλω και με τα ίδια ακριβώς δεδομένα.
Reply all
Reply to author
Forward
0 new messages