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); }); }
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)); }
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); } }
/// <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); }
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); } }
/// <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!"); } } }
private void ImportaFatture(ImportaFattureAccess obj) { ControllerFatturazione.ImportaFatture(); }
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; } }