Καλησπέρα σας,
Συγνώμη για την εταιροχρονισμένη απάντηση αλλά ήθελα να κάνω και εγώ κάτι σχετικό.
Στην δική μου περίπτωση είναι Πελάτης-Εμπορική Κατηγορία-Έκπτωση γραμμής και ήθελα αντιγραφή μεταξύ πελατών διότι έχουμε περίπου 50 εμπορικές κατηγορίες.
Ίσως μπορείτε να το προσαρμόσετε.
Επίσης είναι σε C#...
Ελπίζω να έχει κάποιος καλύτερη ή πιο απλή λύση...
private void CopyDiscounts()
{
using var prcrData = XModule.GetTable("PRCRDATA");
var prcRule = prcrData.Current["PRCRULE"] == DBNull.Value ? 0 : Convert.ToInt32(prcrData.Current["PRCRULE"]);
var soType = prcrData.Current["SOTYPE"] == DBNull.Value ? 0 : Convert.ToInt32(prcrData.Current["SOTYPE"]);
if (prcRule != GlobalVariables.MainPrcRule)
{
return;
}
using var headerData = XModule.GetTable("VnRULEDATAHEADER");
var sourceTrdr = headerData.Current["STRDR"] == DBNull.Value ? 0 : Convert.ToInt32(headerData.Current["STRDR"]);
var targetTrdr = headerData.Current["TTRDR"] == DBNull.Value ? 0 : Convert.ToInt32(headerData.Current["TTRDR"]);
if (sourceTrdr == 0 || targetTrdr == 0)
{
MessageBox.Show("Παρακαλώ επιλέξτε πελάτες για αντιγραφή");
return;
}
var prcDataTable = XSupport.GetSQLDataSet("select DIM2, FLD01 from PRCRDATA where COMPANY = :1 and SODTYPE = :2 and SOTYPE = :3 and PRCRULE = :4 and DIM1 = :5",
GlobalVariables.Company, GlobalVariables.CustomerSodType, soType, prcRule, sourceTrdr).CreateDataTable(true);
if (prcDataTable.Rows.Count == 0)
{
MessageBox.Show("Δεν βρέθηκαν εκπτώσεις για αντιγραφή");
return;
}
foreach (DataRow row in prcDataTable.Rows)
{
prcrData.Current.Append();
prcrData.Current["DIM1"] = targetTrdr;
prcrData.Current["DIM2"] = Convert.ToInt32(row["DIM2"]);
prcrData.Current["FLD01"] = Convert.ToDouble(row["FLD01"]);
prcrData.Current["FROMDATE"] = new DateTime(2024, 1, 1);
prcrData.Current["FINALDATE"] = new DateTime(2050, 12, 31);
}
XModule.Exec("Button:Save");
}
Η παραπάνω function καλείται από button στην προβολή.
Τα
STRDR και
TTRDR στο
VnRULEDATAHEADER είναι τοπικά πεδία και επιλέγονται από τον χρήστη.
Με εκτίμηση,
Ζέικος Χρήστος
--