protected void ExportToPdfPerMatCant() { decimal totale = 0m; decimal totaleFinale = 0m; long numDdtAttuale = 0; List <MaterialiCantieri> matCantList = MaterialiCantieriDAO.GetMaterialeCantiere(txtDataDa.Text, txtDataA.Text, ddlScegliAcquirente.SelectedItem.Text, ddlScegliFornitore.SelectedItem.Text, txtNumDDT.Text); //Apro lo stream verso il file PDF Document pdfDoc = new Document(PageSize.A4, 8f, 2f, 2f, 2f); PdfWriter.GetInstance(pdfDoc, Response.OutputStream); pdfDoc.Open(); PdfPTable table = InitializePdfTableMatCant(); Phrase title = new Phrase(txtNomeFile.Text, FontFactory.GetFont("Arial", 24, iTextSharp.text.Font.BOLD, BaseColor.RED)); pdfDoc.Add(title); GeneraPDFPerMatCant(pdfDoc, matCantList, table, totale, numDdtAttuale, totaleFinale); pdfDoc.Close(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=" + txtNomeFile.Text + ".pdf"); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Write(pdfDoc); Response.End(); }
protected void btnInserisci_Click(object sender, EventArgs e) { MaterialiCantieri mc = new MaterialiCantieri(); FillMatCant(mc); if (Convert.ToInt32(txtQta.Text) > 0) { bool isInserito = MaterialiCantieriDAO.InserisciSpesa(mc); if (isInserito) { lblIsManodopInserita.Text = "Record inserito con successo"; lblIsManodopInserita.ForeColor = Color.Blue; } else { lblIsManodopInserita.Text = "Errore durante l'inserimento del record"; lblIsManodopInserita.ForeColor = Color.Red; } } else { lblIsManodopInserita.Text = "La quantità deve essere maggiore di '0'"; lblIsManodopInserita.ForeColor = Color.Red; } }
protected void btnInserisci_Click(object sender, EventArgs e) { string idCant = ddlScegliCant.SelectedItem.Value; string acquirente = ddlScegliOperaio.SelectedItem.Value; MaterialiCantieri mc = new MaterialiCantieri(); FillMatCant(mc); if (Convert.ToInt32(txtQta.Text) > 0) { bool isInserito = MaterialiCantieriDAO.InserisciOperaio(mc); if (isInserito) { lblIsOperInserita.Text = "Record inserito con successo"; lblIsOperInserita.ForeColor = Color.Blue; } else { lblIsOperInserita.Text = "Errore durante l'inserimento del record"; lblIsOperInserita.ForeColor = Color.Red; } } else { lblIsOperInserita.Text = "Il valore della quantità deve essere maggiore di '0'"; lblIsOperInserita.ForeColor = Color.Red; } }
protected void btnResocontoRaggruppato_Click(object sender, EventArgs e) { try { List <MaterialiCantieri> items = MaterialiCantieriDAO.GetMatCantPerResocontoOperaio(txtDataDa.Text, txtDataA.Text, ddlScegliOperaio.SelectedItem.Value, txtFiltroCantiere.Text, Convert.ToInt32(rblChooseView.SelectedValue)); items.Where(w => w.CodCant == "Acconto").ToList().ForEach(f => f.Acquirente = $"Acconto {f.Acquirente}"); items = items.GroupBy(g => new { g.Data, g.Acquirente }) .Select(s => new MaterialiCantieri { Data = s.Key.Data, Acquirente = s.Key.Acquirente, Qta = s.Sum(x => x.Qta), PzzoUniCantiere = s.Min(x => x.PzzoUniCantiere), Valore = s.Sum(x => x.Valore) }).ToList(); grdResocontoRaggruppato.DataSource = items; grdResocontoRaggruppato.DataBind(); grdResocontoOperaio.Visible = false; grdResocontoRaggruppato.Visible = !grdResocontoOperaio.Visible; } catch (Exception ex) { lblIsOperaioPagato.Text = $"Errore durante il btnResocontoRaggruppato_Click - {ex.Message}"; lblIsOperaioPagato.ForeColor = Color.Red; } }
protected void BindGrid() { List <MaterialiCantieri> items = MaterialiCantieriDAO.GetMatCantPerResocontoOperaio(txtDataDa.Text, txtDataA.Text, ddlScegliOperaio.SelectedItem.Value, txtFiltroCantiere.Text, Convert.ToInt32(rblChooseView.SelectedValue)); grdResocontoOperaio.DataSource = items; grdResocontoOperaio.DataBind(); lblTotaleOre.Text = $"Totale Ore: {items.Sum(s => s.Qta)}"; lblTotaleValore.Text = $"Totale Valore: {items.Sum(s => s.Valore):N2}"; }
//protected void FillDdlScegliOperaio() //{ // ddlScegliOperaio.Items.Clear(); // ddlScegliOperaio.Items.Add(new ListItem("", "-1")); // DropDownListManager.FillDdlOperaio(OperaiDAO.GetAll(), ref ddlScegliOperaio); //} protected void BindGrid() { pnlShowGridAndLabel.Visible = true; List <MaterialiCantieri> mcList = MaterialiCantieriDAO.GetMaterialeCantierePerTipologia(Convert.ToInt32(ddlScegliCant.SelectedItem.Value), txtDataDa.Text, txtDataA.Text, "MANODOPERA"); grdStampaPerTipologia.DataSource = mcList; grdStampaPerTipologia.DataBind(); lblTotOre.Text = $"<strong>Totale Ore</strong>: {Math.Round(mcList.Sum(s => (decimal)s.Qta), 2)}"; lblTotale.Text = $"<strong>Totale Valore</strong>: {Math.Round(mcList.Sum(s => (decimal)s.Qta * s.PzzoUniCantiere), 2)}"; }
protected void FillDdlScegliMatCant() { string idCant = ddlScegliCant.SelectedItem.Value; List <MaterialiCantieri> listMatCant = MaterialiCantieriDAO.GetMaterialeCantiere(idCant, txtFiltroCodArt.Text, txtFiltroDescriCodArt.Text); ddlScegliMatCant.Items.Clear(); ddlScegliMatCant.Items.Add(new ListItem("", "-1")); foreach (MaterialiCantieri mc in listMatCant) { string data = ((mc.Data).ToString()).Split(' ')[0]; string show = mc.CodArt + " - " + mc.DescriCodArt + " - " + mc.Qta + " - " + mc.PzzoUniCantiere + " - " + data; ddlScegliMatCant.Items.Add(new ListItem(show, mc.IdMaterialiCantieri.ToString())); } }
protected void BindGrid(Cantieri cant, decimal totaleValore) { decimal totMate = 0m; decimal totRientro = 0m; decimal totManodop = 0m; decimal totOreManodop = 0m; decimal totOper = 0m; decimal totArrot = 0m; decimal totChiam = 0m; decimal totSpese = 0m; int idCantiere = Convert.ToInt32(ddlScegliCant.SelectedItem.Value); List <MaterialiCantieri> matCantList = MaterialiCantieriDAO.GetMaterialeCantiere(idCantiere.ToString()); grdStampaVerificaCant.DataSource = matCantList; grdStampaVerificaCant.DataBind(); lblIntestStampa.Text = $"<strong>CodCant</strong>: {cant.CodCant} --- <strong>DescriCodCant</strong>: {cant.DescriCodCant} --- <strong>Cliente</strong>: {cant.RagSocCli}"; lblTotContoCliente.Text = "<strong>Tot. Conto/Preventivo</strong>: "; lblTotContoCliente.Text += (cant.Preventivo ? Math.Round(cant.ValorePreventivo, 2) : Math.Round(totaleValore, 2)).ToString(); totMate += matCantList.Where(w => w.Tipologia.ToUpper() == "MATERIALE").Sum(s => (decimal)s.Qta * s.PzzoUniCantiere); totRientro += matCantList.Where(w => w.Tipologia.ToUpper() == "RIENTRO").Sum(s => (decimal)s.Qta * s.PzzoUniCantiere); totManodop += matCantList.Where(w => w.Tipologia.ToUpper() == "MANODOPERA").Sum(s => (decimal)s.Qta * s.PzzoUniCantiere); totOreManodop += matCantList.Where(w => w.Tipologia.ToUpper() == "MANODOPERA").Sum(s => (decimal)s.Qta); totOper += matCantList.Where(w => w.Tipologia.ToUpper() == "OPERAIO").Sum(s => (decimal)s.Qta * s.PzzoUniCantiere); totArrot += matCantList.Where(w => w.Tipologia.ToUpper() == "ARROTONDAMENTO").Sum(s => (decimal)s.Qta * s.PzzoUniCantiere); totSpese += matCantList.Where(w => w.Tipologia.ToUpper() == "SPESA" || w.Tipologia.ToUpper() == "SPESE").Sum(s => (decimal)s.Qta * s.PzzoUniCantiere); totChiam += matCantList.Where(w => w.Tipologia.ToUpper() == "A CHIAMATA").Sum(s => (decimal)s.Qta * s.PzzoUniCantiere); lblTotMate.Text = $"<strong>Tot. Materiale</strong>: {totMate:n}"; lblTotRientro.Text = $"<strong>Tot. Rientro</strong>: {totRientro:n}"; lblTotOper.Text = $"<strong>Tot. Operaio</strong>: {totOper:n}"; lblTotArrot.Text = $"<strong>Tot. Arrotondamento</strong>: {totArrot:n}"; lblTotAChiamata.Text = $"<strong>Tot. A Chiamata</strong>: {totChiam:n}"; lblTotSpese.Text = $"<strong>Tot. Spese</strong>: {totSpese:n}"; decimal sommaTotPerTipol = totMate + totRientro + totOper; decimal contoFinCli = Convert.ToDecimal(lblTotContoCliente.Text.Split(':')[1].Trim()); decimal totGuadagno = Convert.ToDecimal($"{contoFinCli - sommaTotPerTipol - totManodop - totSpese + totArrot + totChiam:n}"); lblTotGuadagno.Text = $"<strong>Totale Guadagno</strong>: {totGuadagno:n}"; lblTotManodop.Text = $"<strong>Tot. Manodopera</strong>: {totManodop:n}"; decimal totGuadConManodop = totGuadagno + totManodop; lblTotGuadagnoConManodop.Text = $"<strong>Tot. Guadagno Con Manodopopera</strong>: {totGuadConManodop}"; lblTotGuadagnoOrarioManodop.Text = $"<strong>Tot. Guadagno Orario Manodopopera</strong>: {totGuadConManodop / (totOreManodop == 0 ? 1 : totOreManodop):n}"; }
protected void btnPagaOperaio_Click(object sender, EventArgs e) { if (MaterialiCantieriDAO.UpdateOperaioPagato(txtDataDa.Text, txtDataA.Text, ddlScegliOperaio.SelectedItem.Value)) { if (AccontiOperaiDAO.UpdateAccontoPagato(Convert.ToDateTime(txtDataDa.Text), Convert.ToDateTime(txtDataA.Text), Convert.ToInt32(ddlScegliOperaio.SelectedItem.Value))) { lblIsOperaioPagato.Text = "Campo \"OperaioPagato\" aggiornato con successo"; lblIsOperaioPagato.ForeColor = Color.Blue; } } else { lblIsOperaioPagato.Text = "Impossibile aggiornare il campo \"OperaioPagato\""; lblIsOperaioPagato.ForeColor = Color.Red; } BindGrid(); }
protected void btnInserisci_Click(object sender, EventArgs e) { int maxQta = Convert.ToInt32((ddlScegliMatCant.SelectedItem.Text).Split('-')[2]); MaterialiCantieri mc = new MaterialiCantieri(); FillMatCant(mc); if (Convert.ToDecimal(txtPzzoUnit.Text) > 0) { if (Convert.ToInt32(txtQta.Text) > 0 && Convert.ToInt32(txtQta.Text) <= maxQta) { bool isInserito = MaterialiCantieriDAO.InserisciMaterialeCantiere(mc); if (isInserito) { lblIsRecordInserito.Text = "Record inserito con successo"; lblIsRecordInserito.ForeColor = Color.Blue; } else { lblIsRecordInserito.Text = "Errore durante l'inserimento del record"; lblIsRecordInserito.ForeColor = Color.Red; } } else { lblIsRecordInserito.Text = "La quantità è 0 o maggiore di quella del materiale scelto"; lblIsRecordInserito.ForeColor = Color.Red; } } else { lblIsRecordInserito.Text = "Inserire un valore maggiore di '0' per il campo Prezzo Unitario"; lblIsRecordInserito.ForeColor = Color.Red; } }
public static decimal CalcolaPercentualeTotaleMaterialiNascosti(int idCantiere) { decimal ret = -15; List <MaterialiCantieri> items = MaterialiCantieriDAO.GetByIdCantiere(idCantiere); decimal matVisibileConRicalcolo = items.Where(w => (w.Tipologia.ToUpper() == "MATERIALE" || w.Tipologia.ToUpper() == "A CHIAMATA") && w.Visibile && w.Ricalcolo && w.PzzoFinCli == 0) .Sum(s => s.PzzoUniCantiere * (decimal)s.Qta); decimal matNascosto = items.Where(w => !w.Visibile).Sum(s => s.PzzoUniCantiere * (decimal)s.Qta); if (matVisibileConRicalcolo != 0) { ret = matNascosto * 100 / matVisibileConRicalcolo; } else if (matNascosto == 0 && matVisibileConRicalcolo == 0) { ret = 0; } else if (matNascosto != 0 && matVisibileConRicalcolo == 0) { ret = -1; } return(ret); }
protected void BindGridStampaMatCant() { grdStampaMateCant.DataSource = MaterialiCantieriDAO.GetMaterialeCantiere(txtDataDa.Text, txtDataA.Text, ddlScegliAcquirente.SelectedItem.Text, ddlScegliFornitore.SelectedItem.Text, txtNumDDT.Text); grdStampaMateCant.DataBind(); }
public static List <MaterialiCantieri> GetMaterialiCantieri(int idCantiere) { decimal percentuale = CalcolaPercentualeTotaleMaterialiNascosti(idCantiere); return(percentuale == -1 ? null : MaterialiCantieriDAO.GetMaterialeCantiereForRicalcoloConti(idCantiere, percentuale)); }
protected void btnStampaContoCliente_Click(object sender, EventArgs e) { try { List <Cantieri> listaCantieri = CantieriDAO.GetCantieri(txtAnno.Text, Convert.ToInt32(ddlScegliCliente.SelectedValue), chkFatturato.Checked, chkChiuso.Checked, chkRiscosso.Checked, chkNonRiscuotibile.Checked); if (listaCantieri.Count() > 0) { List <MaterialiCantieri> materiali = MaterialiCantieriDAO.GetByListOfCantieri(RicalcoloContiManager.GetStringFromListForQuery(listaCantieri.Select(s => s.IdCantieri).ToList())); List <Pagamenti> pagamenti = PagamentiDAO.GetAll(); List <Database.Models.StampaValoriCantieriConOpzioni> gridViewItems = new List <Database.Models.StampaValoriCantieriConOpzioni>(); materiali.ForEach(f => { Cantieri cantiere = listaCantieri.Where(w => w.IdCantieri == f.IdTblCantieri).FirstOrDefault(); Database.Models.StampaValoriCantieriConOpzioni objStampa = new Database.Models.StampaValoriCantieriConOpzioni { CodCant = cantiere.CodCant, DescriCodCAnt = cantiere.DescriCodCant, RagSocCli = cantiere.RagSocCli }; objStampa.TotaleAcconti = objStampa.TotaleConto = objStampa.TotaleFinale = 0m; //Popolo il campo Conto/Preventivo objStampa.TotaleConto = cantiere.Preventivo ? cantiere.ValorePreventivo : Math.Round(RicalcoloContiManager.GetMaterialiCantieri(cantiere.IdCantieri).Sum(s => s.Valore), 2); //Popolo il campo Tot. Acconti decimal totAcconti = 0m; totAcconti = pagamenti.Where(w => w.IdTblCantieri == cantiere.IdCantieri).ToList().Sum(s => s.Imporo); objStampa.TotaleAcconti = totAcconti; //Popolo il campo Tot. Finale decimal totContoPreventivo = objStampa.TotaleConto; decimal totFin = totContoPreventivo - totAcconti; objStampa.TotaleFinale = totFin; if (RicalcoloContiManager.CalcolaPercentualeTotaleMaterialiNascosti(f.IdTblCantieri) == -1) { objStampa.TotaleAcconti = objStampa.TotaleConto = objStampa.TotaleFinale = -999.99m; } //Aggiungo l'oggetto alla lista gridViewItems.Add(objStampa); }); gridViewItems = gridViewItems.GroupBy(s => new { s.CodCant, s.DescriCodCAnt, s.RagSocCli, s.TotaleConto, s.TotaleAcconti, s.TotaleFinale }).Distinct().Select(s => s.First()).ToList(); grdStampaConOpzioni.DataSource = gridViewItems; grdStampaConOpzioni.DataBind(); // Metto i dati in sessione per poter successivamente creare l'excel senza dover rifare tutto il giro Session["StampaValConOpzData"] = gridViewItems; // Assegno il valore alla label che mostra il totale generale decimal totGen = gridViewItems.Sum(s => s.TotaleFinale); for (int i = 0; i < grdStampaConOpzioni.Rows.Count; i++) { //if (grdStampaConOpzioni.Rows[i].Cells[5].Text == "0") //{ // grdStampaConOpzioni.Rows[i].Visible = false; //} // Se il totale Conto mostra un valore palesemente errato, la cella viene modificata mostrando l'errore invece del valore del cantiere if (grdStampaConOpzioni.Rows[i].Cells[3].Text == "-999,99") { grdStampaConOpzioni.Rows[i].Cells[3].Text = grdStampaConOpzioni.Rows[i].Cells[4].Text = grdStampaConOpzioni.Rows[i].Cells[5].Text = "VEDI VALORI NON VISIBILI"; grdStampaConOpzioni.Rows[i].Cells[3].BackColor = grdStampaConOpzioni.Rows[i].Cells[4].BackColor = grdStampaConOpzioni.Rows[i].Cells[5].BackColor = Color.Red; } } lblTotaleGeneraleStampa.Text = $"Totale: {totGen:N2} €"; // Nascondo eventuali alert visualizzati in precedenza (Master as layout).HideAlert(); } else { Session["StampaValConOpzData"] = null; (Master as layout).SetAlert("alert-warning", "Non ci sono cantieri che corrispondano ai filtri impostati"); } } catch (Exception ex) { Session["StampaValConOpzData"] = null; (Master as layout).SetAlert("alert-danger", $"Errore durante la stampa del cantiere ==> {ex.Message}"); } }