예제 #1
0
        public IEnumerable <ent.Serie> ObtenerSerieByTipoComprobante(dto.SerieRequest r)
        {
            var query     = new dom.Serie().Buscar(c => c.EmpresaId == r.EmpresaId && c.ComprobanteTipoId == r.ComprobanteTipoId && c.Proforma == r.Proforma);
            var Resultado = Mapper.Map <IEnumerable <dato.Serie>, IEnumerable <ent.Serie> >(query);

            return(Resultado);
        }
예제 #2
0
        public ent.Serie ObtenerSerie(dto.SerieRequest r)
        {
            var query     = new dom.Serie().Buscar(c => c.EmpresaId == r.EmpresaId && c.Serie1 == r.Serie && c.ComprobanteTipoId == r.ComprobanteTipoId && c.Proforma == r.Proforma).FirstOrDefault();
            var Resultado = Mapper.Map <dato.Serie, ent.Serie>(query);

            return(Resultado);
        }
예제 #3
0
        public dto.ComprobanteGuardarResponse GuardarComprobante(dto.ComprobanteGuardarRequest r)
        {
            dto.ComprobanteGuardarResponse response = new dto.ComprobanteGuardarResponse();
            try
            {
                byte tipodete = 2;
                var  cabecera = Mapper.Map <ent.Comprobante, dato.Comprobante>(r.ComprobanteCabecera);
                var  detalle  = Mapper.Map <IEnumerable <ent.Comprobantedetalle>, IEnumerable <dato.Comprobantedetalle> >(r.ComprobanteDetalle);
                if (cabecera.ComprobanteTipoId == 7)
                {
                    tipodete = 1;
                }
                if (cabecera.Id == 0)
                {
                    var serieServ = new dom.Serie().Buscar(c => c.EmpresaId == r.ComprobanteCabecera.EmpresaId && c.Serie1 == r.ComprobanteCabecera.Serie && c.ComprobanteTipoId == r.ComprobanteCabecera.ComprobanteTipoId && c.Proforma == false).FirstOrDefault();
                    cabecera.Correlativo = (serieServ.Correlativo + 1).ToString();
                    new dom.Comprobante().Adicionar(cabecera);
                    foreach (var item in detalle)
                    {
                        item.ComprobanteId = cabecera.Id;
                        new dom.ComprobanteDetalles().Adicionar(item);
                        var producto = new dom.Producto().BuscarPorId(item.ProductoId);
                        if (item.Tipo == 1)
                        {
                            if (cabecera.ComprobanteTipoId == 1 || cabecera.ComprobanteTipoId == 3 || cabecera.ComprobanteTipoId == 8)
                            {
                                if (producto.Stock - item.Cantidad > 0)
                                {
                                    producto.Stock = producto.Stock - item.Cantidad;
                                }
                                else
                                {
                                    producto.Stock = 0;
                                }
                            }
                            else
                            {
                                producto.Stock = producto.Stock + item.Cantidad;
                            }
                            new dom.Producto().Modificar(producto);
                            dato.Almacen objAlmacen = new dato.Almacen();
                            objAlmacen.Tipo           = tipodete;
                            objAlmacen.UsuarioId      = cabecera.UsuarioId;
                            objAlmacen.ProductoId     = item.ProductoId;
                            objAlmacen.ProductoNombre = item.ProductoNombre;
                            objAlmacen.UnidadMedidaId = item.UnidadMedidaId;
                            objAlmacen.Cantidad       = (decimal)item.Cantidad;
                            objAlmacen.Fecha          = DateTime.Now;
                            objAlmacen.EmpresaId      = cabecera.EmpresaId;
                            objAlmacen.ComprobanteId  = cabecera.Id;
                            objAlmacen.Precio         = item.PrecioTotal;
                            new dom.Almacen().Adicionar(objAlmacen);
                        }
                    }

                    var serie = new dom.Serie().BuscarPrimero(c => c.EmpresaId == cabecera.EmpresaId && c.Serie1 == cabecera.Serie && c.ComprobanteTipoId == cabecera.ComprobanteTipoId);
                    serie.Correlativo = Convert.ToInt64(cabecera.Correlativo);
                    new dom.Serie().Modificar(serie);


                    response.IdComprobante = cabecera.Id;
                }
                else
                {
                    new dom.Comprobante().Modificar(cabecera);
                    var comprobanteDetalles = new dom.ComprobanteDetalles();
                    var detalleEdicion      = comprobanteDetalles.Buscar(c => c.ComprobanteId == cabecera.Id).ToList();
                    foreach (var item in detalleEdicion)
                    {
                        var productoEdicion = new dom.Producto().BuscarPorId(item.ProductoId);
                        if (item.Tipo == 1)
                        {
                            if (cabecera.ComprobanteTipoId == 1 || cabecera.ComprobanteTipoId == 3 || cabecera.ComprobanteTipoId == 8)
                            {
                                //devolucion
                                productoEdicion.Stock = productoEdicion.Stock + item.Cantidad;
                            }
                            else
                            {
                                productoEdicion.Stock = productoEdicion.Stock - item.Cantidad;
                            }
                            new dom.Producto().Modificar(productoEdicion);

                            dato.Almacen objAlmacen = new dato.Almacen();
                            objAlmacen.Tipo           = 3;
                            objAlmacen.UsuarioId      = cabecera.UsuarioId;
                            objAlmacen.ProductoId     = item.ProductoId;
                            objAlmacen.ProductoNombre = item.ProductoNombre;
                            objAlmacen.UnidadMedidaId = item.UnidadMedidaId;
                            objAlmacen.Cantidad       = (decimal)item.Cantidad;
                            objAlmacen.Fecha          = DateTime.Now;
                            objAlmacen.EmpresaId      = cabecera.EmpresaId;
                            objAlmacen.ComprobanteId  = cabecera.Id;
                            objAlmacen.Precio         = item.PrecioTotal;
                            new dom.Almacen().Adicionar(objAlmacen);
                        }
                        comprobanteDetalles.Eliminar(item);
                    }

                    foreach (var item in detalle)
                    {
                        item.ComprobanteId = cabecera.Id;
                        new dom.ComprobanteDetalles().Adicionar(item);
                        var producto = new dom.Producto().BuscarPorId(item.ProductoId);
                        if (item.Tipo == 1)
                        {
                            if (cabecera.ComprobanteTipoId == 1 || cabecera.ComprobanteTipoId == 3 || cabecera.ComprobanteTipoId == 8)
                            {
                                if (producto.Stock - item.Cantidad > 0)
                                {
                                    producto.Stock = producto.Stock - item.Cantidad;
                                }
                                else
                                {
                                    producto.Stock = 0;
                                }
                            }
                            else
                            {
                                producto.Stock = producto.Stock + item.Cantidad;
                            }
                            new dom.Producto().Modificar(producto);

                            dato.Almacen objAlmacen = new dato.Almacen();
                            objAlmacen.Tipo           = tipodete;
                            objAlmacen.UsuarioId      = cabecera.UsuarioId;
                            objAlmacen.ProductoId     = item.ProductoId;
                            objAlmacen.ProductoNombre = item.ProductoNombre;
                            objAlmacen.UnidadMedidaId = item.UnidadMedidaId;
                            objAlmacen.Cantidad       = (decimal)item.Cantidad;
                            objAlmacen.Fecha          = DateTime.Now;
                            objAlmacen.EmpresaId      = cabecera.EmpresaId;
                            objAlmacen.ComprobanteId  = cabecera.Id;
                            objAlmacen.Precio         = item.PrecioTotal;
                            new dom.Almacen().Adicionar(objAlmacen);
                        }
                    }
                    response.IdComprobante = cabecera.Id;
                }
            }
            catch (Exception Ex)
            {
                response.IdComprobante = 0;
            }
            return(response);
        }