private void RegistraCostoGalvanica(decimal costoMateriale, string idmagazz, string idListino) { ValorizzazioneDS.COSTI_GALVANICARow costoGalvanca = _ds.COSTI_GALVANICA.NewCOSTI_GALVANICARow(); costoGalvanca.COSTOMATERIALE = costoMateriale; costoGalvanca.IDMAGAZZ = idmagazz; costoGalvanca.IDLISACQ = idListino; _ds.COSTI_GALVANICA.AddCOSTI_GALVANICARow(costoGalvanca); }
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); }