private bool Delete(ref PreDetDocsVta item)
        {
            try
            {
                if (item.Instance == Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted)
                {
                    DataAccessEnterpriseSQL.DAAsignarProcedure("VEN_PDDOSD_UnReg");
                    DataAccessEnterpriseSQL.DAAgregarParametro("@psinPDDO_Item", item.PDDO_Item, SqlDbType.SmallInt, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pintDOCV_Codigo", item.DOCV_Codigo, SqlDbType.Int, 4, ParameterDirection.Input);

                    if (DataAccessEnterpriseSQL.DAExecuteNonQuery() > 0)
                    {
                        return(true);
                    }
                    else
                    {
                        return(true);
                    }
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            { throw ex; }
        }
 private PreDetDocsVta SelectOne(Int16 PDDO_Item, Int32 DOCV_Codigo)
 {
     try
     {
         PreDetDocsVta item = new PreDetDocsVta();
         DataAccessEnterpriseSQL.DAAsignarProcedure("VEN_PDDOSS_UnReg");
         DataAccessEnterpriseSQL.DAAgregarParametro("@psinPDDO_Item", PDDO_Item, SqlDbType.SmallInt, 2, ParameterDirection.Input);
         DataAccessEnterpriseSQL.DAAgregarParametro("@pintDOCV_Codigo", DOCV_Codigo, SqlDbType.Int, 4, ParameterDirection.Input);
         using (IDataReader reader = DataAccessEnterpriseSQL.DAExecuteReader())
         {
             if (reader.Read())
             {
                 Loader.LoadEntity(reader, item);
                 item.Instance = InstanceEntity.Unchanged;
             }
             else
             {
                 throw new Exception("No se encontro el registro.");
             }
         }
         return(item);
     }
     catch (Exception ex)
     { throw ex; }
 }
        public BLPreDetDocsVta(IUnityContainer container)
        {
            this.ContainerService = container;
            Loader = new BusinessEntityLoader <PreDetDocsVta>();
            PreDetDocsVta item = new PreDetDocsVta();

            Loader.EntityType = item.GetType();
        }
        private bool Insert(ref PreDetDocsVta item)
        {
            try
            {
                if (item.Instance == Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added)
                {
                    DataAccessEnterpriseSQL.DAAsignarProcedure("VEN_PDDOSI_UnReg");
                    DataAccessEnterpriseSQL.DAAgregarParametro("@psinPDDO_Item", item.PDDO_Item, SqlDbType.SmallInt, 2, ParameterDirection.InputOutput);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pintDOCV_Codigo", item.DOCV_Codigo, SqlDbType.Int, 4, ParameterDirection.InputOutput);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Cantidad", item.DDOV_Cantidad, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_PrecioUnitario", item.DDOV_PrecioUnitario, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_PrecioUnitarioD", item.DDOV_PrecioUnitarioD, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorVenta", item.DDOV_ValorVenta, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorVentaD", item.DDOV_ValorVentaD, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto1", item.DDOV_Impuesto1, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto1D", item.DDOV_Impuesto1D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto2", item.DDOV_Impuesto2, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto2D", item.DDOV_Impuesto2D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto3", item.DDOV_Impuesto3, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto3D", item.DDOV_Impuesto3D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto4", item.DDOV_Impuesto4, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto4D", item.DDOV_Impuesto4D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pvchDDOV_Notas", item.DDOV_Notas, SqlDbType.VarChar, 1000, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pintSERV_Codigo", item.SERV_Codigo, SqlDbType.Int, 4, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pvchDDOV_Descripcion", item.DDOV_Descripcion, SqlDbType.VarChar, 100, ParameterDirection.Input);

                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorTotal", item.DDOV_ValorTotal, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorTotalD", item.DDOV_ValorTotalD, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);

                    DataAccessEnterpriseSQL.DAAgregarParametro("@pvchAUDI_UsrCrea", item.AUDI_UsrCrea, SqlDbType.VarChar, 20, ParameterDirection.Input);

                    if (DataAccessEnterpriseSQL.DAExecuteNonQuery() > 0)
                    {
                        Int16 _PDDO_Item;
                        if (Int16.TryParse(DataAccessEnterpriseSQL.DASqlCommand.Parameters["@psinPDDO_Item"].Value.ToString(), out _PDDO_Item))
                        {
                            item.PDDO_Item = _PDDO_Item;
                        }
                        Int32 _DOCV_Codigo;
                        if (Int32.TryParse(DataAccessEnterpriseSQL.DASqlCommand.Parameters["@pintDOCV_Codigo"].Value.ToString(), out _DOCV_Codigo))
                        {
                            item.DOCV_Codigo = _DOCV_Codigo;
                        }
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            { throw ex; }
        }
Exemple #5
0
 public Boolean SavePreDetDocsVta(ref PreDetDocsVta Item)
 {
     try
     {
         if (Item.Instance != Infrastructure.Aspect.BusinessEntity.InstanceEntity.Unchanged)
         {
             return(BL_PreDetDocsVta.Save(ref Item));
         }
         return(true);
     }
     catch (Exception)
     { throw; }
 }
        private bool Update(ref PreDetDocsVta item)
        {
            try
            {
                if (item.Instance == Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified)
                {
                    DataAccessEnterpriseSQL.DAAsignarProcedure("VEN_PDDOSU_UnReg");
                    DataAccessEnterpriseSQL.DAAgregarParametro("@psinPDDO_Item", item.PDDO_Item, SqlDbType.SmallInt, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pintDOCV_Codigo", item.DOCV_Codigo, SqlDbType.Int, 4, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Cantidad", item.DDOV_Cantidad, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_PrecioUnitario", item.DDOV_PrecioUnitario, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_PrecioUnitarioD", item.DDOV_PrecioUnitarioD, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorVenta", item.DDOV_ValorVenta, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorVentaD", item.DDOV_ValorVentaD, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto1", item.DDOV_Impuesto1, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto1D", item.DDOV_Impuesto1D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto2", item.DDOV_Impuesto2, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto2D", item.DDOV_Impuesto2D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto3", item.DDOV_Impuesto3, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto3D", item.DDOV_Impuesto3D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto4", item.DDOV_Impuesto4, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_Impuesto4D", item.DDOV_Impuesto4D, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pvchDDOV_Notas", item.DDOV_Notas, SqlDbType.VarChar, 1000, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pintSERV_Codigo", item.SERV_Codigo, SqlDbType.Int, 4, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pvchDDOV_Descripcion", item.DDOV_Descripcion, SqlDbType.VarChar, 100, ParameterDirection.Input);

                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorTotal", item.DDOV_ValorTotal, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);
                    DataAccessEnterpriseSQL.DAAgregarParametro("@pdecDDOV_ValorTotalD", item.DDOV_ValorTotalD, SqlDbType.Decimal, 15, 2, ParameterDirection.Input);

                    DataAccessEnterpriseSQL.DAAgregarParametro("@pvchAUDI_UsrMod", item.AUDI_UsrMod, SqlDbType.VarChar, 20, ParameterDirection.Input);

                    if (DataAccessEnterpriseSQL.DAExecuteNonQuery() > 0)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            { throw ex; }
        }
        public Boolean Save(ref PreDetDocsVta Item)
        {
            try
            {
                Boolean m_isCorrect = true;
                if (Item.Trasanct)
                {
                    Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DABeginTransaction();
                    switch (Item.Instance)
                    {
                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                        m_isCorrect = Insert(ref Item); break;

                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                        m_isCorrect = Update(ref Item); break;

                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted:
                        m_isCorrect = Delete(ref Item); break;
                    }
                    if (m_isCorrect)
                    {
                        Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DACommitTransaction();
                    }
                    else
                    {
                        Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DARollbackTransaction();
                    }
                }
                else
                {
                    switch (Item.Instance)
                    {
                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                        m_isCorrect = Insert(ref Item); break;

                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                        m_isCorrect = Update(ref Item); break;

                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted:
                        m_isCorrect = Delete(ref Item); break;
                    }
                    return(m_isCorrect);
                }
                return(m_isCorrect);
            }
            catch (Exception)
            { Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DARollbackTransaction(); throw; }
        }
 private ObservableCollection <PreDetDocsVta> SelectAllPorDOCV_Codigo(Int32 x_DOCV_Codigo)
 {
     try
     {
         ObservableCollection <PreDetDocsVta> items = new ObservableCollection <PreDetDocsVta>();
         PreDetDocsVta item = new PreDetDocsVta();
         DataAccessEnterpriseSQL.DAAsignarProcedure("VEN_PDDOSS_TodosPorDOCV_Codigo");
         DataAccessEnterpriseSQL.DAAgregarParametro("@pintDOCV_Codigo", x_DOCV_Codigo, SqlDbType.Int, 4, ParameterDirection.Input);
         using (IDataReader reader = DataAccessEnterpriseSQL.DAExecuteReader())
         {
             while (reader.Read())
             {
                 item = new PreDetDocsVta();
                 Loader.LoadEntity(reader, item);
                 item.Instance = InstanceEntity.Unchanged;
                 items.Add(item);
             }
         }
         return(items);
     }
     catch (Exception ex)
     { throw ex; }
 }
Exemple #9
0
        public Boolean Save(ref PreDocsVta Item)
        {
            try
            {
                Boolean m_isCorrect = true;
                DataAccessEnterpriseSQL.DABeginTransaction();
                switch (Item.Instance)
                {
                case InstanceEntity.Added:
                    m_isCorrect = Insert(ref Item);
                    if (m_isCorrect)
                    {
                        /* Items Detalle Documentos de Venta */
                        if (Item.ItemsPreDetDocsVta != null && Item.ItemsPreDetDocsVta.Count > 0)
                        {
                            foreach (var item in Item.ItemsPreDetDocsVta)
                            {
                                PreDetDocsVta itemPreDetDocsVta = item;
                                itemPreDetDocsVta.DOCV_Codigo = Item.PDOC_Codigo;
                                itemPreDetDocsVta.Trasanct    = false;
                                m_isCorrect = BLPreDetDocsVta.Save(ref itemPreDetDocsVta);
                                if (m_isCorrect)
                                {
                                    /* Items ItemsPreDetDocsVta_Det_Operacion */
                                    if (Item.ItemsPreDetDocsVta_Det_Operacion != null && Item.ItemsPreDetDocsVta_Det_Operacion.Count > 0)
                                    {
                                        if (!itemPreDetDocsVta.Tarjas)                              // Si es Operación
                                        {
                                            if (!String.IsNullOrEmpty(itemPreDetDocsVta.CTAR_Tipo)) // Servcios Logistico, aduanero y transporte)
                                            {
                                                foreach (var preDetDocsVtaDetOperacion in Item.ItemsPreDetDocsVta_Det_Operacion.Where(data => data.CTAR_Tipo == itemPreDetDocsVta.CTAR_Tipo && data.Agregar).ToObservableCollection())
                                                {
                                                    PreDetDocsVta_Det_Operacion itemPreDetDocsVtaDetOperacion = preDetDocsVtaDetOperacion;
                                                    itemPreDetDocsVtaDetOperacion.PDVO_Codigo = Item.PDOC_Codigo;
                                                    if (!String.IsNullOrEmpty(itemPreDetDocsVtaDetOperacion.CTAR_Tipo))
                                                    {
                                                        // Servicios Log,Adu,Trans
                                                        m_isCorrect = BLDet_Operacion.UpdateDetOperacionPreFactura(
                                                            itemPreDetDocsVtaDetOperacion.COPE_Codigo,
                                                            itemPreDetDocsVtaDetOperacion.DOPE_Item,
                                                            itemPreDetDocsVta.PDDO_Item,
                                                            itemPreDetDocsVta.DOCV_Codigo, "003"); // 003 => PreFacturada
                                                    }
                                                    if (!m_isCorrect)
                                                    {
                                                        break;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                // Servicios Adicionales
                                                var preDetDocsVtaDetOperacion = Item.ItemsPreDetDocsVta_Det_Operacion.FirstOrDefault(data => data.SOPE_Item == itemPreDetDocsVta.SOPE_Item);
                                                if (preDetDocsVtaDetOperacion != null)
                                                {
                                                    m_isCorrect = BLDet_Operacion_Servicio.UpdateDetServicioOperacionPreFactura(
                                                        preDetDocsVtaDetOperacion.COPE_Codigo,
                                                        preDetDocsVtaDetOperacion.SOPE_Item,
                                                        itemPreDetDocsVta.PDDO_Item,
                                                        itemPreDetDocsVta.DOCV_Codigo, "003"); // 003 => PreFacturada
                                                }
                                                if (!m_isCorrect)
                                                {
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            // Es Tarjas
                                            foreach (var preDetDoc in Item.ItemsPreDetDocsVta_Det_Operacion.Where(data => data.Agregar).ToObservableCollection())
                                            {
                                                PreDetDocsVta_Det_Operacion itemPreDetDocsVtaDetOperacion = preDetDoc;
                                                itemPreDetDocsVtaDetOperacion.PDVO_Codigo = Item.PDOC_Codigo;
                                                m_isCorrect = BLDet_Tarjas.UpdateDetTarjasPreFacturacion(
                                                    itemPreDetDocsVtaDetOperacion.TARJ_Codigo,
                                                    itemPreDetDocsVtaDetOperacion.DTAJ_Item,
                                                    itemPreDetDocsVta.PDDO_Item,
                                                    itemPreDetDocsVta.DOCV_Codigo, "004"); // 004 => Facturada
                                                if (!m_isCorrect)
                                                {
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                                if (!m_isCorrect)
                                {
                                    break;
                                }
                            }
                        }
                    }
                    break;

                case InstanceEntity.Modified:
                    m_isCorrect = Update(ref Item);
                    if (m_isCorrect)
                    {
                        /* Items Detalle Documentos de Venta */
                        if (Item.ItemsPreDetDocsVta != null && Item.ItemsPreDetDocsVta.Count > 0)
                        {
                            /* Liberar todos Items Det_Operacion */
                            foreach (var item in Item.ItemsPreDetDocsVta)
                            {
                                PreDetDocsVta itemPreDetDocsVta = item;
                                //itemPreDetDocsVta.DOCV_Codigo = Item.PDOC_Codigo;
                                itemPreDetDocsVta.Trasanct = false;

                                /* Items ItemsPreDetDocsVta_Det_Operacion */
                                if (Item.ItemsPreDetDocsVta_Det_Operacion != null && Item.ItemsPreDetDocsVta_Det_Operacion.Count > 0)
                                {
                                    if (!itemPreDetDocsVta.Tarjas)                              // Si es Operación
                                    {
                                        if (!String.IsNullOrEmpty(itemPreDetDocsVta.CTAR_Tipo)) // Servcios Logistico, aduanero y transporte
                                        {
                                            /* Liberar Items Det_Operacion */
                                            foreach (var xitem in Item.ItemsPreDetDocsVta_Det_Operacion.Where(data => data.CTAR_Tipo == itemPreDetDocsVta.CTAR_Tipo).ToObservableCollection())
                                            {
                                                PreDetDocsVta_Det_Operacion itemPreDetDocsVtaDetOperacion = xitem;
                                                itemPreDetDocsVtaDetOperacion.PDVO_Codigo = Item.PDOC_Codigo;
                                                if (!String.IsNullOrEmpty(itemPreDetDocsVtaDetOperacion.CTAR_Tipo))
                                                {
                                                    BLDet_Operacion.UpdateDetOperacionPreFactura(
                                                        itemPreDetDocsVtaDetOperacion.COPE_Codigo,
                                                        itemPreDetDocsVtaDetOperacion.DOPE_Item,
                                                        0,
                                                        0, "002"); // 002 => Terminada
                                                }
                                            }
                                        }
                                        else
                                        {
                                            /* Liberar Item Det_OperacionServico  Servicio Adicional */
                                            var preDetDocsVtaDetOperacion = Item.ItemsPreDetDocsVta_Det_Operacion.FirstOrDefault(data => data.SOPE_Item == itemPreDetDocsVta.SOPE_Item);
                                            if (preDetDocsVtaDetOperacion != null)
                                            {
                                                BLDet_Operacion_Servicio.UpdateDetServicioOperacionPreFactura(
                                                    preDetDocsVtaDetOperacion.COPE_Codigo,
                                                    preDetDocsVtaDetOperacion.SOPE_Item,
                                                    0,
                                                    0, "002"); // 002 => Terminada
                                            }
                                        }
                                    }
                                    else // Tarjas
                                    {
                                        foreach (var preDetDoc in Item.ItemsPreDetDocsVta_Det_Operacion.Where(data => data.Agregar).ToObservableCollection())
                                        {
                                            PreDetDocsVta_Det_Operacion itemPreDetDocsVtaDetOperacion = preDetDoc;
                                            itemPreDetDocsVtaDetOperacion.PDVO_Codigo = Item.PDOC_Codigo;
                                            m_isCorrect = BLDet_Tarjas.UpdateDetTarjasPreFacturacion(
                                                itemPreDetDocsVtaDetOperacion.TARJ_Codigo,
                                                itemPreDetDocsVtaDetOperacion.DTAJ_Item,
                                                0,
                                                0, "004"); // 004 => Facturada
                                            if (!m_isCorrect)
                                            {
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                            /* Eliminar PreDetDocVenta */
                            foreach (var item in Item.ItemsPreDetDocsVta)
                            {
                                if (item.DOCV_Codigo > 0)
                                {
                                    item.Instance = InstanceEntity.Deleted;
                                }
                            }
                            ObservableCollection <PreDetDocsVta> itemsDeletePreDetDocsVta = Item.ItemsPreDetDocsVta.Where(data => data.DOCV_Codigo > 0).ToObservableCollection();
                            m_isCorrect = BLPreDetDocsVta.Save(ref itemsDeletePreDetDocsVta);

                            /* Guardamos de Nuevo Solo los Marcados */
                            foreach (var item in Item.ItemsPreDetDocsVta.Where(data => data.Agregar))
                            {
                                PreDetDocsVta itemPreDetDocsVta = item;
                                itemPreDetDocsVta.DOCV_Codigo  = Item.PDOC_Codigo;
                                itemPreDetDocsVta.Trasanct     = false;
                                itemPreDetDocsVta.Instance     = InstanceEntity.Added;
                                itemPreDetDocsVta.AUDI_UsrCrea = Item.AUDI_UsrMod;
                                if (Item.AUDI_FecMod != null)
                                {
                                    itemPreDetDocsVta.AUDI_FecCrea = Item.AUDI_FecMod.Value;
                                }
                                m_isCorrect = BLPreDetDocsVta.Save(ref itemPreDetDocsVta);
                                if (m_isCorrect)
                                {
                                    /* Items ItemsPreDetDocsVta_Det_Operacion */
                                    if (Item.ItemsPreDetDocsVta_Det_Operacion != null && Item.ItemsPreDetDocsVta_Det_Operacion.Count > 0)
                                    {
                                        if (!itemPreDetDocsVta.Tarjas)                              // Si es Operación
                                        {
                                            if (!String.IsNullOrEmpty(itemPreDetDocsVta.CTAR_Tipo)) // Servcios Logistico, aduanero y transporte)
                                            {
                                                foreach (var preDetDocsVtaDetOperacion in Item.ItemsPreDetDocsVta_Det_Operacion.Where(data => data.CTAR_Tipo == itemPreDetDocsVta.CTAR_Tipo && data.Agregar).ToObservableCollection())
                                                {
                                                    PreDetDocsVta_Det_Operacion itemPreDetDocsVtaDetOperacion = preDetDocsVtaDetOperacion;
                                                    itemPreDetDocsVtaDetOperacion.PDVO_Codigo = Item.PDOC_Codigo;
                                                    if (!String.IsNullOrEmpty(itemPreDetDocsVtaDetOperacion.CTAR_Tipo))
                                                    {
                                                        // Servicios Log,Adu,Trans
                                                        m_isCorrect = BLDet_Operacion.UpdateDetOperacionPreFactura(
                                                            itemPreDetDocsVtaDetOperacion.COPE_Codigo,
                                                            itemPreDetDocsVtaDetOperacion.DOPE_Item,
                                                            itemPreDetDocsVta.PDDO_Item,
                                                            itemPreDetDocsVta.DOCV_Codigo, "003"); // 003 => PreFacturada
                                                    }
                                                    if (!m_isCorrect)
                                                    {
                                                        break;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                // Servicios Adicionales
                                                var preDetDocsVtaDetOperacion = Item.ItemsPreDetDocsVta_Det_Operacion.FirstOrDefault(data => data.SOPE_Item == itemPreDetDocsVta.SOPE_Item);
                                                if (preDetDocsVtaDetOperacion != null)
                                                {
                                                    m_isCorrect = BLDet_Operacion_Servicio.UpdateDetServicioOperacionPreFactura(
                                                        preDetDocsVtaDetOperacion.COPE_Codigo,
                                                        preDetDocsVtaDetOperacion.SOPE_Item,
                                                        itemPreDetDocsVta.PDDO_Item,
                                                        itemPreDetDocsVta.DOCV_Codigo, "003"); // 003 => PreFacturada
                                                }
                                                if (!m_isCorrect)
                                                {
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            // Es Tarjas
                                            foreach (var preDetDoc in Item.ItemsPreDetDocsVta_Det_Operacion.Where(data => data.Agregar).ToObservableCollection())
                                            {
                                                PreDetDocsVta_Det_Operacion itemPreDetDocsVtaDetOperacion = preDetDoc;
                                                itemPreDetDocsVtaDetOperacion.PDVO_Codigo = Item.PDOC_Codigo;
                                                m_isCorrect = BLDet_Tarjas.UpdateDetTarjasPreFacturacion(
                                                    itemPreDetDocsVtaDetOperacion.TARJ_Codigo,
                                                    itemPreDetDocsVtaDetOperacion.DTAJ_Item,
                                                    itemPreDetDocsVta.PDDO_Item,
                                                    itemPreDetDocsVta.DOCV_Codigo, "004"); // 004 => Facturada
                                                if (!m_isCorrect)
                                                {
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                                if (!m_isCorrect)
                                {
                                    break;
                                }
                            }
                        }
                    }
                    break;

                case InstanceEntity.Deleted:
                    m_isCorrect = Delete(ref Item); break;
                }
                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            { DataAccessEnterpriseSQL.DARollbackTransaction(); throw; }
        }