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)); } } }
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"); } } }
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); }
/// <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); } } }