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++; } }
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++; } }
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); } } }
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); }
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); }
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); }
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); }