Exemplo n.º 1
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; }
        }
Exemplo n.º 2
0
        public Boolean Save(ref Cab_Operacion Item)
        {
            try
            {
                Boolean m_isCorrect = true;
                Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DABeginTransaction();
                switch (Item.Instance)
                {
                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                    m_isCorrect = Insert(ref Item);
                    /* Items Detalle Operación */
                    if (Item.ItemsDet_Operacion != null && Item.ItemsDet_Operacion.Count > 0)
                    {
                        foreach (var _item in Item.ItemsDet_Operacion)
                        {
                            Det_Operacion _Deta = new Det_Operacion();
                            _Deta             = _item;
                            _Deta.COPE_Codigo = Item.COPE_Codigo;
                            _Deta.Trasanct    = false;
                            _Deta.Instance    = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                            m_isCorrect       = BLDet_Operacion.Save(_Deta);
                            if (!m_isCorrect)
                            {
                                break;
                            }
                        }
                    }
                    /* Items Servicios Operación */
                    if (Item.ItemsDet_Operacion_Servicio != null && Item.ItemsDet_Operacion_Servicio.Count > 0)
                    {
                        foreach (var _itemServ in Item.ItemsDet_Operacion_Servicio)
                        {
                            Det_Operacion_Servicio _Servicio = new Det_Operacion_Servicio();
                            _Servicio              = _itemServ;
                            _Servicio.COPE_Codigo  = Item.COPE_Codigo;
                            _Servicio.Trasanct     = false;
                            _Servicio.Instance     = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                            _Servicio.AUDI_UsrCrea = Item.AUDI_UsrCrea;
                            m_isCorrect            = BLDet_Operacion_Servicio.Save(_Servicio);
                            if (!m_isCorrect)
                            {
                                break;
                            }
                        }
                    }
                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                    m_isCorrect = Update(ref Item);
                    /* Eliminar los detalles de operacion */
                    if (Item.ItemsDet_Operacion_Eliminados != null && Item.ItemsDet_Operacion_Eliminados.Count > 0 && m_isCorrect)
                    {
                        foreach (Entities.Det_Operacion iEliminados in Item.ItemsDet_Operacion_Eliminados)
                        {
                            iEliminados.Instance = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted;
                            Det_Operacion _Deta = new Det_Operacion();
                            _Deta             = iEliminados;
                            _Deta.COPE_Codigo = Item.COPE_Codigo;
                            _Deta.Trasanct    = false;
                            BLDet_Operacion.Save(_Deta);
                            //if (!m_isCorrect) { break; }
                        }
                    }
                    /* Items Detalle Operación */
                    if (Item.ItemsDet_Operacion != null && Item.ItemsDet_Operacion.Count > 0 && m_isCorrect)
                    {
                        foreach (var _item in Item.ItemsDet_Operacion)
                        {
                            Det_Operacion _Deta = new Det_Operacion();
                            _Deta             = _item;
                            _Deta.COPE_Codigo = Item.COPE_Codigo;
                            _Deta.Trasanct    = false;
                            m_isCorrect       = BLDet_Operacion.Save(_Deta);
                            if (!m_isCorrect)
                            {
                                break;
                            }
                        }
                    }
                    /* Eliminar Items Servicios Operación */
                    if (Item.ItemsDet_Operacion_Servicio_Eliminados != null && Item.ItemsDet_Operacion_Servicio_Eliminados.Count > 0 && m_isCorrect)
                    {
                        foreach (Entities.Det_Operacion_Servicio _itemServ in Item.ItemsDet_Operacion_Servicio_Eliminados)
                        {
                            Det_Operacion_Servicio _Servicio = new Det_Operacion_Servicio();
                            _Servicio              = _itemServ;
                            _Servicio.COPE_Codigo  = Item.COPE_Codigo;
                            _Servicio.Trasanct     = false;
                            _Servicio.Instance     = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted;
                            _Servicio.AUDI_UsrCrea = Item.AUDI_UsrMod;
                            BLDet_Operacion_Servicio.Save(_Servicio);
                            //if (!m_isCorrect) { break; }
                        }
                    }

                    /* Items Servicios Operación */
                    if (Item.ItemsDet_Operacion_Servicio != null && Item.ItemsDet_Operacion_Servicio.Count > 0 && m_isCorrect)
                    {
                        foreach (var _itemServ in Item.ItemsDet_Operacion_Servicio)
                        {
                            Det_Operacion_Servicio _Servicio = new Det_Operacion_Servicio();
                            _Servicio             = _itemServ;
                            _Servicio.COPE_Codigo = Item.COPE_Codigo;
                            _Servicio.Trasanct    = false;
                            //_Servicio.Instance = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                            _Servicio.AUDI_UsrCrea = Item.AUDI_UsrMod;
                            if (_Servicio.SOPE_Item == 0)
                            {
                                _Servicio.Instance = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                            }
                            m_isCorrect = BLDet_Operacion_Servicio.Save(_Servicio);
                            if (!m_isCorrect)
                            {
                                break;
                            }
                        }
                    }
                    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();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            { Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DARollbackTransaction(); throw; }
        }