Exemple #1
0
        public void CalcolaCostiGalvanica(DateTime DataFine, BackgroundWorker worker, DoWorkEventArgs e)
        {
            List <string> idmagazz = new List <string>();
            int           i        = 1;

            //            idmagazz = _ds.USR_VENDITED.Where(x => !x.IsIDMAGAZZNull()).Select(x => x.IDMAGAZZ).Distinct().ToList();
            idmagazz = _ds.USR_INVENTARIOD.Select(x => x.IDMAGAZZ).Distinct().ToList();
            //    bool m = idmagazz.Contains("0000096837");
            idmagazz = new List <string>(new string[] { "0000010919" });

            foreach (string articolo in idmagazz)
            {
                if (worker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
                worker.ReportProgress(i);
                ValorizzazioneDS.USR_PRD_TDIBA_DEFAULTRow tdibaArticolo           = _ds.USR_PRD_TDIBA_DEFAULT.Where(x => x.IDMAGAZZ == articolo).FirstOrDefault();
                ValorizzazioneDS.USR_PRD_TDIBARow         tdibaArticoloNonDefault = _ds.USR_PRD_TDIBA.Where(x => x.IDMAGAZZ == articolo).FirstOrDefault();
                if (tdibaArticolo != null)
                {
                    CalcolaCostoGalvanica(tdibaArticolo.IDTDIBA, articolo, DataFine, "DiBa default", articolo);
                }
                else if (tdibaArticoloNonDefault != null)
                {
                    CalcolaCostoGalvanica(tdibaArticoloNonDefault.IDTDIBA, articolo, DataFine, "DiBa non default", articolo);
                }
                else
                {
                    CalcolaCostoGalvanica(string.Empty, articolo, DataFine, string.Empty, articolo);
                }
                i++;
            }
        }
Exemple #2
0
        public void CalcolaCostiArticolo(string IdInventarioT, DateTime DataFine, BackgroundWorker worker, DoWorkEventArgs e, bool consideraTutteLeFasi, bool consideraListiniVenditaTopFinish, bool usaDiBaNonDefault, bool tuttiProdottiFiniti, bool consideraInvatrio2020)
        {
            List <string> idmagazz = new List <string>();
            int           i        = 1;

            if (tuttiProdottiFiniti)
            {
                //                idmagazz = _ds.USR_LIS_VEN.Where(x => !x.IsIDMAGAZZNull()).Select(x => x.IDMAGAZZ).Distinct().ToList();
                idmagazz = _ds.USR_VENDITED.Where(x => !x.IsIDMAGAZZNull()).Select(x => x.IDMAGAZZ).Distinct().ToList();
            }
            else
            {
                idmagazz = _ds.USR_INVENTARIOD.Select(x => x.IDMAGAZZ).Distinct().ToList();
            }
            //   bool m = idmagazz.Contains("0000001298");
//             idmagazz = new List<string>(new string[] { "0000189546","0000190024","0000194776","0000197953","0000197701","0000197700" });

            foreach (string articolo in idmagazz)
            {
                if (worker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
                worker.ReportProgress(i);
                ValorizzazioneDS.USR_PRD_TDIBA_DEFAULTRow tdibaArticolo           = _ds.USR_PRD_TDIBA_DEFAULT.Where(x => x.IDMAGAZZ == articolo).FirstOrDefault();
                ValorizzazioneDS.USR_PRD_TDIBARow         tdibaArticoloNonDefault = _ds.USR_PRD_TDIBA.Where(x => x.IDMAGAZZ == articolo).FirstOrDefault();
                if (tdibaArticolo != null)
                {
                    CalcolaCosto(tdibaArticolo.IDTDIBA, articolo, IdInventarioT, DataFine, consideraTutteLeFasi, consideraListiniVenditaTopFinish, "DiBa default", articolo, consideraInvatrio2020);
                }
                else if (usaDiBaNonDefault && tdibaArticoloNonDefault != null)
                {
                    CalcolaCosto(tdibaArticoloNonDefault.IDTDIBA, articolo, IdInventarioT, DataFine, consideraTutteLeFasi, consideraListiniVenditaTopFinish, "DiBa non default", articolo, consideraInvatrio2020);
                }
                else
                {
                    CalcolaCosto(string.Empty, articolo, IdInventarioT, DataFine, consideraTutteLeFasi, consideraListiniVenditaTopFinish, string.Empty, articolo, consideraInvatrio2020);
                }
                //                RegistraCostoArticolo(0, 0, 0, tdibaArticolo, inventarioT.IdInventarioT, articolo, "TDIBA non definita", string.Empty);
                i++;
            }
        }
Exemple #3
0
        private static void EstraiDiba(string idInventarioT, ValorizzazioneDS ds, ValorizzazioneDS.USR_PRD_TDIBARow tdiba, int sequenza, string prodottoFinito, decimal qtaPadre, ref int ramo)
        {
            bool multipla    = ds.USR_PRD_RDIBA.Where(x => x.IDTDIBA == tdiba.IDTDIBA).Count() > 1;
            bool infragruppo = false;

            // INFRAGRUPPO AL MOMENTO NON CONSIDERATA
            //if (!tdiba.IsCODICECLIFOPRDNull() && tdiba.CODICECLIFOPRD.Trim() == "02350")
            //{
            //    AnagraficaDS.USR_PRD_TDIBARow tdibaInfragruppo = ds.USR_PRD_TDIBA.Where(x => x.IDMAGAZZ == tdiba.IDMAGAZZ && x.AZIENDA != tdiba.AZIENDA).FirstOrDefault();
            //    if (tdibaInfragruppo != null)
            //    {
            //        EstraiDiba(ds, tdibaInfragruppo, sequenza, prodottoFinito, qtaPadre, ref ramo);
            //        infragruppo = true;
            //        //                        ramo++;
            //    }
            //}

            foreach (ValorizzazioneDS.USR_PRD_RDIBARow rdiba in ds.USR_PRD_RDIBA.Where(x => x.IDTDIBA == tdiba.IDTDIBA).OrderBy(x => x.SEQUENZA))
            {
                sequenza++;
                string  padre    = tdiba.IDMAGAZZ;
                string  articolo = rdiba.IDMAGAZZ;
                decimal qta      = rdiba.QTACONSUMO;

                ValorizzazioneDS.COSTI_ARTICOLIRow costiArticoloRow = ds.COSTI_ARTICOLI.NewCOSTI_ARTICOLIRow();
                costiArticoloRow.IDMAGAZZ = articolo;
                if (!tdiba.IsIDTABFASNull())
                {
                    costiArticoloRow.IDFASE = tdiba.IDTABFAS;
                }
                costiArticoloRow.IDPADRE = padre;
                costiArticoloRow.QTA     = qta;
                qtaPadre = qta * qtaPadre;

                costiArticoloRow.IDRDIBA       = rdiba.IDRDIBA;
                costiArticoloRow.IDTDIBA       = rdiba.IDTDIBA;
                costiArticoloRow.IDINVENTARIOT = idInventarioT;

                if (infragruppo)
                {
                    infragruppo = false;
                }
                else
                {
                    ds.COSTI_ARTICOLI.AddCOSTI_ARTICOLIRow(costiArticoloRow);
                }

                if (multipla)
                {
                    ramo++;
                }

                if (!rdiba.IsIDTDIBAIFFASENull() && rdiba.STOCKSN == "N")
                {
                    ValorizzazioneDS.USR_PRD_TDIBARow tdibaPrecedente = ds.USR_PRD_TDIBA.Where(x => x.IDTDIBA == rdiba.IDTDIBAIFFASE).FirstOrDefault();
                    if (tdibaPrecedente == null)
                    {
                        continue;
                    }

                    EstraiDiba(idInventarioT, ds, tdibaPrecedente, sequenza, prodottoFinito, qtaPadre, ref ramo);
                }
            }
        }
Exemple #4
0
 private void RegistraCostoArticolo(decimal costoFase, decimal costoFigli, decimal costoMateriale, ValorizzazioneDS.USR_PRD_TDIBARow tdibaArticolo,
                                    string idInventarioT, string idmagazz, String nota, string idListino, string idProdottoFinito)
 {
     ValorizzazioneDS.COSTI_ARTICOLIRow costoArticolo = _ds.COSTI_ARTICOLI.NewCOSTI_ARTICOLIRow();
     costoArticolo.COSTOFASE = costoFase;
     if (tdibaArticolo != null)
     {
         costoArticolo.IDTDIBA = tdibaArticolo.IDTDIBA;
         costoArticolo.IDFASE  = tdibaArticolo.IDTABFAS;
     }
     costoArticolo.IDRDIBA        = null;
     costoArticolo.COSTOFIGLI     = costoFigli;
     costoArticolo.COSTOMATERIALE = 0;
     costoArticolo.IDINVENTARIOT  = idInventarioT;
     costoArticolo.IDMAGAZZ       = idmagazz;
     costoArticolo.IDLISACQ       = idListino;
     costoArticolo.NOTA           = nota.Length > 120 ? nota.Substring(0, 120) : nota;
     costoArticolo.IDPADRE        = idProdottoFinito;
     _ds.COSTI_ARTICOLI.AddCOSTI_ARTICOLIRow(costoArticolo);
 }
Exemple #5
0
        private decimal CalcolaCostoListinoArticolo(Articolo articolo, string IdInventarioT, DateTime DataFine, ValorizzazioneDS.USR_PRD_TDIBARow tdibaArticolo, out string idListino)
        {
            idListino = string.Empty;
            List <ValorizzazioneDS.USR_LIS_ACQRow> listiniAquistiInterni = _ds.USR_LIS_ACQ.Where(x => !x.IsIDMAGAZZNull() && x.IDMAGAZZ == articolo.IdMagazz &&
                                                                                                 x.VALIDITA <= DataFine
                                                                                                 //&& x.FINEVALIDITA >= InventarioT.DataInizio
                                                                                                 && !x.IsFINEVALIDITANull() &&
                                                                                                 x.FINEVALIDITA >= DataFine &&
                                                                                                 !x.IsCODICECLIFONull() &&
                                                                                                 x.CODICECLIFO.Substring(0, 1) != "0" &&
                                                                                                 x.AZIENDA == "MP").ToList();

            if (tdibaArticolo != null && !tdibaArticolo.IsIDDIBAMETHODNull())
            {
                List <ValorizzazioneDS.USR_LIS_ACQRow> listiniAquistiInterniPerVersioneDiba = listiniAquistiInterni.Where(x => !x.IsIDDIBAMETHODNull() && x.IDDIBAMETHOD == tdibaArticolo.IDDIBAMETHOD).ToList();
                if (listiniAquistiInterniPerVersioneDiba.Count > 0)
                {
                    return(ValutaCostoListino(articolo.Peso, listiniAquistiInterniPerVersioneDiba, out idListino));
                }
            }

            if (listiniAquistiInterni.Count > 0)
            {
                return(ValutaCostoListino(articolo.Peso, listiniAquistiInterni, out idListino));
            }

            List <ValorizzazioneDS.USR_LIS_ACQRow> listiniAquistiEsterni = _ds.USR_LIS_ACQ.Where(x => !x.IsIDMAGAZZNull() && x.IDMAGAZZ == articolo.IdMagazz &&
                                                                                                 !x.IsFINEVALIDITANull() &&
                                                                                                 x.VALIDITA <= DataFine
                                                                                                 //&& x.FINEVALIDITA >= InventarioT.DataInizio
                                                                                                 && x.FINEVALIDITA >= DataFine &&
                                                                                                 x.AZIENDA == "MP").ToList();

            if (tdibaArticolo != null && !tdibaArticolo.IsIDDIBAMETHODNull())
            {
                List <ValorizzazioneDS.USR_LIS_ACQRow> listiniAquistiEsterniPerVersioneDiba = listiniAquistiEsterni.Where(x => !x.IsIDDIBAMETHODNull() && x.IDDIBAMETHOD == tdibaArticolo.IDDIBAMETHOD).ToList();
                if (listiniAquistiEsterniPerVersioneDiba.Count > 0)
                {
                    return(ValutaCostoListino(articolo.Peso, listiniAquistiEsterniPerVersioneDiba, out idListino));
                }
            }

            if (listiniAquistiEsterni.Count > 0)
            {
                return(ValutaCostoListino(articolo.Peso, listiniAquistiEsterni, out idListino));
            }


            List <ValorizzazioneDS.USR_LIS_VENRow> listiniVendita = _ds.USR_LIS_VEN.Where(x => !x.IsIDMAGAZZNull() && x.IDMAGAZZ == articolo.IdMagazz &&
                                                                                          x.VALIDITA <= DataFine &&
                                                                                          x.FINEVALIDITA >= DataFine
                                                                                          //                    && x.FINEVALIDITA >= InventarioT.DataInizio
                                                                                          && x.AZIENDA == "TF").ToList();

            if (listiniVendita.Count > 0)
            {
                return(ValutaCostoListino(articolo.Peso, listiniVendita, out idListino));
            }

            return(0);
        }
Exemple #6
0
        private decimal CalcolaCostoGalvanica(string idtdiba, string idmagazz, DateTime DataFine, string notaEsterna, string idProdottoFinito)
        {
            //if (idmagazz == "0000131250")
            //    System.Diagnostics.Debugger.Break();
            ValorizzazioneDS.COSTI_GALVANICARow costoGalvanica = _ds.COSTI_GALVANICA.Where(x => x.IDMAGAZZ == idmagazz).FirstOrDefault();
            if (costoGalvanica != null)
            {
                return(costoGalvanica.COSTOMATERIALE);
            }

            ValorizzazioneDS.USR_PRD_TDIBARow tdibaArticolo = _ds.USR_PRD_TDIBA.Where(x => x.IDTDIBA == idtdiba).FirstOrDefault();

            decimal costoMateriale = 0;

            string idListino = string.Empty;

            if (tdibaArticolo == null)
            {
                RegistraCostoGalvanica(costoMateriale, idmagazz, idListino);
                return(costoMateriale);
            }
            if (!tdibaArticolo.IsCODICECLIFOPRDNull() && tdibaArticolo.CODICECLIFOPRD.Trim() == "02350")
            {
                List <ValorizzazioneDS.USR_LIS_VENRow> listini = _ds.USR_LIS_VEN.Where(x => !x.IsIDMAGAZZNull() && x.IDMAGAZZ == idmagazz &&
                                                                                       x.VALIDITA <= DataFine &&
                                                                                       x.FINEVALIDITA >= DataFine &&
                                                                                       !x.IsCODICECLIFONull() &&
                                                                                       x.CODICECLIFO.Trim() == "01631" &&
                                                                                       x.AZIENDA == "TF").ToList();

                if (listini.Count > 0)
                {
                    costoMateriale = ValutaCostoListino(0, listini, out idListino);
                }
                else
                {
                    List <ValorizzazioneDS.USR_LIS_ACQRow> listiniA = _ds.USR_LIS_ACQ.Where(x => !x.IsIDMAGAZZNull() && x.IDMAGAZZ == idmagazz &&
                                                                                            x.VALIDITA <= DataFine &&
                                                                                            x.FINEVALIDITA >= DataFine &&
                                                                                            !x.IsCODICECLIFONull() &&
                                                                                            x.CODICECLIFO.Trim() == "02350" &&
                                                                                            x.AZIENDA == "MP").ToList();

                    if (listiniA.Count > 0)
                    {
                        costoMateriale = ValutaCostoListino(0, listiniA, out idListino);
                    }
                }
            }



            decimal costoFigli = 0;

            foreach (ValorizzazioneDS.USR_PRD_RDIBARow rdiba in _ds.USR_PRD_RDIBA.Where(x => x.IDTDIBA == tdibaArticolo.IDTDIBA).OrderBy(x => x.SEQUENZA))
            {
                decimal costoFiglio = 0;
                if (!rdiba.IsIDTDIBAIFFASENull())
                {
                    costoFiglio = CalcolaCostoGalvanica(rdiba.IDTDIBAIFFASE, rdiba.IDMAGAZZ, DataFine, string.Empty, idProdottoFinito);
                }
                else
                {
                    ValorizzazioneDS.COSTI_GALVANICARow costoGalvanicaFiglio = _ds.COSTI_GALVANICA.Where(x => x.IDMAGAZZ == rdiba.IDMAGAZZ).FirstOrDefault();
                    if (costoGalvanicaFiglio != null)
                    {
                        costoFiglio = costoGalvanicaFiglio.COSTOMATERIALE;
                    }
                }
                costoFigli = costoFigli + costoFiglio * rdiba.QTACONSUMO;
            }

            RegistraCostoGalvanica(costoMateriale + costoFigli, idmagazz, idListino);
            return(costoMateriale + costoFigli);
        }
Exemple #7
0
        private decimal CalcolaCosto(string idtdiba, string idmagazz, string IdInventarioT, DateTime DataFine, bool consideraTutteLeFasi, bool consideraListiniVenditaTopFinish, string notaEsterna, string idProdottoFinito, bool consideraInvatrio2020)
        {
            ValorizzazioneDS.COSTI_ARTICOLIRow costoArticolo = _ds.COSTI_ARTICOLI.Where(x => x.IDINVENTARIOT == IdInventarioT && x.IDMAGAZZ == idmagazz).FirstOrDefault();
            if (costoArticolo != null)
            {
                return(costoArticolo.COSTOFASE + costoArticolo.COSTOFIGLI + costoArticolo.COSTOMATERIALE);
            }

            if (consideraInvatrio2020)
            {
                ValorizzazioneDS.BILANCIO_2020Row elementoInvntario2020 = _ds.BILANCIO_2020.Where(x => x.IDMAGAZZ == idmagazz).FirstOrDefault();
                if (elementoInvntario2020 != null && !elementoInvntario2020.IsCOSTONull())
                {
                    RegistraCostoArticolo(elementoInvntario2020.COSTO, 0, 0, null, IdInventarioT, idmagazz, "Inventario 2020", string.Empty, idProdottoFinito);
                    return(elementoInvntario2020.COSTO);
                }
            }

            StringBuilder nota = new StringBuilder();

            nota.Append(notaEsterna);

            ValorizzazioneDS.USR_PRD_TDIBARow tdibaArticolo = _ds.USR_PRD_TDIBA.Where(x => x.IDTDIBA == idtdiba).FirstOrDefault();
            if (tdibaArticolo == null)
            {
                nota.AppendLine("Diba non definita");
            }

            decimal costoFigli     = 0;
            decimal costoMateriale = 0;
            decimal costoFase      = 0;
            //            decimal costoListino = 0;

            Articolo articolo = _anagrafica.GetArticolo(idmagazz);

            if (articolo == null)
            {
                nota.AppendLine("Articolo non trovato " + idmagazz);
                return(0);
            }
            string idListino = string.Empty;

            costoFase = CalcolaCostoListinoArticolo(articolo, IdInventarioT, DataFine, tdibaArticolo, out idListino);

            if (tdibaArticolo == null)
            {
                RegistraCostoArticolo(costoFase, costoFigli, costoMateriale, tdibaArticolo, IdInventarioT, idmagazz, nota.ToString(), idListino, idProdottoFinito);
                return(costoFase);
            }

            if (costoFase == 0 && string.IsNullOrEmpty(idListino) && (_anagrafica.FaseDaCostificare(tdibaArticolo.IDTABFAS) || consideraTutteLeFasi))
            {
                costoFase = EstraiCostoFase(tdibaArticolo.IDTABFAS, DataFine, articolo.Peso);
            }

            foreach (ValorizzazioneDS.USR_PRD_RDIBARow rdiba in _ds.USR_PRD_RDIBA.Where(x => x.IDTDIBA == tdibaArticolo.IDTDIBA).OrderBy(x => x.SEQUENZA))
            {
                decimal costoFiglio = 0;
                if (!rdiba.IsIDTDIBAIFFASENull())
                {
                    costoFiglio = CalcolaCosto(rdiba.IDTDIBAIFFASE, rdiba.IDMAGAZZ, IdInventarioT, DataFine, consideraTutteLeFasi, consideraListiniVenditaTopFinish, string.Empty, idProdottoFinito, consideraInvatrio2020);
                }
                else
                {
                    ValorizzazioneDS.COSTI_ARTICOLIRow costoArticoloMateriale = _ds.COSTI_ARTICOLI.Where(x => x.IDINVENTARIOT == IdInventarioT && x.IDMAGAZZ == rdiba.IDMAGAZZ).FirstOrDefault();
                    if (costoArticoloMateriale != null)
                    {
                        costoFiglio = costoArticoloMateriale.COSTOFASE + costoArticoloMateriale.COSTOFIGLI + costoArticoloMateriale.COSTOMATERIALE;
                    }
                    else
                    {
                        if (consideraInvatrio2020)
                        {
                            ValorizzazioneDS.BILANCIO_2020Row elementoInvntario2020 = _ds.BILANCIO_2020.Where(x => x.IDMAGAZZ == idmagazz).FirstOrDefault();
                            if (elementoInvntario2020 != null && !elementoInvntario2020.IsCOSTONull())
                            {
                                RegistraCostoArticolo(elementoInvntario2020.COSTO, 0, 0, null, IdInventarioT, idmagazz, "Inventario 2020", string.Empty, idProdottoFinito);
                                return(elementoInvntario2020.COSTO);
                            }
                        }
                        else
                        {
                            List <ValorizzazioneDS.USR_LIS_ACQRow> listiniMateriale = _ds.USR_LIS_ACQ.Where(x => !x.IsIDMAGAZZNull() && x.IDMAGAZZ == rdiba.IDMAGAZZ &&
                                                                                                            x.VALIDITA <= DataFine
                                                                                                            //  && x.FINEVALIDITA >= InventarioT.DataInizio
                                                                                                            && !x.IsFINEVALIDITANull() &&
                                                                                                            x.FINEVALIDITA >= DataFine &&
                                                                                                            x.AZIENDA == "MP").ToList();
                            if (listiniMateriale.Count > 0)
                            {
                                string idListinoMateriale;
                                costoFiglio = ValutaCostoListino(articolo.Peso, listiniMateriale, out idListinoMateriale);
                                RegistraCostoArticolo(costoFiglio, 0, 0, null, IdInventarioT, rdiba.IDMAGAZZ, string.Empty, idListinoMateriale, idProdottoFinito);
                                //return costoListino;
                            }
                        }
                    }
                }
                costoFigli = costoFigli + costoFiglio * rdiba.QTACONSUMO;
            }

            RegistraCostoArticolo(costoFase, costoFigli, costoMateriale, tdibaArticolo, IdInventarioT, idmagazz, nota.ToString(), idListino, idProdottoFinito);
            return(costoFase + costoFigli + costoMateriale);
        }