示例#1
0
        public void AnularComprobante(dto.ComprobanteAnulacionElectronicaRequest request, byte estado)
        {
            var comprobante = new dom.Comprobante().BuscarPorId(request.IdComprobante);

            comprobante.Estado        = estado;
            comprobante.MotiAnulacion = request.MotivoAnulacion;
            new dom.Comprobante().Modificar(comprobante);
            byte tipodete = 1;

            if (comprobante.ComprobanteTipoId == 7)
            {
                tipodete = 2;
            }
            var detalle = new dom.ComprobanteDetalles().Buscar(c => c.ComprobanteId == comprobante.Id).ToList();

            dato.Almacen objAlmacen;
            foreach (var item in detalle)
            {
                var producto = new dom.Producto().BuscarPorId(item.ProductoId);
                if (item.Tipo == 1)
                {
                    if (tipodete == 2)
                    {
                        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);
                    objAlmacen                = new dato.Almacen();
                    objAlmacen.Tipo           = tipodete;
                    objAlmacen.UsuarioId      = request.UsuarioId;
                    objAlmacen.ProductoId     = item.ProductoId;
                    objAlmacen.ProductoNombre = item.ProductoNombre;
                    objAlmacen.UnidadMedidaId = item.UnidadMedidaId;
                    objAlmacen.Cantidad       = (decimal)item.Cantidad;
                    objAlmacen.Fecha          = DateTime.Now;
                    objAlmacen.EmpresaId      = comprobante.EmpresaId;
                    objAlmacen.ComprobanteId  = comprobante.Id;
                    objAlmacen.Precio         = item.PrecioTotal;
                    new dom.Almacen().Adicionar(objAlmacen);
                }
            }
        }
示例#2
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);
        }
示例#3
0
 public void Modificar(ent.Almacen entidad)
 {
     _repositorio.Modificar(entidad);
     _repositorio.Grabar();
 }
示例#4
0
 public void Eliminar(ent.Almacen entidad)
 {
     _repositorio.Eliminar(entidad);
     _repositorio.Grabar();
 }
示例#5
0
 public void Adicionar(ent.Almacen entidad)
 {
     _repositorio.Adicionar(entidad);
     _repositorio.Grabar();
 }