Import Script - Παραγγελίες με χρώμα

65 views
Skip to first unread message

Antonios Balis

unread,
Sep 29, 2025, 7:39:59 AMSep 29
to Softone Developers Network
Καλησπέρα σας,

προσπαθώ να περάσω μια παραγγελία με import script.

Έχω καταφέρει μέχρι το σημείο να περνάει πολλά παραστατικά με πολλά είδη χωρίς χρώμα.

Όταν όμως προσπαθώ με χρώμα δεν τα καταφέρνω.

Νομίζω πως κάτι κάνω λάθος μόλις προσθέτω το VQTYANAL



Ο κώδικας μου είναι ο παρακάτω

Form {
  [TABLES]
ImpTable=;;;;Master;3;0

  [ImpTable]
  vExcel   = 1;4000;1;1;0;Orders(Excel);$Filename;;;
vDBTable = 1;64;1;0;0;TableName;;;;CCCEXCELORDER

[PANELS]
PANEL10=0;;0;50

[PANEL10]
ImpTable.vExcel
ImpTable.vDBTable

}

//--Converters
Converter ConvCustomer(TRDR,'COMPANY;SODTYPE=13;CODE',TRDR);


Import ImpOrder(sHead,sLine,sAnal) into 'SALDOC,T,WARNINGS:ON'{
  FINDOC sHead {
  TRNDATE  = sHead.TRNDATE;
  COMPANY  = sHead.COMPANY;
  BRANCH   = sHead.BRANCH;
 SERIES   = sHead.SERIES;
   SHIPKIND = sHead.SHIPKIND;
   SHIPMENT = sHead.SHIPMENT;
 TRDR     = ConvCustomer(:X.SYS.COMPANY,sHead.TRDRCODE);
}

MTRDOC sHead {
WHOUSE = sHead.WHOUSE;
}

ITELINES sLine {
MTRLINES   = sLine.AA;
MTRL       = sLine.MTRL;        
QTY1    = sLine.QTY1;
PRICE    = sLine.PRICE;
NUM01    = sLine.NUM01;
DISC1PRC   = sLine.DISC1PRC;
DISC2PRC = sLine.DISC2PRC;
}


 VQTYANAL sAnal {
 MTRLINES   =   sAnal.AA;
CDIMLINES1 = sAnal.CDL;
CDIMLINES2 = 0
CDIMLINES3 = 0;
QTY        = sAnal.QTY1;
QTY1       = sAnal.QTY1;
  }

ITELINES sLine ('MTRLINES','mtrl'){
  QTY1= sLine.QTY1;
QTY= sLine.QTY1;
}

}

Connect Xplorer SoftOne {
 Connect();


sHead =
    SELECT DISTINCT
             TRDRCODE,
             TRNDATE,    
             COMPANY,
             BRANCH,
             SERIES,
             SHIPKIND,
             SHIPMENT,
             WHOUSE
    FROM dbo.$REMOVEQUOTES(:$ImpTable.vDBTable);

   sLine =
    SELECT
      CAST(NULLIF(LTRIM(RTRIM(d.AA)),'') AS INT)                                   AS AA,
      LTRIM(RTRIM(d.TRDRCODE))                                                     AS TRDRCODE,
      TRNDATE,
      LTRIM(RTRIM(d.SERIES))                       AS SERIES,
      LTRIM(RTRIM(d.ITEMCODE))                                          AS ITEMCODE,
(SELECT TOP 1
m.MTRL
FROM MTRL m
WHERE m.COMPANY = :X.SYS.COMPANY
AND m.SODTYPE = 51
AND (m.CODE  = LTRIM(RTRIM(d.ITEMCODE))) OR m.CODE1 = LTRIM(RTRIM(d.ITEMCODE))) AS MTRL,

      COALESCE(CAST(NULLIF(LTRIM(RTRIM(d.QTY1)),'') AS NUMERIC(18,5)),0)          AS QTY1,
     COALESCE(CAST(NULLIF(LTRIM(RTRIM(d.PRICE  )),'') AS NUMERIC(18,5)),0)          AS  PRICE  ,
     COALESCE(CAST(NULLIF(LTRIM(RTRIM(d.NMU01  )),'') AS NUMERIC(18,5)),0)          AS    NUM01  ,
     COALESCE(CAST(NULLIF(LTRIM(RTRIM(d. DISC1PRC  )),'') AS NUMERIC(18,5)),0)          AS     DISC1PRC  ,
     COALESCE(CAST(NULLIF(LTRIM(RTRIM(d. DISC2PRC  )),'') AS NUMERIC(18,5)),0)          AS     DISC2PRC 
    FROM dbo.$REMOVEQUOTES(:$ImpTable.vDBTable) d
    WHERE (d.COLOR IS NULL OR LTRIM(RTRIM(d.COLOR)) = '')
      AND LTRIM(RTRIM(d.TRDRCODE)) = :$sHead.TRDRCODE
      AND d.TRNDATE                = :$sHead.TRNDATE
      AND CAST(d.SERIES  AS INT)   = :$sHead.SERIES
    ORDER BY CAST(NULLIF(LTRIM(RTRIM(d.AA)),'') AS INT);


sAnal=
   SELECT AA, ITEMCODE,(SELECT TOP 1
m.cdim1
FROM MTRL m
WHERE m.COMPANY = :X.SYS.COMPANY
AND m.SODTYPE = 51
AND (m.CODE  = LTRIM(RTRIM(d.ITEMCODE))) OR m.CODE1 = LTRIM(RTRIM(d.ITEMCODE))) AS cdim,
(SELECT TOP 1 CDIMLINES  FROM MTRL M
JOIN CDIMLINES C ON  C.CDIM=M.CDIM1
WHERE M.COMPANY=:X.SYS.COMPANY
AND (m.CODE  = LTRIM(RTRIM(d.ITEMCODE))) OR m.CODE1 = LTRIM(RTRIM(d.ITEMCODE))
AND (C.CODE  = LTRIM(RTRIM(d.COLOR))) OR C.NAME = LTRIM(RTRIM(d.COLOR))
) AS CDL,
COLOR,QTY1
FROM CCCEXCELORDER D
WHERE D.ITEMCODE=:$sHead.ITEMCODE AND D.COLOR IS NOT NULL

}


include 'PiLib';
include 'ModuleIntf';
include 'SysRequest';

var a,x,vRow,vRowCancel;

{
 vRow = 0;
 vRowCancel = 0;
 
 a= ExecSQL('SoftOne','DROP TABLE dbo.CCCEXCELORDER',null);
 
 a = CallPublished('SysRequest.Evaluate',
VarArray(
ImportModule('ImpOrder'),
'ExcelImport(' + QuotedStr(VarToStr(:ImpTable.vExcel)) + ',' + QuotedStr('CCCEXCELORDER') + ',1,1)',
2
)
);

x = ShowWarning('Import Begins');

fetch sHead{


ImpOrder(sHead,sLine,sAnal);


if (ImportError = 0){
vRow = vRow + 1;
x = ShowWarning('Success import order '+VarToStr(vRow));
}else{
x = ShowWarning('Import error for TRDRCODE: '+ VarToStr(sHead.TRDRCODE)+' -> '+ ErrorMessage);
}
}

x = ShowWarning('Import Ended');

}

carbon.png

Αν κάποιος έχει κάποια πρόταση ή κάποιο παραδειγμά που να περνάει saldoc με χρώμα θα ήμουν υπόχρεος.

Σας ευχαριστώ

georgopou...@gmail.com

unread,
Sep 29, 2025, 9:40:53 AMSep 29
to Softone Developers Network
Καλησπέρα


Μην χρησιμοποιήσεις το  VQTYANAL. 

Στο ITELINES χρησιμοποιήσε το πεδίο ITELINES.CDIMNO1.

 ITELINES.CDIMNO1 = sAnal.CDL;

Θα περάσεις ανά γραμμή το χαρακτηριστικό που θέλεις.

Antonios Balis

unread,
Oct 2, 2025, 7:25:45 AM (14 days ago) Oct 2
to Softone Developers Network
Σας ευχαριστώ πάρα πολύ.

Πέρασε με χρώμα.

Παραθέτω τον κώδικα σαν παράδειγμα σε περίπτωση που το χρειαστεί και κάποιος άλλος:


Form {
  [TABLES]
ImpTable=;;;;Master;3;0

  [ImpTable]
  vExcel   = 1;4000;1;1;0;Orders(Excel);$Filename;;;
vDBTable = 1;64;1;0;0;TableName;;;;CCCEXCELORDER

[PANELS]
PANEL10=0;;0;50

[PANEL10]
ImpTable.vExcel
ImpTable.vDBTable

}

//--Converters
Converter ConvCustomer(TRDR,'COMPANY;SODTYPE=13;CODE',TRDR);

Import ImpOrder(sHead,sLine) into 'SALDOC,T,WARNINGS:ON'{

  FINDOC sHead {
TRNDATE  = sHead.TRNDATE;
COMPANY  = sHead.COMPANY;
BRANCH   = sHead.BRANCH;
SERIES   = sHead.SERIES;
TRDR     = ConvCustomer(:X.SYS.COMPANY,sHead.TRDRCODE);
}

MTRDOC sHead {
WHOUSE = sHead.WHOUSE;
}

ITELINES sLine {
MTRLINES   = sLine.AA;
MTRL       = sLine.MTRL;
CDIMNO1 = sLine.CDL;

QTY1 = sLine.QTY1;
PRICE = sLine.PRICE;
NUM01 = sLine.NUM01;
DISC1PRC   = sLine.DISC1PRC;
DISC2PRC = sLine.DISC2PRC;
}

}

Connect Xplorer SoftOne {
 Connect();


sHead =
    SELECT DISTINCT
             TRDRCODE,
             TRNDATE,    
             COMPANY,
             BRANCH,
             SERIES,
             WHOUSE
    FROM dbo.$REMOVEQUOTES(:$ImpTable.vDBTable);

   sLine =
SELECT
 CAST(NULLIF(LTRIM(RTRIM(d.AA)),'') AS INT)                                   AS AA,
      LTRIM(RTRIM(d.TRDRCODE))                                                     AS TRDRCODE,
      TRNDATE,
      LTRIM(RTRIM(d.SERIES))                       AS SERIES,
      LTRIM(RTRIM(d.ITEMCODE))                                          AS ITEMCODE,
(SELECT TOP 1
m.MTRL
FROM MTRL m
WHERE m.COMPANY = :X.SYS.COMPANY
AND m.SODTYPE = 51
AND (m.CODE  = LTRIM(RTRIM(d.ITEMCODE))) OR m.CODE1 = LTRIM(RTRIM(d.ITEMCODE))) AS MTRL,
(SELECT TOP 1
m.cdim1
FROM MTRL m
WHERE m.COMPANY = :X.SYS.COMPANY
AND m.SODTYPE = 51
AND (m.CODE  = LTRIM(RTRIM(d.ITEMCODE))) OR m.CODE1 = LTRIM(RTRIM(d.ITEMCODE))) AS cdim,
(SELECT TOP 1 CDIMLINES  FROM MTRL M
JOIN CDIMLINES C ON  C.CDIM=M.CDIM1
WHERE M.COMPANY=:X.SYS.COMPANY
AND (m.CODE  = LTRIM(RTRIM(d.ITEMCODE))) OR m.CODE1 = LTRIM(RTRIM(d.ITEMCODE))
AND (C.CODE  = LTRIM(RTRIM(d.COLOR))) OR C.NAME = LTRIM(RTRIM(d.COLOR))
) AS CDL,
COLOR,

      COALESCE(CAST(NULLIF(LTRIM(RTRIM(d.QTY1)),'') AS NUMERIC(18,5)),0)          AS QTY1,
   COALESCE(CAST(NULLIF(LTRIM(RTRIM(d. PRICE  )),'') AS NUMERIC(18,5)),0)          AS PRICE,
   COALESCE(CAST(NULLIF(LTRIM(RTRIM(d.  NUM01    )),'') AS NUMERIC(18,5)),0)          AS  NUM01  ,
COALESCE(CAST(NULLIF(LTRIM(RTRIM(d. DISC1PRC    )),'') AS NUMERIC(18,5)),0)          AS  DISC1PRC  ,
  COALESCE(CAST(NULLIF(LTRIM(RTRIM(d. DISC2PRC  )),'') AS NUMERIC(18,5)),0)          AS  DISC2PRC  ,

   FROM dbo.$REMOVEQUOTES(:$ImpTable.vDBTable) d
WHERE
      LTRIM(RTRIM(d.TRDRCODE))     = :$sHead.TRDRCODE
      AND d.TRNDATE                = :$sHead.TRNDATE
      AND CAST(d.SERIES  AS INT)   = :$sHead.SERIES
    ORDER BY CAST(NULLIF(LTRIM(RTRIM(d.AA)),'') AS INT);


}


include 'PiLib';
include 'ModuleIntf';
include 'SysRequest';

var a,x,vRow,vRowCancel;

{
 vRow = 0;
 vRowCancel = 0;
 
 a= ExecSQL('SoftOne','DROP TABLE dbo.CCCEXCELORDER',null);
 
 a = CallPublished('SysRequest.Evaluate',
VarArray(
ImportModule('ImpOrder'),
'ExcelImport(' + QuotedStr(VarToStr(:ImpTable.vExcel)) + ',' + QuotedStr('CCCEXCELORDER') + ',1,1)',
2
)
);

x = ShowWarning('Import Begins');

fetch sHead{

ImpOrder(sHead,sLine);



if (ImportError = 0){
vRow = vRow + 1;
x = ShowWarning('Success import order '+VarToStr(vRow));
}else{
x = ShowWarning('Import error for  '+ ErrorMessage);

}
}
x = ShowWarning('Import Ended');
}
Reply all
Reply to author
Forward
0 new messages