Ejemplo n.º 1
0
        public void Create(CajaDetalle entity)
        {
            try
            {
                SiinErpContext context = new SiinErpContext();
                using (var tran = context.Database.BeginTransaction())
                {
                    TipoDocumento entityTip = context.TiposDocumentos.FirstOrDefault(x => x.TipoDoc.Equals(entity.TipoDoc));
                    entityTip.NumDoc++;
                    context.SaveChanges();

                    entity.TipoDoc       = entityTip.TipoDoc;
                    entity.NumDoc        = entityTip.NumDoc;
                    entity.FechaCreacion = DateTimeOffset.Now;
                    context.CajaDetalle.Add(entity);
                    context.SaveChanges();

                    tran.Commit();
                }
            }
            catch (Exception ex)
            {
                errorBusiness.Create("Create", ex.Message, null);
                throw;
            }
        }
Ejemplo n.º 2
0
 public IActionResult Create([FromBody] CajaDetalle entity)
 {
     try
     {
         cajaDetalleBusiness.Create(entity);
         return(Ok(true));
     }
     catch (Exception)
     {
         throw;
     }
 }
Ejemplo n.º 3
0
        public int UpdateByPuntoDeVenta(JObject data)
        {
            try
            {
                Movimiento entityMov = data["entityMov"].ToObject <Movimiento>();
                List <MovimientoDetalle>   listaDetalleMov = data["listDetalleMov"].ToObject <List <MovimientoDetalle> >();
                List <MovimientoFormaPago> listaDetallePag = data["listDetallePag"].ToObject <List <MovimientoFormaPago> >();

                SiinErpContext context = new SiinErpContext();
                using (var transaccion = context.Database.BeginTransaction())
                {
                    Movimiento entityMovBD = context.Movimientos.Find(entityMov.IdMovimiento);
                    entityMovBD.IdTercero        = entityMov.IdTercero;
                    entityMovBD.IdPlazoPago      = entityMov.IdPlazoPago;
                    entityMovBD.IdListaPrecio    = entityMov.IdListaPrecio;
                    entityMovBD.FechaDoc         = entityMov.FechaDoc;
                    entityMovBD.Periodo          = entityMov.FechaDoc.ToString("yyyyMM");
                    entityMovBD.FechaVencimiento = entityMov.PlazoPago == null ? entityMov.FechaDoc : entityMov.FechaDoc.AddDays(entityMov.PlazoPago.PlazoDias);
                    entityMovBD.ValorBruto       = entityMov.ValorBruto;
                    entityMovBD.ValorDscto       = entityMov.ValorDscto;
                    entityMovBD.ValorIva         = entityMov.ValorIva;
                    entityMovBD.ValorNeto        = entityMov.ValorNeto;
                    entityMovBD.ModificadoPor    = entityMov.ModificadoPor;
                    entityMovBD.FechaModificado  = DateTimeOffset.Now;
                    context.SaveChanges();

                    List <MovimientoDetalle> listaDetalleMovBD = context.MovimientosDetalles.Where(x => x.IdMovimiento == entityMov.IdMovimiento).ToList();
                    foreach (MovimientoDetalle m in listaDetalleMovBD)
                    {
                        MovimientoDetalle entityDetalle = listaDetalleMov.FirstOrDefault(x => x.IdDetalleMovimiento == m.IdDetalleMovimiento);
                        if (entityDetalle == null)
                        {
                            context.MovimientosDetalles.Remove(m);
                            context.SaveChanges();

                            Articulo entityArt = context.Articulos.Find(m.IdArticulo);
                            if (entityArt.AfectaInventario)
                            {
                                ArticuloExistencia entityExist = context.Existencias.FirstOrDefault(x => x.IdArticulo == m.IdArticulo && x.IdDetAlmacen == entityMov.IdDetAlmacen);
                                if (entityExist != null)
                                {
                                    entityExist.Existencia += m.Cantidad;
                                    context.SaveChanges();
                                }
                            }
                        }
                    }

                    listaDetalleMovBD = context.MovimientosDetalles.Where(x => x.IdMovimiento == entityMov.IdMovimiento).ToList();
                    foreach (MovimientoDetalle m in listaDetalleMov)
                    {
                        Articulo          entityArt     = context.Articulos.Find(m.IdArticulo);
                        MovimientoDetalle entityDetalle = listaDetalleMovBD.FirstOrDefault(x => x.IdDetalleMovimiento == m.IdDetalleMovimiento);
                        if (entityDetalle == null)
                        {
                            m.IdMovimiento = entityMov.IdMovimiento;
                            context.MovimientosDetalles.Add(m);
                            context.SaveChanges();

                            if (entityArt.AfectaInventario)
                            {
                                ArticuloExistencia entityExist = context.Existencias.FirstOrDefault(x => x.IdArticulo == m.IdArticulo && x.IdDetAlmacen == entityMov.IdDetAlmacen);
                                if (entityExist == null)
                                {
                                    entityExist              = new ArticuloExistencia();
                                    entityExist.IdEmpresa    = entityMov.IdEmpresa;
                                    entityExist.IdDetAlmacen = entityMov.IdDetAlmacen;
                                    entityExist.IdArticulo   = m.IdArticulo;
                                    entityExist.Existencia   = m.Cantidad * entityMov.Transaccion;
                                    context.Existencias.Add(entityExist);
                                    context.SaveChanges();
                                }
                                else
                                {
                                    entityExist.Existencia += m.Cantidad * entityMov.Transaccion;
                                    context.SaveChanges();
                                }
                            }
                        }
                        else
                        {
                            if (entityArt.AfectaInventario)
                            {
                                ArticuloExistencia entityExist = context.Existencias.FirstOrDefault(x => x.IdArticulo == m.IdArticulo && x.IdDetAlmacen == entityMov.IdDetAlmacen);
                                if (entityExist != null)
                                {
                                    entityExist.Existencia += entityDetalle.Cantidad - m.Cantidad;
                                    context.SaveChanges();
                                }
                            }

                            entityDetalle.Cantidad   = m.Cantidad;
                            entityDetalle.PcDscto    = m.PcDscto;
                            entityDetalle.PcIva      = m.PcIva;
                            entityDetalle.VrUnitario = m.VrUnitario;
                            entityDetalle.VrCosto    = m.VrCosto;
                            entityDetalle.VrBruto    = m.VrBruto;
                            entityDetalle.VrNeto     = m.VrNeto;
                            context.SaveChanges();
                        }
                    }

                    List <MovimientoFormaPago> listaDetallePagDB = context.MovimientosFormasPagos.Where(x => x.IdMovimiento == entityMov.IdMovimiento).ToList();
                    foreach (MovimientoFormaPago m in listaDetallePagDB)
                    {
                        MovimientoFormaPago entityFormaPag = listaDetallePag.FirstOrDefault(x => x.IdMovFormaDePago == m.IdMovFormaDePago && x.Valor > 0);
                        if (entityFormaPag == null)
                        {
                            context.MovimientosFormasPagos.Remove(m);
                            context.SaveChanges();

                            CajaDetalle entityCajaDet = context.CajaDetalle.FirstOrDefault(x => x.IdMovimiento == m.IdMovimiento && x.IdCaja == entityMov.IdCaja && x.IdDetFormaPago == m.IdDetFormaDePago);
                            if (entityCajaDet != null)
                            {
                                context.CajaDetalle.Remove(entityCajaDet);
                                context.SaveChanges();
                            }
                        }
                    }

                    listaDetallePagDB = context.MovimientosFormasPagos.Where(x => x.IdMovimiento == entityMov.IdMovimiento).ToList();
                    foreach (MovimientoFormaPago mfp in listaDetallePag)
                    {
                        MovimientoFormaPago entityFormaPag = listaDetallePagDB.FirstOrDefault(x => x.IdMovFormaDePago == mfp.IdMovFormaDePago);
                        if (entityFormaPag == null)
                        {
                            mfp.IdMovFormaDePago = 0;
                            mfp.IdMovimiento     = entityMov.IdMovimiento;
                            context.MovimientosFormasPagos.Add(mfp);
                            context.SaveChanges();

                            if (entityMov.IdCaja != null)
                            {
                                CajaDetalle entityCajaDet = new CajaDetalle();
                                entityCajaDet.IdCaja         = Convert.ToInt32(entityMov.IdCaja);
                                entityCajaDet.IdMovimiento   = entityMov.IdMovimiento;
                                entityCajaDet.TipoDoc        = entityMov.TipoDoc;
                                entityCajaDet.NumDoc         = entityMov.NumDoc;
                                entityCajaDet.IdDetFormaPago = mfp.IdDetFormaDePago;
                                entityCajaDet.IdDetCuenta    = mfp.IdDetCuenta;
                                entityCajaDet.Efectivo       = mfp.Descripcion.Contains("Efectivo") ? true : false;
                                entityCajaDet.Transaccion    = 1;
                                entityCajaDet.Valor          = mfp.Valor;
                                entityCajaDet.Estado         = Constantes.EstadoActivo;
                                entityCajaDet.FechaCreacion  = DateTimeOffset.Now;
                                entityCajaDet.CreadoPor      = entityMov.ModificadoPor;
                                context.CajaDetalle.Add(entityCajaDet);
                                context.SaveChanges();
                            }
                        }
                        else
                        {
                            entityFormaPag.Valor = mfp.Valor;
                            context.SaveChanges();

                            CajaDetalle entityCajaDet = context.CajaDetalle.FirstOrDefault(x => x.IdMovimiento == entityMov.IdMovimiento && x.IdCaja == entityMov.IdCaja && x.IdDetFormaPago == mfp.IdDetFormaDePago && x.IdDetCuenta == mfp.IdDetCuenta);
                            if (entityCajaDet != null)
                            {
                                entityCajaDet.Valor           = mfp.Valor;
                                entityCajaDet.ModificadoPor   = entityMov.ModificadoPor;
                                entityCajaDet.FechaModificado = DateTimeOffset.Now;
                                context.SaveChanges();
                            }
                        }
                    }

                    if (entityMov.IdTercero != null)
                    {
                        Tercero entityCli = context.Terceros.Find(entityMov.IdTercero);
                        entityCli.NombreTercero = entityMov.NombreTercero;
                        entityCli.Direccion     = entityMov.DireccionTercero;
                        entityCli.Telefono      = entityMov.TelefonoTercero;
                        context.SaveChanges();
                    }

                    transaccion.Commit();

                    return(entityMov.IdMovimiento);
                }
            }
            catch (Exception ex)
            {
                errorBusiness.Create("UpdateMovimientoByPuntoVenta", ex.Message, null);
                throw;
            }
        }
Ejemplo n.º 4
0
        public int CreateByPuntoDeVenta(JObject data)
        {
            try
            {
                Movimiento entityMov = data["entityMov"].ToObject <Movimiento>();
                List <MovimientoDetalle>   listaDetalleMov = data["listDetalleMov"].ToObject <List <MovimientoDetalle> >();
                List <MovimientoFormaPago> listaDetallePag = data["listDetallePag"].ToObject <List <MovimientoFormaPago> >();

                SiinErpContext context = new SiinErpContext();
                using (var transaccion = context.Database.BeginTransaction())
                {
                    TipoDocumento tiposdocmov = context.TiposDocumentos.FirstOrDefault(x => x.TipoDoc.Equals(entityMov.TipoDoc) && x.IdEmpresa == entityMov.IdEmpresa);
                    tiposdocmov.NumDoc++;
                    context.SaveChanges();

                    Resolucion resolucion = context.Resolucion.FirstOrDefault(x => x.IdEmpresa == entityMov.IdEmpresa && x.Estado.Equals(Constantes.EstadoActivo));

                    entityMov.TipoDoc          = tiposdocmov.TipoDoc;
                    entityMov.NumDoc           = tiposdocmov.NumDoc;
                    entityMov.CodModulo        = Constantes.ModuloVentas;
                    entityMov.Transaccion      = tiposdocmov.IdDetTransaccion;
                    entityMov.Periodo          = entityMov.FechaDoc.ToString("yyyyMM");
                    entityMov.IdResolucion     = resolucion.IdResolucion;
                    entityMov.Estado           = Constantes.EstadoActivo;
                    entityMov.FechaVencimiento = entityMov.PlazoPago == null ? entityMov.FechaDoc : entityMov.FechaDoc.AddDays(entityMov.PlazoPago.PlazoDias);
                    entityMov.FechaCreacion    = DateTimeOffset.Now;
                    context.Movimientos.Add(entityMov);
                    context.SaveChanges();

                    decimal vrBruto = 0, vrDscto = 0, vrIva = 0;

                    Movimiento obMov = context.Movimientos.FirstOrDefault(x => x.NumDoc == entityMov.NumDoc && x.TipoDoc.Equals(entityMov.TipoDoc));
                    foreach (MovimientoDetalle m in listaDetalleMov)
                    {
                        m.IdMovimiento = obMov.IdMovimiento;
                        vrBruto       += m.VrUnitario * m.Cantidad;
                        vrDscto       += m.VrUnitario * m.Cantidad * m.PcDscto / 100;
                        vrIva         += m.VrUnitario * m.Cantidad * m.PcIva / 100;

                        Articulo entityArt = context.Articulos.Find(m.IdArticulo);
                        if (entityArt.AfectaInventario)
                        {
                            ArticuloExistencia entityExist = context.Existencias.FirstOrDefault(x => x.IdArticulo == m.IdArticulo && x.IdDetAlmacen == entityMov.IdDetAlmacen);
                            if (entityExist == null)
                            {
                                entityExist              = new ArticuloExistencia();
                                entityExist.IdEmpresa    = entityMov.IdEmpresa;
                                entityExist.IdDetAlmacen = entityMov.IdDetAlmacen;
                                entityExist.IdArticulo   = m.IdArticulo;
                                entityExist.Existencia   = m.Cantidad * -1;
                                context.Existencias.Add(entityExist);
                                context.SaveChanges();
                            }
                            else
                            {
                                entityExist.Existencia += m.Cantidad * -1;
                                context.SaveChanges();
                            }
                        }
                    }

                    List <CajaDetalle> ListaCajaDetalle = new List <CajaDetalle>();

                    foreach (MovimientoFormaPago mfp in listaDetallePag)
                    {
                        mfp.IdMovimiento = obMov.IdMovimiento;


                        CajaDetalle entityCajaDet = new CajaDetalle();
                        entityCajaDet.IdCaja         = Convert.ToInt32(entityMov.IdCaja);
                        entityCajaDet.IdMovimiento   = obMov.IdMovimiento;
                        entityCajaDet.TipoDoc        = obMov.TipoDoc;
                        entityCajaDet.NumDoc         = obMov.NumDoc;
                        entityCajaDet.IdDetFormaPago = mfp.IdDetFormaDePago;
                        entityCajaDet.IdDetCuenta    = mfp.IdDetCuenta;
                        entityCajaDet.Efectivo       = mfp.Descripcion.Contains("Efectivo") ? true : false;
                        entityCajaDet.Transaccion    = 1;
                        entityCajaDet.Valor          = mfp.Valor;
                        entityCajaDet.Estado         = Constantes.EstadoActivo;
                        entityCajaDet.FechaCreacion  = DateTimeOffset.Now;
                        entityCajaDet.CreadoPor      = entityMov.CreadoPor;
                        ListaCajaDetalle.Add(entityCajaDet);
                    }
                    context.MovimientosFormasPagos.AddRange(listaDetallePag);
                    context.SaveChanges();

                    context.MovimientosDetalles.AddRange(listaDetalleMov);
                    context.SaveChanges();

                    context.CajaDetalle.AddRange(ListaCajaDetalle);
                    context.SaveChanges();

                    if (entityMov.IdTercero != null)
                    {
                        Tercero entityCli = context.Terceros.Find(entityMov.IdTercero);
                        entityCli.Direccion = entityMov.DireccionTercero;
                        entityCli.Telefono  = entityMov.TelefonoTercero;
                        context.SaveChanges();
                    }

                    transaccion.Commit();

                    return(obMov.IdMovimiento);
                }
            }
            catch (Exception ex)
            {
                errorBusiness.Create("CreateMovimientoByPuntoVenta", ex.Message, null);
                throw;
            }
        }