Τιμολογιακές πολιτικές και δεδομένα πολιτικών

109 views
Skip to first unread message

Mixalis Foulos

unread,
Jun 4, 2024, 11:43:57 AMJun 4
to Softone Developers Network
Καλησπέρα σας,

Σε τιμολογιακές πολιτικές που έχουν σαν δεδομένα τα εξής

Πελάτης-Υποκατάστημα Πελάτη- Είδος και Τιμή Χονδρικής. Και στο πελάτη Α που έχει το υποκατάστημα 1 ,περνάει ένας είδος με μια τιμή.  
Αν ο πελάτης έχει 2-3 υποκαταστήματα πως μπορώ να κάνω copy-paste Πελάτη-Είδος και να το περάσω και στο 2 υποκατάστημα ή στο 3 υποκατάστημα ή ακόμα και σε άλλο πελάτη ?

vezirgiannis sa

unread,
Jun 21, 2024, 9:25:03 AMJun 21
to Softone Developers Network
Καλησπέρα σας,

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

Στην δική μου περίπτωση είναι Πελάτης-Εμπορική Κατηγορία-Έκπτωση γραμμής και ήθελα αντιγραφή μεταξύ πελατών διότι έχουμε περίπου 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 είναι τοπικά πεδία και επιλέγονται από τον χρήστη.

Με εκτίμηση,
Ζέικος Χρήστος
--
Reply all
Reply to author
Forward
0 new messages