示例#1
0
        private bool GeneraOrdineScarico(SaveEntityManager saveEntity)
        {
            using (var uof = new UnitOfWork())
            {
                var list = uof.ClientiRepository.Select(a => new { a.ID, Descrizione = a.RagioneSociale.Length > 0 ? a.RagioneSociale : a.Cognome + " " + a.Nome, CfPIVA = a.PIVA != null && a.PIVA.Length > 0 ? a.PIVA : a.CodiceFiscale }).ToList();

                using (var clientiList = new ListViewCustom(
                           new ListViewCustom.settingCombo()
                {
                    ValueMember = "ID", DisplayMember = "Descrizione", DataSource = list, TitoloCombo = "Cliente"
                }))
                {
                    var diag = clientiList.ShowDialog();
                    if (diag != DialogResult.OK)
                    {
                        return(false);
                    }
                    var cliente = int.Parse(clientiList.SelectedItem);


                    var listRighe = new List <ScontrinoLine>();
                    for (int i = 0; i < Datasource.Count(); i++)
                    {
                        var a = Datasource[i];
                        if (a.TipoRigaScontrino != TipoRigaScontrino.ScontoIncondizionato &&
                            a.TipoRigaScontrino != TipoRigaScontrino.Incassato &&
                            a.TipoRigaScontrino != TipoRigaScontrino.Totale)
                        {
                            listRighe.Add(new ScontrinoLine
                            {
                                Articolo          = a.Articolo,
                                Descrizione       = a.Descrizione,
                                IvaPerc           = a.IvaPerc,
                                Qta               = 1,
                                PrezzoIvato       = a.PrezzoIvato - a.PrezzoIvato * (a.ScontoPerc) / 100,
                                TipoRigaScontrino = a.TipoRigaScontrino
                            });
                        }
                    }
                    return(ControllerFatturazione.GeneraOrdScarico(listRighe, cliente, saveEntity));
                }
            }
        }
示例#2
0
        private void GeneraMovimentiDaOrdineDiCarico()
        {
            var fatt = SelectedItem;



            //controllo se ci sono già altri ordini di carico
            //per le righe di questo ordine

            if (fatt.ChiusaSpedita)
            {
                MessageManager.NotificaWarnig("Documento già chiuso, non è possibile generare altre giacenze!");
                return;
            }
            if (fatt.TipoDocumento != EnTipoDocumento.OrdineDiCarico)
            {
                MessageManager.NotificaWarnig("Documento deve essere del tipo ordine di carico!");
                return;
            }
            if (!MessageManager.QuestionMessage("Generando i movimenti, il documento non sarà più modificabile. Vuoi proseguire?"))
            {
                return;
            }
            using (var saveEnt = new SaveEntityManager())
            {
                var depositi = saveEnt.UnitOfWork.DepositoRepository.Find(a => a.ID == a.ID).Select(a => new { a.ID, a.NomeDeposito }).ToList();


                using (var selezionaDeposito = new ListViewCustom(depositi.Select(a => a.NomeDeposito).ToList(), "Imposta deposito e nome ddt fornitore", "Numero Ddt Fornitore", false))
                {
                    var diag = selezionaDeposito.ShowDialog();
                    if (diag != DialogResult.OK)
                    {
                        return;
                    }
                    if (selezionaDeposito.SelectedItem == null)
                    {
                        MessageManager.NotificaWarnig("Occorre impostare deposito su cui versare la merce!");
                        return;
                    }
                    if (selezionaDeposito.SelectedTextProp.Length == 0)
                    {
                        if (!MessageManager.QuestionMessage("Sei sicuro di non volere impostare il codice ddt o un riferimento al ddt fornitore. Vuoi proseguire?"))
                        {
                            return;
                        }
                    }
                    var deposito = depositi.Where(a => a.NomeDeposito == selezionaDeposito.SelectedItem).FirstOrDefault();

                    var list = saveEnt.UnitOfWork.FattureRigheRepository.Find(a => a.FatturaID == fatt.ID && a.Ricevuti > 0).ToList();

                    if (list.Count() == 0)
                    {
                        MessageManager.NotificaWarnig("Non c'è niente tra le qta ricevute nelle righe del documento!");
                        return;
                    }
                    ControllerMagazzino controllerMagazzino = new ControllerMagazzino();

                    foreach (var item in list)
                    {
                        if (!controllerMagazzino.NuovoMovimento(new Library.Core.Events.Magazzino.MovimentoMagazzino()
                        {
                            ArticoloID = item.ArticoloID.Value,
                            Deposito = deposito.ID,
                            Causale = selezionaDeposito.SelectedTextProp,
                            Qta = item.Ricevuti,
                            Prezzo = item.PrezzoUnitario
                        }, saveEnt.UnitOfWork))
                        {
                            MessageManager.NotificaWarnig("Sei sicuro un errore nell'inserimento del movimento");
                            return;
                        }
                        /*salvo i dati di evasione nella riga parent dell'ordine di acquisto*/
                        var evasi = saveEnt.UnitOfWork.FattureRigheRepository.Find(a => a.IdRigaCollegata != null &&
                                                                                   a.IdRigaCollegata == item.IdRigaCollegata)
                                    .Select(a => new { a.IdRigaCollegata, a.Qta })
                                    .GroupBy(a => a.IdRigaCollegata).Select(a => new { TOT = a.Sum(b => b.Qta), IdRigaParent = a.Key.Value }).FirstOrDefault();

                        var rigaParent = saveEnt.UnitOfWork.FattureRigheRepository.Find(a => a.ID == evasi.IdRigaParent).FirstOrDefault();

                        if (rigaParent.Evasi != evasi.TOT)
                        {
                            rigaParent.Evasi = evasi.TOT;
                            saveEnt.UnitOfWork.FattureRigheRepository.Update(rigaParent);
                        }
                    }
                    var dato = saveEnt.UnitOfWork.FatturaRepository.Find(a => a.ID == fatt.ID).FirstOrDefault();
                    dato.ChiusaSpedita = true;

                    saveEnt.UnitOfWork.FatturaRepository.Update(dato);



                    saveEnt.SaveEntity("Creati movimenti ingresso a magazzino e chiuso documento");
                }
            }
        }
示例#3
0
        public void Stampa()
        {
            string marcaFiltro = "";

            if (TipoExp == TipoExport.PerMarca)
            {
                using (var uof = new UnitOfWork())
                {
                    var list = uof.ArticoliRepository.Find(a => a.Strumento.Marca.Length > 0)
                               .Select(a => a.Strumento.Marca.ToUpper()).Distinct().OrderBy(a => a).ToList();

                    using (var frmMarche = new ListViewCustom(new ListViewCustom.settingCombo()
                    {
                        DataSource = list, TitoloCombo = "Marca"
                    }))
                    {
                        frmMarche.ShowDialog();
                        marcaFiltro = frmMarche.SelectedItem;
                    }
                }
            }

            _excel = new ClosedXML.Excel.XLWorkbook();


            using (var uof = new UnitOfWork())
            {
                var listArt = uof.AggiornamentoWebArticoloRepository.Find(a => true).Select(a => new
                {
                    ID = a.ArticoloID,
                    a.Articolo.Libro,
                    a.Articolo.Categoria,
                    articolo = a.Articolo,
                    a.CodiceArticoloEcommerce,
                    a.Articolo.Strumento,
                    a.Articolo.RiordinoPeriodi
                }).ToList();

                var qta = uof.MagazzinoRepository.Find(a => true)
                          .Select(a => new { a.ArticoloID, a.Deposito, a.Qta })
                          .GroupBy(a => new { a.ArticoloID, a.Deposito })
                          .Select(a => new { a.Key, sumQta = a.Sum(b => b.Qta) })
                          .ToList();


                if (TipoExp == TipoExport.SoloLibriMancanti)
                {
                    qta     = qta.Where(a => a.sumQta == 0 && a.Key.Deposito.Principale).ToList();
                    listArt = listArt.Where(a => qta.Select(b => b.Key.ArticoloID).Contains(a.ID)).ToList();

                    listArt = listArt.Where(a => !string.IsNullOrEmpty(a.articolo.Libro.Autore) ||
                                            !string.IsNullOrEmpty(a.Libro.Edizione) ||
                                            !string.IsNullOrEmpty(a.Libro.Genere) ||
                                            !string.IsNullOrEmpty(a.Libro.Settore) ||
                                            a.Categoria.Nome.Contains("libr")

                                            ).ToList();
                }
                if (TipoExp == TipoExport.PerMarca)
                {
                    /*filtro per marca*/
                    listArt = listArt.Where(a => a.Strumento.Marca != null && a.Strumento.Marca.Trim() == marcaFiltro).ToList();

                    var qtaAZero = qta.Select(a => new { a.Key.ArticoloID, a.sumQta })
                                   .GroupBy(a => a.ArticoloID).Select(a =>
                                                                      new { Somma = a.Sum(b => b.sumQta), ArticoloId = a.Key })
                                   .Where(a => a.Somma == 0).Select(a => a.ArticoloId).ToList();
                    /*filtro per le qta a zero*/
                    listArt = listArt.Where(a => qtaAZero.Contains(a.ID)).ToList();
                }
                var listToExport = listArt.Select(a =>
                                                  new
                {
                    a.ID,
                    Categoria = a.Categoria.Nome,
                    a.Categoria.Reparto,
                    a.articolo.Titolo,
                    Condizione = a.articolo.Condizione.ToString(),
                    a.articolo.CodiceABarre,
                    Prezzo         = a.articolo.Prezzo.ToString("C2"),
                    PrezzoAcquisto = a.articolo.PrezzoAcquisto.ToString("C2"),

                    a.Strumento.Marca,
                    a.Strumento.CodiceOrdine,
                    a.Strumento.Colore,
                    a.Strumento.Rivenditore,
                    a.Strumento.Modello,
                    a.Strumento.Nome,
                    a.articolo.Note1,
                    a.articolo.Note2,
                    a.articolo.Note3,
                    a.articolo.NonImponibile,


                    a.Libro.Autore,
                    a.Libro.TitoloDelLibro,
                    a.Libro.Edizione,
                    a.Libro.Edizione2,
                    a.Libro.Genere,
                    a.Libro.Ordine,
                    a.Libro.Settore,
                    a.articolo.ArticoloWeb.DescrizioneBreveHtml,
                    a.articolo.ArticoloWeb.DescrizioneHtml,
                    a.articolo.Iva,
                    a.articolo.ArticoloWeb.PrezzoWeb,
                    a.articolo.SottoScorta,
                    PeriodoSottoScorta = a.articolo.RiordinoPeriodi.Descrizione,
                    a.CodiceArticoloEcommerce
                    ,
                    a.articolo.DataUltimaModifica
                }

                                                  ).ToList();

                DataTable dt = null;
                if (TipoExp == TipoExport.SoloLibriMancanti)
                {
                    dt = ToDataTable(listToExport.Select(a => new
                    {
                        a.ID,
                        a.Titolo,
                        a.TitoloDelLibro,
                        a.Autore,
                        a.Genere,
                        a.Edizione,
                        a.Ordine,
                        a.Prezzo
                    }).ToList());
                }
                else if (TipoExp == TipoExport.PerMarca)
                {
                    dt = ToDataTable(listToExport.Select(a => new
                    {
                        a.ID,
                        a.Titolo,
                        a.Prezzo,
                        a.PrezzoAcquisto,
                        a.Marca,
                        a.CodiceOrdine,
                        a.Note1,
                        a.Note2,
                        a.Note3
                    }).ToList());
                }

                else if (TipoExp == TipoExport.TuttoLibri)
                {
                    dt = ToDataTable(listToExport.ToList());

                    dt.Columns.Remove("Nome");
                    dt.Columns.Remove("Marca");
                    dt.Columns.Remove("Modello");
                    dt.Columns.Remove("Rivenditore");
                    dt.Columns.Remove("Colore");
                    dt.Columns.Remove("CodiceOrdine");
                }
                else if (TipoExp == TipoExport.TuttoStrumenti)
                {
                    dt = ToDataTable(listToExport.ToList());


                    dt.Columns.Remove("Autore");
                    dt.Columns.Remove("TitoloDelLibro");
                    dt.Columns.Remove("Edizione");
                    dt.Columns.Remove("Edizione2");
                    dt.Columns.Remove("Genere");
                    dt.Columns.Remove("Ordine");
                    dt.Columns.Remove("Settore");
                }
                if (TipoExp == TipoExport.TuttoLibri ||
                    TipoExp == TipoExport.TuttoStrumenti)
                {
                    foreach (var item in uof.DepositoRepository.Find(a => (a.Principale && TipoExp == TipoExport.SoloLibriMancanti) || TipoExp != TipoExport.SoloLibriMancanti).ToList())
                    {
                        dt.Columns.Add("Qta_" + item.NomeDeposito);
                    }
                    foreach (DataRow itemRow in dt.Rows)
                    {
                        var qtaArt = qta.FindAll(a => a.Key.ArticoloID.ToString() == itemRow["ID"].ToString()).ToList();
                        foreach (var itemQta in qtaArt)
                        {
                            itemRow["Qta_" + itemQta.Key.Deposito.NomeDeposito] = itemQta.sumQta;
                            qta.Remove(itemQta);
                        }
                    }
                }
                if (TipoExp != TipoExport.TuttoLibri && TipoExp != TipoExport.TuttoStrumenti)
                {
                    dt.Columns.Remove("ID");
                }

                _excel.AddWorksheet(dt, "Generale");
            }

            var newfile = Path.Combine(System.IO.Path.GetTempPath(), TipoExp.ToString() + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_Magazzino.xlsx");

            _excel.SaveAs(newfile);
            Process.Start(newfile);
        }
示例#4
0
        /// <summary>
        ///
        ///Il file deve contenere le righe di vendita cosi strutturate  :



        ///       Descrizione : per il tipo di riga V deve sempre esserci , per il resto è opzionale
        ///       Aliquota Iva : per il tipo di riga V deve sempre esserci , per il resto è opzionale
        ///       Quantità : per il tipo di riga V deve sempre esserci , per il resto è opzionale
        ///       Totale : è sempre obbligatoria
        ///       Tipo Riga(V, T) : è sempre obbligatoria
        ///       Extra : è sempre opzionale


        ///       -V sta per Vendita
        ///       -T sta per Totale
        ///       -S sconto e importo
        ///       Vino Lambrusco; 22 ;1;0,75;2,50;V;



        ///       Es riga Totale :



        ///       Totale; ; ; ; 2,50;T;1 Riga con pagamento in contanti

        ///       Totale; ; ; ; 2,50;T;45 Riga con pagamento bancomat

        ///       Totale; ; ; ; 2,50;T;5 Riga con pagamento non riscosso
        ///
        /// </summary>
        private bool ScriviFileScontrino(List <ScontrinoLine> listRighe, bool scaricaGiacenze, SaveEntityManager saveEntity)
        {
            var uof = saveEntity.UnitOfWork;
            {
                var list = uof.TipiPagamentoScontrinoRepository.Find(a => a.Enable == true).ToList().Select(a => a.Codice.ToString() + " " + a.Descrizione).ToList();
                using (var tipiPagamento = new ListViewCustom(list, "Tipo pagamento", "Codice lotteria"))
                {
                    var diag = tipiPagamento.ShowDialog();
                    if (diag != DialogResult.OK)
                    {
                        return(false);
                    }
                    var pagamento      = tipiPagamento.SelectedItem;
                    var codiceLotteria = tipiPagamento.SelectedTextProp;

                    if (string.IsNullOrEmpty(pagamento))
                    {
                        MessageManager.NotificaWarnig("Occorre selezionare il tipo di pagamento");

                        return(false);
                    }
                    var tot = listRighe.Where(a => a.TipoRigaScontrino == TipoRigaScontrino.Totale).First();

                    tot.Pagamento         = pagamento.Split(" ".ToCharArray()).First();
                    tot.TotaleComplessivo = tot.TotaleRiga;

                    var incassato = Datasource.Where(a => a.TipoRigaScontrino == TipoRigaScontrino.Incassato).First();

                    tot.TotaleComplessivo = incassato.PrezzoIvato;
                    if (codiceLotteria.Trim().Length > 0)
                    {
                        tot.CodiceLotteria = codiceLotteria;
                    }
                    var content = listRighe.Select(a => a.ToString()).ToList().ToArray();


                    var validator = SettingScontrinoValidator.ReadSetting();
                    if (scaricaGiacenze)
                    {
                        var negozio = uof.DepositoRepository.Find(a => a.Principale == true).First();
                        using (var depo = new Core.Controllers.ControllerMagazzino())
                        {
                            foreach (var item in Datasource.Where(a => a.TipoRigaScontrino == TipoRigaScontrino.Vendita & a.Articolo >= 0))
                            {
                                ScaricaQtaMagazzino scarica = new ScaricaQtaMagazzino();

                                scarica.Qta        = 1;
                                scarica.Prezzo     = item.PrezzoIvato - item.PrezzoIvato * (item.ScontoPerc) / 100;
                                scarica.Deposito   = negozio.ID;
                                scarica.ArticoloID = item.Articolo;
                                EventAggregator.Instance().Publish <ScaricaQtaMagazzino>(scarica);
                            }
                        }
                    }
                    System.IO.File.WriteAllLines(
                        System.IO.Path.Combine(validator.FolderDestinazione, DateTime.Now.Ticks.ToString() + ".txt"), content);


                    MessageManager.NotificaInfo("Scontrino pubblicato al servizio correttamente!");

                    return(true);
                }
            }
        }