Ejemplo n.º 1
0
        private void AggiornaTotaliFattura()
        {
            var item = ControllerFatturazione.CalcolaTotali(
                _controllerFatturazione.EditItem);

            _controllerFatturazione.EditItem = item;

            EventAggregator.Instance().Publish(new RebindItemUpdated <Fattura>(_controllerFatturazione));
            EventAggregator.Instance().Publish(new Save <Fattura>(_controllerFatturazione));
        }
Ejemplo n.º 2
0
        private void GeneraOrdineCarico()
        {
            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 fare altri documenti di carico!");
                return;
            }
            if (fatt.TipoDocumento != EnTipoDocumento.OrdineAlFornitore)
            {
                MessageManager.NotificaWarnig("Documento deve essere del tipo ordine al fornitore!");
                return;
            }


            using (var saveEnt = new SaveEntityManager())
            {
                bool save = false;

                var listFatt = new List <Library.Entity.Fattura>();

                var daGenerare = new List <Tuple <FatturaRiga, int> >();
                foreach (var item in saveEnt.UnitOfWork.FattureRigheRepository.Find(a => a.FatturaID == fatt.ID).ToList())
                {
                    /*deve cercare gli ordini di carico già fatti, e collegati, e detrarre la qta per vedere se farne di nuovi*/
                    var evaso = saveEnt.UnitOfWork.FattureRigheRepository.Find(a => a.IdRigaCollegata == item.ID).Select(a => new
                                                                                                                         { Qta = a.Fattura.ChiusaSpedita == true ? a.Ricevuti : a.Qta }).Select(a => a.Qta).DefaultIfEmpty(0).Sum();

                    if (evaso == item.Qta)
                    {
                        continue;
                    }
                    daGenerare.Add(new Tuple <FatturaRiga, int>(item, item.Qta - evaso));
                }

                if (daGenerare.Count() == 0)
                {
                    MessageManager.NotificaInfo("Non ci altre righe da fare ingressare, chiudi ordine fornitore !");
                    return;
                }


                Library.Entity.Fattura fattExt = null;

                foreach (var item in daGenerare)
                {
                    if (fattExt == null)
                    {
                        fattExt = new Library.Entity.Fattura();
                        fattExt.ClienteFornitoreID = fatt.ClienteFornitoreID;
                        fattExt.TipoDocumento      = Library.Entity.EnTipoDocumento.OrdineDiCarico;
                        fattExt.Data   = DateTime.Now;
                        fattExt.Codice = ControllerFatturazione.CalcolaCodice(fattExt);

                        var fornitore = saveEnt.UnitOfWork.SoggettiRepository.Find(a => a.ID == fattExt.ClienteFornitoreID).ToList().Select(a => new
                        {
                            RagioneSociale = !string.IsNullOrEmpty(a.RagioneSociale) ? a.RagioneSociale : a.Cognome + " " + a.Nome,
                            PIVA           = !string.IsNullOrEmpty(a.PIVA) ? a.PIVA : a.CodiceFiscale
                        }).FirstOrDefault();
                        fattExt.RagioneSociale = fornitore.RagioneSociale;
                        fattExt.PIVA           = fornitore.PIVA;

                        saveEnt.UnitOfWork.FatturaRepository.Add(fattExt);

                        //saveEnt.SaveEntity("");

                        listFatt.Add(fattExt);
                    }

                    var rigaMaster = item.Item1;
                    var riga       = (new Library.Entity.FatturaRiga()
                    {
                        CodiceFornitore = rigaMaster.CodiceFornitore,
                        ArticoloID = rigaMaster.ArticoloID,
                        Descrizione = rigaMaster.Descrizione,
                        Qta = item.Item2,
                        Fattura = fattExt,
                        PrezzoUnitario = rigaMaster.PrezzoUnitario,
                        IvaApplicata = rigaMaster.IvaApplicata,
                        IdRigaCollegata = rigaMaster.ID
                    });
                    saveEnt.UnitOfWork.FattureRigheRepository.Add(riga);
                    save = true;
                }

                if (save)
                {
                    saveEnt.SaveEntity("");
                }
                else
                {
                    MessageManager.NotificaInfo("Non ci sono articoli da ordinare!");
                    return;
                }

                foreach (var item in listFatt.Distinct())
                {
                    ControllerFatturazione.CalcolaTotali(item);
                    saveEnt.UnitOfWork.FatturaRepository.Update(item);
                }
                if (save)
                {
                    saveEnt.SaveEntity("Generato ordine di carico!");
                }

                RefreshList(null);
            }
        }
Ejemplo n.º 3
0
        public static bool GeneraOrdAcq(List <ListinoPrezziFornitoriItem> items)
        {
            using (var saveEnt = new SaveEntityManager())
            {
                bool save = false;

                var listFatt = new List <Library.Entity.Fattura>();

                foreach (var item in items.Where(a => a.QtaDaOrdinare - a.QtaInOrdine > 0)
                         .Select(a => new { Qta = a.QtaDaOrdinare - a.QtaInOrdine, a.CodiceArticoloFornitore, a.ID, a.Entity, a.Prezzo }).OrderBy(a => a.Entity.FornitoreID).ToList())
                {
                    Library.Entity.Fattura fattExt = saveEnt.UnitOfWork.FatturaRepository.Find(a => a.ChiusaSpedita == false && a.ClienteFornitoreID == item.Entity.FornitoreID &&
                                                                                               a.TipoDocumento == Library.Entity.EnTipoDocumento.OrdineAlFornitore).FirstOrDefault();
                    var riga = new Library.Entity.FatturaRiga();

                    Library.Entity.Articoli.Articolo art = saveEnt.UnitOfWork.ArticoliRepository.Find(a => a.ID == item.Entity.ArticoloID).FirstOrDefault();



                    if (fattExt == null)
                    {
                        fattExt = listFatt.Where(a => a.ClienteFornitoreID == item.Entity.FornitoreID).FirstOrDefault();
                    }

                    if (fattExt == null)
                    {
                        fattExt = new Library.Entity.Fattura();
                        fattExt.ClienteFornitoreID = item.Entity.FornitoreID;
                        fattExt.TipoDocumento      = Library.Entity.EnTipoDocumento.OrdineAlFornitore;
                        fattExt.Data   = DateTime.Now;
                        fattExt.Codice = ControllerFatturazione.CalcolaCodice(fattExt);

                        var fornitore = saveEnt.UnitOfWork.SoggettiRepository.Find(a => a.ID == fattExt.ClienteFornitoreID).Select(a => new { a.RagioneSociale, a.CodiceFiscale, a.PIVA }).FirstOrDefault();
                        fattExt.RagioneSociale = fornitore.RagioneSociale;
                        fattExt.PIVA           = fornitore.PIVA;

                        saveEnt.UnitOfWork.FatturaRepository.Add(fattExt);

                        saveEnt.SaveEntity("");
                    }
                    listFatt.Add(fattExt);

                    riga = (new Library.Entity.FatturaRiga()
                    {
                        CodiceFornitore = item.CodiceArticoloFornitore,
                        ArticoloID = item.Entity.ArticoloID,
                        Descrizione = art.Titolo,
                        Qta = item.Qta,
                        Fattura = fattExt,
                        PrezzoUnitario = item.Prezzo,
                        IvaApplicata = art.Iva.ToString(),
                    });
                    saveEnt.UnitOfWork.FattureRigheRepository.Add(riga);
                    save = true;
                }


                if (save)
                {
                    saveEnt.SaveEntity("");
                }
                else
                {
                    MessageManager.NotificaInfo("Non ci sono articoli da ordinare!");
                    return(false);
                }

                foreach (var item in listFatt.Distinct())
                {
                    ControllerFatturazione.CalcolaTotali(item);
                    saveEnt.UnitOfWork.FatturaRepository.Update(item);
                }
                if (save)
                {
                    saveEnt.SaveEntity("Generati gli ordini di acquisto!");
                }

                return(true);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// genera l'ordine scarico dalla vendita a banco e scarica le giacenze
        /// </summary>
        /// <param name="items"></param>
        /// <param name="cliente"></param>
        /// <param name="saveEnt"></param>
        /// <returns></returns>
        internal static bool GeneraOrdScarico(List <ScontrinoLine> items, int cliente, SaveEntityManager saveEnt)
        {
            bool save = false;

            var listFatt = new List <Library.Entity.Fattura>();

            var fattExt = new Library.Entity.Fattura();

            fattExt.ClienteFornitoreID = cliente;
            fattExt.TipoDocumento      = Library.Entity.EnTipoDocumento.OrdineDiScarico;
            fattExt.Data   = DateTime.Now;
            fattExt.Codice = ControllerFatturazione.CalcolaCodice(fattExt);

            var fornitore = saveEnt.UnitOfWork.SoggettiRepository.Find(a => a.ID == fattExt.ClienteFornitoreID).Select(a => new { a.RagioneSociale, a.CodiceFiscale, a.PIVA }).FirstOrDefault();

            fattExt.RagioneSociale = fornitore.RagioneSociale;
            fattExt.PIVA           = fornitore.PIVA;

            saveEnt.UnitOfWork.FatturaRepository.Add(fattExt);

            saveEnt.SaveEntity("");

            listFatt.Add(fattExt);

            var negozio = saveEnt.UnitOfWork.DepositoRepository.Find(a => a.Principale == true).First();

            using (var depo = new Core.Controllers.ControllerMagazzino())
            {
                foreach (var item in items
                         .Select(a => new { Qta = a.Qta, a.Articolo, a.Descrizione, a.IvaPerc, a.PrezzoIvato })
                         .ToList())
                {
                    var riga = (new Library.Entity.FatturaRiga()
                    {
                        ArticoloID = item.Articolo,
                        Descrizione = item.Descrizione,
                        Qta = (int)item.Qta,
                        Fattura = fattExt,
                        PrezzoUnitario = Math.Round(item.PrezzoIvato / (1 + ((decimal)item.IvaPerc / (decimal)100)), 5, MidpointRounding.ToEven),
                        IvaApplicata = item.IvaPerc.ToString(),
                    });
                    saveEnt.UnitOfWork.FattureRigheRepository.Add(riga);
                    if (item.Articolo > 0)
                    {
                        ScaricaQtaMagazzino scarica = new ScaricaQtaMagazzino();

                        scarica.Qta        = item.Qta;
                        scarica.Prezzo     = item.PrezzoIvato;
                        scarica.Deposito   = negozio.ID;
                        scarica.ArticoloID = item.Articolo;
                        scarica.Causale    = "Ordine scarico " + fattExt.Codice;

                        EventAggregator.Instance().Publish <ScaricaQtaMagazzino>(scarica);
                    }
                    save = true;
                }
            }
            if (save)
            {
                saveEnt.SaveEntity("");
            }
            else
            {
                MessageManager.NotificaInfo("Non ci sono articoli da ordinare!");
                return(false);
            }

            foreach (var item in listFatt.Distinct())
            {
                ControllerFatturazione.CalcolaTotali(item);
                saveEnt.UnitOfWork.FatturaRepository.Update(item);
            }
            if (save)
            {
                saveEnt.SaveEntity("Generato l'ordine di scarico!");
            }

            return(true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// generazione fatture da ordine di scarico
        /// </summary>
        private void GeneraFatturaDaOrdineScarico()
        {
            var fatt = SelectedItem;


            if (SelectedItems.Count > 1)
            {
                if (!MessageManager.QuestionMessage("Vuoi generare fattura per i documenti selezionati. Vuoi proseguire?"))
                {
                    return;
                }
            }

            if (!MessageManager.QuestionMessage(@"Generando la fattura, il documento\i di carico non sarà più modificabile. Vuoi proseguire?"))
            {
                return;
            }
            List <Fattura> list = new List <Fattura>();

            if (SelectedItems.Count > 1)
            {
                list = SelectedItems.Select(a => a.Entity).ToList();
            }
            else
            {
                list.Add(fatt);
            }
            list = list.Where(a => !a.ChiusaSpedita && a.TipoDocumento == EnTipoDocumento.OrdineDiScarico).ToList();
            if (list.Where(a => !a.ChiusaSpedita).Select(a => a.ClienteFornitoreID).Distinct().Count() > 0)
            {
                if (!MessageManager.QuestionMessage("Vuoi generare fattura per i clienti selezionati. " +
                                                    "I documenti chiusi e non del tipo 'Ordine di carico' non saranno presi in considerazione. Vuoi proseguire?"))
                {
                    return;
                }
            }

            if (list.Count() == 0)
            {
                return;
            }
            using (var saveEnt = new SaveEntityManager())
            {
                bool save     = false;
                var  listFatt = new List <Library.Entity.Fattura>();

                foreach (var ordScaricoListFornitore in list.GroupBy(a => a.ClienteFornitoreID).Select(a => new { a.Key, Fatture = a }))
                {
                    var fattExt = new Library.Entity.Fattura();
                    fattExt.ClienteFornitoreID = ordScaricoListFornitore.Key;
                    fattExt.TipoDocumento      = Library.Entity.EnTipoDocumento.FatturaDiCortesia;
                    fattExt.Data   = DateTime.Now;
                    fattExt.Codice = ControllerFatturazione.CalcolaCodice(fattExt);

                    var fornitore = saveEnt.UnitOfWork.SoggettiRepository.Find(a => a.ID == fattExt.ClienteFornitoreID).Select(a => new { a.RagioneSociale, a.CodiceFiscale, a.PIVA }).FirstOrDefault();
                    fattExt.RagioneSociale = fornitore.RagioneSociale;
                    fattExt.PIVA           = fornitore.PIVA;

                    saveEnt.UnitOfWork.FatturaRepository.Add(fattExt);

                    saveEnt.SaveEntity("");

                    listFatt.Add(fattExt);
                    foreach (var ordScarico in ordScaricoListFornitore.Fatture)
                    {
                        var righeOrdScarico = saveEnt.UnitOfWork.FattureRigheRepository.Find(a => a.FatturaID == ordScarico.ID);

                        foreach (var itemRigaScarico in righeOrdScarico)
                        {
                            var riga = (new Library.Entity.FatturaRiga()
                            {
                                ArticoloID = itemRigaScarico.ArticoloID,
                                Descrizione = itemRigaScarico.Descrizione,
                                Qta = itemRigaScarico.Qta,
                                Fattura = fattExt,
                                PrezzoUnitario = itemRigaScarico.PrezzoUnitario,
                                IvaApplicata = itemRigaScarico.IvaApplicata,
                            });
                            saveEnt.UnitOfWork.FattureRigheRepository.Add(riga);
                        }
                        save = true;
                        /*chiudo l'ordine di scarico originale*/
                        var ordScarDb = saveEnt.UnitOfWork.FatturaRepository.Find(a => a.ID == ordScarico.ID).First();
                        ordScarDb.ChiusaSpedita = true;
                        saveEnt.UnitOfWork.FatturaRepository.Update(ordScarDb);
                    }


                    if (save)
                    {
                        saveEnt.SaveEntity("");
                    }
                }
                foreach (var item in listFatt.Distinct())
                {
                    ControllerFatturazione.CalcolaTotali(item);
                    saveEnt.UnitOfWork.FatturaRepository.Update(item);
                }
                if (save)
                {
                    saveEnt.SaveEntity("Generati gli ordini di acquisto!");
                }
            }
        }