Ejemplo n.º 1
0
        // POST: api/Movimiento
        public void Post([FromBody] tbl_movimientos_model model)
        {
            try
            {
                using (Entities_general db = new Entities_general())
                {
                    db.Database.CommandTimeout = 3000;

                    #region Valido turno de sincronizacion
                    if (db.tbl_sincronizacion_turno.Count() > 0)
                    {
                        return;
                    }
                    else
                    {
                        tbl_sincronizacion_turno Entity_turno = new tbl_sincronizacion_turno
                        {
                            EnUso       = true,
                            FechaInicio = DateTime.Now
                        };
                        db.tbl_sincronizacion_turno.Add(Entity_turno);
                        db.SaveChanges();
                    }
                    #endregion

                    #region Guardo cabecera
                    tbl_movimientos Entity = new tbl_movimientos
                    {
                        IdFecha          = model.IdFecha,
                        Fecha            = model.Fecha,
                        IdUsuarioSCI     = model.IdUsuarioSCI,
                        IdSincronizacion = db.tbl_movimientos.Count() == 0 ? 1 : (db.tbl_movimientos.Max(q => q.IdSincronizacion) + 1)
                    };
                    db.tbl_movimientos.Add(Entity);
                    db.SaveChanges();
                    #endregion

                    #region Guardo detalle
                    int secuencia = 1;
                    foreach (var item in model.lst_det)
                    {
                        tbl_movimientos_det Entity_det = new tbl_movimientos_det
                        {
                            IdSincronizacion = Entity.IdSincronizacion,
                            IdSecuencia      = secuencia++,
                            IdEmpresa        = item.IdEmpresa,
                            IdSucursal       = item.IdSucursal,
                            IdBodega         = item.IdBodega,
                            IdProducto       = item.IdProducto,
                            IdUnidadMedida   = item.IdUnidadMedida,
                            IdCentroCosto    = item.IdCentroCosto,
                            IdCentroCosto_sub_centro_costo = item.IdCentroCosto_sub_centro_costo,
                            Fecha         = item.Fecha,
                            cantidad      = item.cantidad,
                            IdEmpresa_oc  = item.IdEmpresa_oc,
                            IdSucursal_oc = item.IdSucursal_oc,
                            IdOrdenCompra = item.IdOrdenCompra,
                            secuencia_oc  = item.secuencia_oc,
                            Aprobado      = false,
                            Estado        = "A",
                            Peso          = item.Peso,
                            Observacion   = item.Observacion
                        };
                        db.tbl_movimientos_det.Add(Entity_det);
                    }
                    db.SaveChanges();
                    #endregion

                    #region Actualizo estado de ingresos
                    db.sp_revisar_estados_oc();
                    #endregion

                    #region Limpio tabla de turnos
                    db.Database.ExecuteSqlCommand("DELETE mobileSCI.tbl_sincronizacion_turno");
                    #endregion
                }
            }
            catch (Exception)
            {
                #region Limpio tabla de turnos
                using (Entities_general db = new Entities_general())
                {
                    db.Database.ExecuteSqlCommand("DELETE mobileSCI.tbl_sincronizacion_turno");
                }
                #endregion
            }
        }