Samengestelde artikelen toevoegen aan een inventaris

0000002297     -      29-03-2019

Deze instelling, in de vorm van een knop geschreven in C# code in het inventaris scherm, staat u toe om samengestelde producten toe te voegen aan een inventaris. De hoeveelheid goederen die ook automatisch geïnventariseerd zijn als componenten zijn gelijk aan de hoeveelheid “ouder” producten in de nomenclatuur.
 
Bijvoorbeeld : Het artikel A wordt verkocht met artikel X en Y. 1A bestaat uit 1X en 5Y. Dus als A er 10 aanwezig is, is er 10X en 50Y in de inventaris.
 
In dit voorbeeld zijn de toegevoegde artikelen diegene waarin het aan te vinken vakje “V” aangevinkt is. Het is gemakkelijk om de query aan te passen.
"select id_lien,q from artliens where (id_art=@id_art) and (ven=1) order by suite"

Als men rekening wilt houden met andere criteria. ( bijvoorbeeld, artikels samengesteld op aankopen)
 
De code voor deze knop ziet er uit als volgt:
 
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
using System.Windows.Forms;

namespace MercatorUi.MovableControls.ButtonsCodes
{
    public static class Script
    {

        public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
        {
            // enter your customized code here
            MercatorUi.Forms.Inventory.InventoryForm inventoryForm = (MercatorUi.Forms.Inventory.InventoryForm)clickedButton.Form;
            if (!MercatorUi.Dialogs.AnswerYesNo(MercatorUi._Divers.Iif_langue(MercatorUi.Globals.Langue, "Add linked items ?", "Samengestelde artikels bijvoegen ?", "Ajouter les articles liés ?")))
                return;
            DataTable LIGNES_D = inventoryForm.InventoryEngine.LIGNES_D;
            MercatorUi.Progress.ProgressCreate(LIGNES_D.Rows.Count);
            foreach (DataRow dr in LIGNES_D.Select())
            {
                MercatorUi.Progress.ProgressIncrement(1);
                string id_art = dr["id_art"].ToString();
                if (id_art != "")
                {
                    DataSet ds = Api.Zselect(MercatorUi.Globals.RepData, "select id_lien,q from artliens where (id_art=@id_art) and (ven=1) order by suite", new MercatorSqlParam("@id_art", id_art, SqlDbType.Char));
                    if ((ds != null) && (ds.Tables[0].Rows.Count > 0))
                    {
                        Api.TrimEndDataSet(ds);
                        foreach (DataRow dr2 in ds.Tables[0].Rows)
                        {
                            int n = inventoryForm.InventoryEngine.AppendLine(true);
                            if (!inventoryForm.InventoryEngine.InsertItem(dr2["id_lien"].ToString(), LIGNES_D.Rows[n], Math.Round(Convert.ToDouble(dr["q"]) * Convert.ToDouble(dr2["q"]), MercatorUi.Globals.N_DEC_Q)))
                                MercatorUi.Dialogs.Stop(MercatorUi._Divers.Iif_langue(MercatorUi.Globals.Langue, "Unable to add : ", "Onmogelijk bij te voegen : ", "Impossible d'insérer : ") + dr2["id_lien"].ToString());
                        }
                    }
                }
            }
            inventoryForm.InventoryEngine.UpdateAmounts();
            MercatorUi.Progress.ProgressDestroy();
        }
    }
}