public async Task<int> ActualizarFacturaAsync(EditorFactura editor)
        {
            Factura = await BuscarFacturaAsync(editor.Id);

            ModificarFactura(editor);
                             
            _contexto.Entry(Factura).State = EntityState.Modified;
            return  await GuardarCambiosAsync();
         }
        public async Task<int> CrearFacturaAsync(EditorFactura editor)
        {
            Factura = new Factura();

            ModificarFactura(editor);         

            _contexto.Facturas.Add(Factura);

            var cambios = await GuardarCambiosAsync();
            
            editor.InyectarFactura(Factura);

            return cambios;
        }
예제 #3
0
        public async Task<EditorFactura> ObtenerEditorFacturaParaCrearNuevaFactura(string serie, int? idCliente)
        {
            EditorFactura editor;

            var ultimaFacturaCreada = await ObtenerUlitmaFacturaDeLaSerie(serie);

            if (ultimaFacturaCreada == null)
            {
                editor = new EditorFactura
                {
                    SerieFactura = serie,
                    NumeracionFactura = 1,
                    FormatoNumeroFactura = "{0}{1:1000}",
                    FechaEmisionFactura = DateTime.Today,
                    PorcentajeIvaPorDefecto = PorcentajeIvaPorDefecto,
                    FormaPago = FormaPagoEnum.Transferencia,
                    EstadoFactura = EstadoFacturaEnum.Borrador,

                    Lineas = new List<EditorLineaFactura> {
                            new EditorLineaFactura {
                                    Cantidad = 1,
                                    PorcentajeImpuesto = PorcentajeIvaPorDefecto
                            }
                      }
                };
            }
            else
            {
                editor = new EditorFactura
                {
                    SerieFactura = ultimaFacturaCreada.SerieFactura,
                    NumeracionFactura = ultimaFacturaCreada.NumeracionFactura + 1,
                    FormatoNumeroFactura = ultimaFacturaCreada.FormatoNumeroFactura,
                    FechaEmisionFactura = DateTime.Today,
                    NombreArchivoPlantillaInforme = ultimaFacturaCreada.NombreArchivoPlantillaInforme,
                    PorcentajeIvaPorDefecto = PorcentajeIvaPorDefecto,
                    FormaPago = ultimaFacturaCreada.FormaPago,
                    FormaPagoDetalles = ultimaFacturaCreada.FormaPagoDetalles,
                    ComentariosPie = ultimaFacturaCreada.ComentariosPie,
                    EstadoFactura = EstadoFacturaEnum.Borrador,
                    IdVendedor = ultimaFacturaCreada.IdVendedor,
                    VendedorCodigoPostal = ultimaFacturaCreada.VendedorCodigoPostal,
                    VendedorDireccion = ultimaFacturaCreada.VendedorDireccion,
                    VendedorEmail = ultimaFacturaCreada.VendedorEmail,
                    VendedorLocalidad = ultimaFacturaCreada.VendedorLocalidad,
                    VendedorNombreOEmpresa = ultimaFacturaCreada.VendedorNombreOEmpresa,
                    VendedorNumeroIdentificacionFiscal = ultimaFacturaCreada.VendedorNumeroIdentificacionFiscal,
                    VendedorProvincia = ultimaFacturaCreada.VendedorProvincia,

                    Lineas = new List<EditorLineaFactura> {
                            new EditorLineaFactura {
                                    Cantidad = 1,
                                    PorcentajeImpuesto = PorcentajeIvaPorDefecto
                            }
                      }
                };
            }

            if (idCliente.HasValue)
            {
                var cliente = _contexto.Clientes.Find(idCliente.Value);
                editor.AsignarDatosCliente(cliente); 
            }

            return editor;
        }
예제 #4
0
        private List<EditorFactura> ObtenerFacturasDeExcel(Stream stream, SelectorColumnasExcelFactura columnas)
        {
            var workbook = new XLWorkbook(stream);
            var worksheet = workbook.Worksheets.First();

            var firstRow = worksheet.FirstRowUsed();
            var rowUsed = firstRow.RowUsed();
            rowUsed = rowUsed.RowBelow();

            var facturas = new List<EditorFactura>();

            while (!rowUsed.Cell(columnas.NumeroFactura).IsEmpty())
            {
                var factura = new EditorFactura();

                factura.IdUsuario = columnas.IdUsuario;

                factura.SerieFactura = columnas.SerieFactura.EsLetraMayuscula() ? rowUsed.Cell(columnas.SerieFactura).GetString() : columnas.SerieFactura;
                factura.NumeracionFactura = Convert.ToInt32(rowUsed.Cell(columnas.NumeroFactura).GetString());
                factura.FormatoNumeroFactura = columnas.FormatoNumeroFactura.EsLetraMayuscula() ? rowUsed.Cell(columnas.FormatoNumeroFactura).GetString() : columnas.FormatoNumeroFactura;
                factura.FechaEmisionFactura = rowUsed.Cell(columnas.FechaEmisionFactura).GetDateTime();
                factura.FechaVencimientoFactura = columnas.FechaVencimientoFactura.EsLetraMayuscula() ? rowUsed.Cell(columnas.FechaVencimientoFactura).GetDateTime() : string.IsNullOrEmpty(columnas.FechaVencimientoFactura) ? (DateTime?)null : Convert.ToDateTime(columnas.FechaVencimientoFactura);
                factura.EstadoFactura = (EstadoFacturaEnum)Enum.Parse(typeof(EstadoFacturaEnum), (columnas.EstadoFactura.EsLetraMayuscula() ? rowUsed.Cell(columnas.EstadoFactura).GetString() : columnas.EstadoFactura), true);

                factura.FormaPago = (FormaPagoEnum)Enum.Parse(typeof(FormaPagoEnum), (columnas.FormaPago.EsLetraMayuscula() ? rowUsed.Cell(columnas.FormaPago).GetString() : columnas.FormaPago), true);
                factura.FormaPagoDetalles = columnas.FormaPagoDetalles.EsLetraMayuscula() ? rowUsed.Cell(columnas.FormaPagoDetalles).GetString() : columnas.FormaPagoDetalles;

                factura.IdVendedor = columnas.IdVendedor.EsLetraMayuscula() ? Convert.ToInt32(rowUsed.Cell(columnas.IdVendedor).GetDouble()) : string.IsNullOrEmpty(columnas.IdVendedor) ? (int?)null : Convert.ToInt32(columnas.IdVendedor);
                factura.VendedorCodigoPostal = columnas.VendedorCodigoPostal.EsLetraMayuscula() ? rowUsed.Cell(columnas.VendedorCodigoPostal).GetString() : columnas.VendedorCodigoPostal;
                factura.VendedorDireccion = columnas.VendedorDireccion.EsLetraMayuscula() ? rowUsed.Cell(columnas.VendedorDireccion).GetString() : columnas.VendedorDireccion;
                factura.VendedorEmail = columnas.VendedorEmail.EsLetraMayuscula() ? rowUsed.Cell(columnas.VendedorEmail).GetString() : columnas.VendedorEmail;
                factura.VendedorLocalidad = columnas.VendedorLocalidad.EsLetraMayuscula() ? rowUsed.Cell(columnas.VendedorLocalidad).GetString() : columnas.VendedorLocalidad;
                factura.VendedorNombreOEmpresa = columnas.VendedorNombreOEmpresa.EsLetraMayuscula() ? rowUsed.Cell(columnas.VendedorNombreOEmpresa).GetString() : columnas.VendedorNombreOEmpresa;
                factura.VendedorNumeroIdentificacionFiscal = columnas.VendedorNumeroIdentificacionFiscal.EsLetraMayuscula() ? rowUsed.Cell(columnas.VendedorNumeroIdentificacionFiscal).GetString() : columnas.VendedorNumeroIdentificacionFiscal;
                factura.VendedorProvincia = columnas.VendedorProvincia.EsLetraMayuscula() ? rowUsed.Cell(columnas.VendedorProvincia).GetString() : columnas.VendedorProvincia;

                factura.IdComprador = columnas.IdComprador.EsLetraMayuscula() ?  rowUsed.Cell(columnas.IdComprador).GetValue<int>() : string.IsNullOrEmpty(columnas.IdComprador) ? (int?)null : Convert.ToInt32(columnas.IdComprador);
                factura.CompradorCodigoPostal = columnas.CompradorCodigoPostal.EsLetraMayuscula() ? rowUsed.Cell(columnas.CompradorCodigoPostal).GetString() : columnas.CompradorCodigoPostal;
                factura.CompradorDireccion1 = columnas.CompradorDireccion.EsLetraMayuscula() ? rowUsed.Cell(columnas.CompradorDireccion).GetString() : columnas.CompradorDireccion;
                factura.CompradorEmail = columnas.CompradorEmail.EsLetraMayuscula() ? rowUsed.Cell(columnas.CompradorEmail).GetString() : columnas.CompradorEmail;
                factura.CompradorLocalidad = columnas.CompradorLocalidad.EsLetraMayuscula() ? rowUsed.Cell(columnas.CompradorLocalidad).GetString() : columnas.CompradorLocalidad;
                factura.CompradorNombreOEmpresa = columnas.CompradorNombreOEmpresa.EsLetraMayuscula() ? rowUsed.Cell(columnas.CompradorNombreOEmpresa).GetString() : columnas.CompradorNombreOEmpresa;
                factura.CompradorNumeroIdentificacionFiscal = columnas.CompradorNumeroIdentificacionFiscal.EsLetraMayuscula() ? rowUsed.Cell(columnas.CompradorNumeroIdentificacionFiscal).GetString() : columnas.CompradorNumeroIdentificacionFiscal;
                factura.CompradorProvincia = columnas.CompradorProvincia.EsLetraMayuscula() ? rowUsed.Cell(columnas.CompradorProvincia).GetString() : columnas.CompradorProvincia;

                factura.PorcentajeIvaPorDefecto = columnas.PorcentajeImpuesto.EsLetraMayuscula() ? Convert.ToInt32(rowUsed.Cell(columnas.PorcentajeImpuesto).GetDouble()) : Convert.ToInt32(columnas.PorcentajeImpuesto);

                factura.Lineas = new List<EditorLineaFactura> {
                             new EditorLineaFactura {
                                     Cantidad = columnas.Cantidad.EsLetraMayuscula() ? Convert.ToInt32(rowUsed.Cell(columnas.Cantidad).GetDouble()) : Convert.ToInt32(columnas.Cantidad),
                                     PorcentajeImpuesto =  columnas.PorcentajeImpuesto.EsLetraMayuscula() ? Convert.ToInt32(rowUsed.Cell(columnas.PorcentajeImpuesto).GetDouble()) : Convert.ToInt32(columnas.PorcentajeImpuesto),
                                     Descripcion = rowUsed.Cell(columnas.Descripcion).GetString(),
                                     PrecioUnitario = Convert.ToDecimal(rowUsed.Cell(columnas.PrecioUnitario).GetDouble())
                             }
                    };

                factura.Comentarios = columnas.Comentarios.EsLetraMayuscula() ? rowUsed.Cell(columnas.Comentarios).GetString() : columnas.Comentarios;
                factura.ComentarioInterno = columnas.ComentarioInterno.EsLetraMayuscula() ? rowUsed.Cell(columnas.ComentarioInterno).GetString() : columnas.ComentarioInterno;
                factura.ComentariosPie = columnas.ComentariosPie.EsLetraMayuscula() ? rowUsed.Cell(columnas.ComentariosPie).GetString() : columnas.ComentariosPie;
                
                facturas.Add(factura);

                rowUsed = rowUsed.RowBelow();
            }

            return facturas.Distinct().ToList();
        }
예제 #5
0
 public async Task<EditorFactura> BuscaEditorFacturaAsync(int? idFactura)
 {
     var factura = await BuscarFacturaAsync(idFactura);
     var editor = new EditorFactura();
     editor.InyectarFactura(factura);
     return editor;
 }
 private void ModificarCabeceraFactura(EditorFactura editor)
 {
     Factura.InjectFrom(editor);
 }
 private void ModificarFactura(EditorFactura editor)
 {
     ModificarCabeceraFactura(editor);
     ModificarLineasFactura(editor.Lineas);
 }