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; } }
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; } }