コード例 #1
0
 public int SaveGuiaremisiondet(Guiaremisiondet entity)
 {
     return(GuiaremisiondetDao.Save(entity));
 }
コード例 #2
0
 public void UpdateGuiaremisiondet(Guiaremisiondet entity)
 {
     GuiaremisiondetDao.Update(entity);
 }
コード例 #3
0
        public bool GuardarGuiaremision(TipoMantenimiento tipoMantenimiento, Guiaremision entidadCab, List <VwGuiaremisiondet> entidadDetList)
        {
            using (var db = OrmLiteHelper.DbFactory.Open())
            {
                using (IDbTransaction trans = db.OpenTransaction(IsolationLevel.ReadCommitted))
                {
                    switch (tipoMantenimiento)
                    {
                    case TipoMantenimiento.Nuevo:
                        db.Save(entidadCab);
                        if (entidadCab.Idguiaremision > 0)
                        {
                            var tipocp = db.SingleById <Tipocp>(entidadCab.Idtipocp);
                            if (tipocp.Numeracionauto)
                            {
                                db.Update <Tipocp>(new { Numerocorrelativocp = Convert.ToInt32(entidadCab.Numeroguiaremision) + 1 }, p => p.Idtipocp == tipocp.Idtipocp);
                            }
                        }
                        break;

                    case TipoMantenimiento.Modificar:
                        db.Update(entidadCab);
                        break;
                    }

                    if (entidadCab.Idguiaremision > 0)
                    {
                        foreach (var item in entidadDetList)
                        {
                            Guiaremisiondet guiaremisiondet = new Guiaremisiondet();

                            guiaremisiondet.Idguiaremisiondet    = item.Idguiaremisiondet;
                            guiaremisiondet.Idguiaremision       = entidadCab.Idguiaremision;
                            guiaremisiondet.Idarticulo           = item.Idarticulo;
                            guiaremisiondet.Articulomoficado     = item.Articulomoficado;
                            guiaremisiondet.Nombrearticulo       = item.Nombrearticulo;
                            guiaremisiondet.Idunidadmedida       = item.Idunidadmedida;
                            guiaremisiondet.Idimpuesto           = item.Idimpuesto;
                            guiaremisiondet.Numeroitem           = item.Numeroitem;
                            guiaremisiondet.Cantidad             = item.Cantidad;
                            guiaremisiondet.Pesounitario         = item.Pesounitario;
                            guiaremisiondet.Pesototal            = item.Pesototal;
                            guiaremisiondet.Preciounitario       = item.Preciounitario;
                            guiaremisiondet.Importetotal         = item.Importetotal;
                            guiaremisiondet.Especificacion       = item.Especificacion;
                            guiaremisiondet.Idordendeventadet    = item.Idordendeventadet;
                            guiaremisiondet.Idtipoafectacionigv  = item.Idtipoafectacionigv;
                            guiaremisiondet.Porcentajepercepcion = item.Porcentajepercepcion;
                            guiaremisiondet.Idproyecto           = item.Idproyecto;
                            guiaremisiondet.Idarea              = item.Idarea;
                            guiaremisiondet.Idcentrodecosto     = item.Idcentrodecosto;
                            guiaremisiondet.Idrequerimientodet  = item.Idrequerimientodet;
                            guiaremisiondet.Calcularitem        = item.Calcularitem;
                            guiaremisiondet.Idcpcompradet       = item.Idcpcompradet;
                            guiaremisiondet.Identradaalmacendet = item.Identradaalmacendet;

                            //Nuevo
                            if (item.Idguiaremisiondet == 0 && item.DataEntityState != DataEntityState.Deleted)
                            {
                                db.Save(guiaremisiondet);
                                item.Idguiaremisiondet = guiaremisiondet.Idguiaremisiondet;
                            }

                            //Modificar
                            if (item.Idguiaremisiondet > 0 && item.DataEntityState == DataEntityState.Modified)
                            {
                                db.Update(guiaremisiondet);
                            }

                            //Eliminar
                            if (item.Idguiaremisiondet > 0 && item.DataEntityState == DataEntityState.Deleted)
                            {
                                db.DeleteById <Guiaremisiondet>(item.Idguiaremisiondet);
                            }
                        }
                    }

                    //Anular detalle de orden de compra
                    if (entidadCab.Anulado)
                    {
                        //Anular referencias
                        db.UpdateOnly(new Guiaremisiondet
                        {
                            Idordendeventadet   = null,
                            Idrequerimientodet  = null,
                            Idcpcompradet       = null,
                            Identradaalmacendet = null
                        },
                                      f => new
                        {
                            f.Idordendeventadet,
                            f.Idrequerimientodet,
                            f.Idcpcompradet,
                            f.Identradaalmacendet
                        }, w => w.Idguiaremision == entidadCab.Idguiaremision);
                    }

                    //Verificar si hubo cambios en el orden de items
                    int cntNoOrden   = 0;
                    int nItemInicial = 0;
                    foreach (var item in entidadDetList.Where(x => x.DataEntityState != DataEntityState.Deleted))
                    {
                        if (nItemInicial + 1 != item.Numeroitem)
                        {
                            cntNoOrden++;
                        }
                        nItemInicial = item.Numeroitem;
                    }

                    if (cntNoOrden > 0)
                    {
                        int numeroItem = 1;
                        //Reenumerar y actualizar solo el nro de item
                        foreach (var item in entidadDetList.Where(x => x.DataEntityState != DataEntityState.Deleted))
                        {
                            item.Numeroitem = numeroItem;
                            Guiaremisiondet guiaremisiondet = new Guiaremisiondet
                            {
                                Numeroitem        = item.Numeroitem,
                                Idguiaremisiondet = item.Idguiaremisiondet
                            };
                            db.Update <Guiaremisiondet>(new { guiaremisiondet.Numeroitem },
                                                        p => p.Idguiaremisiondet == guiaremisiondet.Idguiaremisiondet);
                            numeroItem++;
                        }
                    }

                    trans.Commit();
                    return(true);
                }
            }
        }