Example #1
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);
 }
Example #2
0
        public void ElaboraDiba(string idInventarioT, BackgroundWorker worker, DoWorkEventArgs e)
        {
            int i     = 1;
            int count = _idTDIBA_PRODOTTOFINITO.Count;

            foreach (ValorizzazioneDS.USR_PRD_TDIBARow tdiba in _ds.USR_PRD_TDIBA.Where(x => _idTDIBA_PRODOTTOFINITO.Contains(x.IDTDIBA)))
            {
                if (worker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
                int livello = 0;
                worker.ReportProgress(i);
                string prodottoFinito = tdiba.IDMAGAZZ;
                //                if (prodottoFinito != "0000044581") continue;
                int ramo = 1;
                EstraiDiba(idInventarioT, _ds, tdiba, livello, prodottoFinito, 1, ref ramo);

                string  articolo = tdiba.IDMAGAZZ;
                decimal qta      = 1;

                ValorizzazioneDS.COSTI_ARTICOLIRow costiArticoloRow = _ds.COSTI_ARTICOLI.NewCOSTI_ARTICOLIRow();
                costiArticoloRow.IDMAGAZZ = articolo;
                if (!tdiba.IsIDTABFASNull())
                {
                    costiArticoloRow.IDFASE = tdiba.IDTABFAS;
                }
                costiArticoloRow.QTA = qta;

                costiArticoloRow.IDTDIBA       = tdiba.IDTDIBA;
                costiArticoloRow.IDINVENTARIOT = idInventarioT;
                _ds.COSTI_ARTICOLI.AddCOSTI_ARTICOLIRow(costiArticoloRow);

                i++;
            }
        }
Example #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);
                }
            }
        }
Example #4
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);
        }