Beispiel #1
0
        public ControllerRigheFatture(ControllerFatturazione controllerFatturazione)
            : base(enAmbiente.FattureRigheList, enAmbiente.FattureRigheDett)
        {
            _controllerFatturazione = controllerFatturazione;
            TipoDocFattura          = _controllerFatturazione.EditItem.TipoDocumento;
            SelectedItem            = new FatturaRiga();

            _removePrio = EventAggregator.Instance().Subscribe <AddPriority <FatturaRiga> >((a) => { CambiaPriorita(true); });;
            _addPrio    = EventAggregator.Instance().Subscribe <RemovePriority <FatturaRiga> >((a) => { CambiaPriorita(false); });;

            EventAggregator.Instance().Subscribe <Save <FatturaRiga> >((a) =>
            {
            });
            _selectSub = EventAggregator.Instance().Subscribe <Add <FatturaRiga> >((a) =>
            {
                EditItem = new FatturaRiga()
                {
                    IvaApplicata = "22", Fattura = _controllerFatturazione.EditItem
                };

                ShowEditView();
            });
            _subRemove = EventAggregator.Instance().Subscribe <Remove <FatturaRiga> >((x) =>
            {
                using (var saveManager = new SaveEntityManager())
                {
                    var uof     = saveManager.UnitOfWork;
                    var curItem = (FatturaRiga)SelectedItem;
                    if (curItem != null && curItem.ID > 0)
                    {
                        if (!MessageManager.QuestionMessage("Sei sicuro di volere eliminare la riga selezionata?"))
                        {
                            return;
                        }

                        if (saveManager.UnitOfWork.FatturaRepository.Find(a => a.ID == curItem.FatturaID).First().ChiusaSpedita)
                        {
                            MessageManager.NotificaWarnig("Documento già chiuso, non è possibile modificare altro!");
                            return;
                        }
                        var item = uof.FattureRigheRepository.Find(b => b.ID == curItem.ID).First();
                        uof.FattureRigheRepository.Delete(item);

                        if (saveManager.SaveEntity(enSaveOperation.OpDelete))
                        {
                            AggiornaTotaliFattura();

                            EventAggregator.Instance().Publish <UpdateList <FatturaRiga> >(new UpdateList <FatturaRiga>(this));
                        }
                    }
                }
            });
            _subSave = EventAggregator.Instance().Subscribe <Save <FatturaRiga> >((a) =>
            {
                Save(null);
            });
        }
Beispiel #2
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));
        }
Beispiel #3
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);
            }
        }
Beispiel #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);
        }
Beispiel #5
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);
            }
        }
Beispiel #6
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!");
                }
            }
        }
Beispiel #7
0
 private void ImportaFatture(ImportaFattureAccess obj)
 {
     ControllerFatturazione.ImportaFatture();
 }
Beispiel #8
0
        private void Apri(ApriAmbiente obj)
        {
            switch (obj.TipoEnviroment)
            {
            case enAmbiente.StrumentiList:
            {
                var controllerArt = new ControllerArticoli(ControllerArticoli.enModalitaArticolo.SoloStrumenti);
                var viewArt       = new ArticoliListView(controllerArt);
                this.ShowView(viewArt, obj.TipoEnviroment, controllerArt);
                break;
            }

            case enAmbiente.LibriList:
            {
                var controllerArt = new ControllerArticoli(ControllerArticoli.enModalitaArticolo.SoloLibri);
                var viewArt       = new ArticoliListView(controllerArt);
                this.ShowView(viewArt, obj.TipoEnviroment, controllerArt);
                break;
            }

            case enAmbiente.RicercaArticolo:
            {
                var contrArt       = new ControllerArticoli(ControllerArticoli.enModalitaArticolo.Ricerca);
                var viewRicercaArt = new RicercaArticoliStyleView(contrArt);

                this.ShowView(viewRicercaArt, obj.TipoEnviroment, contrArt);
            }
            break;

            case enAmbiente.ArticoliSottoscorta:
            {
                var contrArt       = new ControllerListinoFornitori(null, true);
                var viewRicercaArt =
                    new BaseGridViewGeneric <ListinoPrezziFornitoriItem,
                                             ControllerListinoFornitori, ListinoPrezziFornitori>(contrArt, true);

                this.ShowView(viewRicercaArt, obj.TipoEnviroment, contrArt);
            }
            break;

            case enAmbiente.CategorieArticoliList:
            {
                var contrArt       = new ControllerCategorie();
                var viewRicercaArt =
                    new BaseGridViewGeneric <CategoriaItem, ControllerCategorie,
                                             Categoria>(contrArt);

                this.ShowView(viewRicercaArt, obj.TipoEnviroment, contrArt);
            }
            break;

            case enAmbiente.NomeListiniClientiList:
            {
                var contrArt       = new ControllerListinoPrezziNomi(false);
                var viewRicercaArt =
                    new BaseGridViewGeneric <ListinoPrezziVenditaNomeItem, ControllerListinoPrezziNomi,
                                             ListinoPrezziVenditaNome>(contrArt, false);

                this.ShowView(viewRicercaArt, obj.TipoEnviroment, contrArt);
            }
            break;

            case enAmbiente.PagamentiList:

                var controllerPagamenti = new ControllerPagamenti();
                var viewPagamenti       = new PagamentiListView(controllerPagamenti);
                this.ShowView(viewPagamenti, obj.TipoEnviroment, controllerPagamenti);

                break;

            case enAmbiente.UtentiList:

                var controllerUtenti = new ControllerUtenti();

                var viewUtenti = new UtentiListView(controllerUtenti);

                this.ShowView(viewUtenti, obj.TipoEnviroment, controllerUtenti);

                break;

            case enAmbiente.FattureList:
            {
                var controllerFatt = new ControllerFatturazione();

                var viewFatt = new FattureListView(controllerFatt, enAmbiente.FattureList, enAmbiente.Fattura);

                ShowView(viewFatt, obj.TipoEnviroment, controllerFatt);
            }
            break;

            case enAmbiente.TipiPagamentiList:
            {
                var controller = new ControllerTipiPagamentiFatture();

                var view = new BaseGridViewGeneric <TipiPagamentoDocumentiItem, ControllerTipiPagamentiFatture, TipiPagamentoDocumenti>(controller, false);

                ShowView(view, obj.TipoEnviroment, controller);
            }
            break;

            case enAmbiente.RiordinoPeriodiList:
            {
                var controller = new ControllerRiordinoPeriodi();

                var view = new BaseGridViewGeneric <RiordinoPeriodiItem, ControllerRiordinoPeriodi, RiordinoPeriodi>(controller, false);

                ShowView(view, obj.TipoEnviroment, controller);
            }
            break;

            case enAmbiente.TipiPagamentiScontrinoList:
            {
                var controller = new ControllerTipiPagamentiScontrino();

                var view = new BaseGridViewGeneric <TipiPagamentoScontrinoItem, ControllerTipiPagamentiScontrino, TipiPagamentoScontrino>(controller, false);

                ShowView(view, obj.TipoEnviroment, controller);
            }
            break;

            case enAmbiente.LogViewList:
                var controllerLog = new ControllerLog();

                var viewLog = new LogViewList(controllerLog);

                this.ShowView(viewLog, obj.TipoEnviroment, controllerLog);

                break;

            case enAmbiente.Scheduler:
                var controllerSched = new ControllerScheduler();

                var viewSched = new BaseGridViewGeneric <SchedulerItem, ControllerScheduler, SchedulerJob>(
                    controllerSched);

                this.ShowView(viewSched, obj.TipoEnviroment, controllerSched);
                viewSched.RicercaRefresh();
                viewSched.dgvRighe.Columns["Errore"].ColumnEdit = new RepositoryItemMemoEdit();
                var dateformat = new RepositoryItemDateEdit();
                dateformat.DisplayFormat.FormatType   = DevExpress.Utils.FormatType.DateTime;
                dateformat.DisplayFormat.FormatString = System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.FullDateTimePattern;

                viewSched.dgvRighe.Columns["UltimaEsecuzione"].ColumnEdit = dateformat;
                viewSched.dgvRighe.Columns["ProssimoAvvio"].ColumnEdit    = dateformat;

                break;

            case enAmbiente.ClientiList:
                var controllerClienti = new ControllerClienti();

                var viewCli = new SoggettiListView(controllerClienti);

                this.ShowView(viewCli, obj.TipoEnviroment, controllerClienti);
                break;

            case enAmbiente.DepositoList:
                var controllerDep = new ControllerDepositi();

                var viewDep = new DepositiListView(controllerDep);

                this.ShowView(viewDep, obj.TipoEnviroment, controllerDep);
                break;

            case enAmbiente.SettingFatture:

                ApriSettingMittenteFattura();
                break;

            case enAmbiente.SettingFtpBackup:

                ApriSettingFtpBackup();
                break;

            case enAmbiente.SettingScontrino:

                ApriSettingScontrino();
                break;

            case enAmbiente.SettingSito:

                ApriSettingSito();
                break;

            case enAmbiente.SettingProgramma:

                ApriSettingProgramma();
                break;

            case enAmbiente.SettingDocPagamenti:

                ApriSettingDocPagamenti();
                break;

            case enAmbiente.SettingStampa:
                ApriSettingStampaFattura();
                break;

            case enAmbiente.Main:
                break;

            case enAmbiente.Fattura:
                break;

            case enAmbiente.StrumentiDetail:
                break;

            case enAmbiente.Magazzino:
                break;

            case enAmbiente.Cliente:
                break;

            case enAmbiente.FattureRigheList:
                break;

            case enAmbiente.FattureRigheDett:
                break;

            default:
                break;
            }
        }