protected void grdCantieri_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int idCant = Convert.ToInt32(e.CommandArgument.ToString());

            if (e.CommandName == "VisualCant")
            {
                lblTitoloInserimento.Text = "Visualizza Cantiere";
                lblIsCantInserito.Text    = "";
                btnInsCantiere.Visible    = btnModCantiere.Visible = false;
                PopolaCampiCantiere(idCant, false);
            }
            else if (e.CommandName == "ModCant")
            {
                lblTitoloInserimento.Text = "Modifica Cantiere";
                lblIsCantInserito.Text    = "";
                btnInsCantiere.Visible    = false;
                btnModCantiere.Visible    = !btnInsCantiere.Visible;
                hidIdCant.Value           = idCant.ToString();
                PopolaCampiCantiere(idCant, true);
            }
            else if (e.CommandName == "ElimCant")
            {
                if (PagamentiDAO.GetAll().Where(w => w.IdTblCantieri == Convert.ToInt32(idCant)).Count() == 0)
                {
                    bool isDeleted = CantieriDAO.EliminaCantiere(idCant);

                    if (isDeleted)
                    {
                        lblIsCantInserito.Text      = "Cantiere eliminato con successo";
                        lblIsCantInserito.ForeColor = Color.Blue;
                    }
                    else
                    {
                        lblIsCantInserito.Text      = "Errore durante l'eliminazione del cantiere";
                        lblIsCantInserito.ForeColor = Color.Red;
                    }
                    BindGridCantieri();
                    ResettaCampi(pnlTxtBoxCantContainer);
                    txtCodCant.Enabled        = false;
                    btnInsCantiere.Visible    = true;
                    btnModCantiere.Visible    = !btnInsCantiere.Visible;
                    lblTitoloInserimento.Text = "Inserimento Cantieri";
                }
                else
                {
                    lblIsCantInserito.Text      = "Impossibile eliminare il cantiere selezionato perchè ha dei pagamenti associati";
                    lblIsCantInserito.ForeColor = Color.Red;
                }
            }
        }
        protected void CompilaCampi(int idCantiere, decimal totale)
        {
            //Popolo il campo Conto/Preventivo
            Cantieri c = CantieriDAO.GetSingle(idCantiere);

            txtContoPreventivo.Text = c.Preventivo ? string.Format("{0:n}", c.ValorePreventivo) : Math.Round(totale, 2).ToString();

            //Popolo il campo Tot. Acconti
            decimal totAcconti = 0m;

            totAcconti           = PagamentiDAO.GetAll().Where(w => w.IdTblCantieri == idCantiere).ToList().Sum(s => s.Imporo);
            txtTotPagamenti.Text = $"{totAcconti:n}";

            //Popolo il campo Tot. Finale
            decimal totContoPreventivo = Convert.ToDecimal(txtContoPreventivo.Text);
            decimal totFin             = totContoPreventivo - totAcconti;

            txtTotFinale.Text = $"{totFin:n}";
        }
        public static void GeneraTotalePerContoFinCli(PdfPTable tblTotali, decimal totale, int idCantiere)
        {
            decimal totValAcconti = PagamentiDAO.GetAll().Where(w => w.IdTblCantieri == Convert.ToInt32(idCantiere)).ToList().Sum(s => s.Imporo);

            //Totale No Iva
            Phrase   totContoFinCli     = new Phrase($"Totale: {totale:n}", FontFactory.GetFont("Arial", 14, iTextSharp.text.Font.ITALIC, BaseColor.BLACK));
            PdfPCell totContoFinCliCell = new PdfPCell(totContoFinCli);

            //Totale Acconti
            Phrase   totAcconti       = new Phrase($"Totale Acconti: {totValAcconti:n}", FontFactory.GetFont("Arial", 14, iTextSharp.text.Font.ITALIC, BaseColor.BLACK));
            PdfPCell totAccontiCell   = new PdfPCell(totAcconti);
            Phrase   totaleFinale     = new Phrase($"Totale Finale Escluso IVA: {totale - totValAcconti:n}", FontFactory.GetFont("Arial", 14, iTextSharp.text.Font.ITALIC, BaseColor.BLACK));
            PdfPCell totaleFinaleCell = new PdfPCell(totaleFinale);

            totContoFinCliCell.HorizontalAlignment = totAccontiCell.HorizontalAlignment = totaleFinaleCell.HorizontalAlignment = Element.ALIGN_RIGHT;
            totContoFinCliCell.BorderWidth         = totAccontiCell.BorderWidth = totaleFinaleCell.BorderWidth = 0;
            totContoFinCliCell.BorderWidthTop      = 1;
            totContoFinCliCell.BorderColorTop      = BaseColor.BLUE;
            totaleFinaleCell.PaddingBottom         = 20;

            tblTotali.AddCell(totContoFinCliCell);
            tblTotali.AddCell(totAccontiCell);
            tblTotali.AddCell(totaleFinaleCell);
        }
 protected void BindGrid()
 {
     grdPagamenti.DataSource = PagamentiDAO.GetAll(txtFiltroPagamDescri.Text).Where(w => w.IdTblCantieri == Convert.ToInt32(ddlScegliCant.SelectedItem.Value)).ToList();
     grdPagamenti.DataBind();
 }
Ejemplo n.º 5
0
        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}");
            }
        }