protected void DevolverGuia(object sender, DataGridCommandEventArgs e) { try { bool hayError = false; GuiaOriginalID = Convert.ToInt32(this.dtgGuiasNuevas.DataKeys[e.Item.ItemIndex]); DsGuias ds = (DsGuias)Session["DsGuiasConsul"]; DsGuias.DatosRow[] dr = (DsGuias.DatosRow[])ds.Datos.Select("GuiaID = " + GuiaOriginalID); if (dr.Length > 0) { DsGuiasFacturas dsGuiasDet; //recupera todas las guías y sus correspondientes detalles if (Session["DsGuiasDetalles"] == null) { IGuiaFactura guiaFact = GuiaFacturaFactory.GetGuiaFactura(); ((IGuia)guiaFact).AgenciaDestinoID = this.AgenciaConectadaID; ((IGuia)guiaFact).TipoGuia = this.rbtGuiaA.Checked ? "A" : this.rbtGuiaB.Checked ? "B" : ""; dsGuiasDet = guiaFact.GetGuiasFacturasAgDestinoDataSet(fechaDesde, fechaHasta); Session["DsGuiasDetalles"] = dsGuiasDet; } else { dsGuiasDet = (DsGuiasFacturas)Session["DsGuiasDetalles"]; } if (Session["AgenciaConectada"] == null) { oAgencia = AgenciaFactory.GetAgencia(); oAgencia.AgenciaID = Convert.ToInt32(this.AgenciaConectadaID); oAgencia.ConsultarBasico(); } else { oAgencia = (IAgencia)Session["AgenciaConectada"]; } //CARGO DATOS DE LA CABEZA DE LA FACTURA DsGuiasFacturas.DatosRow[] drFactCab = (DsGuiasFacturas.DatosRow[])dsGuiasDet.Datos.Select("GuiaID = " + GuiaOriginalID + " AND PesoTotal > 0"); if (drFactCab.Length > 0) { //Parámetro: ID de cliente correspondiente a ANDESMAR IParametroUNegocio param = ParametroUNegocioFactory.GetParametroUNegocio(); param.UnidadNegocioID = this.UnidadNegocioID; param.Parametro = NegociosSisPackInterface.SisPack.Parametro.ClienteDeAdministracion; param.Consultar(); // obtengo los datos de la agencia destino, para guardar el número correcto de la guía // que se devuelve IAgencia agDestino = AgenciaFactory.GetAgencia(); agDestino.AgenciaID = drFactCab[0].AgenciaOrigenID; agDestino.ConsultarBasico(); guiaNueva = AdministrarGuiasFactory.GetAdministrarGuias(); guiaNueva.AgenciaDestinoID = drFactCab[0].AgenciaOrigenID; guiaNueva.AgenciaOrigenID = drFactCab[0].AgenciaDestinoID; //si la unidad de venta tiene servicio flete pago en destino, //la condición de pago siempre es contado. guiaNueva.CondicionPagoID = (NegociosSisPackInterface.SisPack.CondicionPago)drFactCab[0].CondicionPagoID; guiaNueva.AgenteGuiaPagoID = NegociosSisPackInterface.SisPack.TipoAgenteGuia.Destinatario; guiaNueva.AgentePagoCondicionIVA = (NegociosSisPackInterface.SisPack.CondicionIva)drFactCab[0].CondicionIvaAgentePago; guiaNueva.AgentePagoEsClienteCorporativo = true; guiaNueva.ClienteCorp.ClienteID = drFactCab[0].RemitenteClienteID; guiaNueva.CantBultos = drFactCab[0].CantidadBultosTotal; guiaNueva.ClienteCorpRemitente.ClienteID = Convert.ToInt32(param.ValorString); guiaNueva.ClienteCorpRemitente.Consultar(); guiaNueva.ClienteCorpDestinatario.ClienteID = drFactCab[0].RemitenteClienteID; guiaNueva.ClienteCorpDestinatario.Consultar(); guiaNueva.NroCUITAgentePago = drFactCab[0].CUITAgentePago; guiaNueva.NroGuia = drFactCab[0].NroGuia; guiaNueva.NroSucursalGuia = oAgencia.SucursalDGI; guiaNueva.Observaciones = "Devolución guía número " + Utiles.Formatos.CerosIzq(Convert.ToInt32(agDestino.SucursalDGI), 4) + "-" + Utiles.Formatos.CerosIzq(drFactCab[0].NroGuia, 8) + "-" + drFactCab[0].TipoGuia; //guiaNueva.Observaciones = "Devolución guía número " + Utiles.Formatos.CerosIzq(Convert.ToInt32(oAgencia.SucursalDGI), 4) + "-" + Utiles.Formatos.CerosIzq(drFactCab[0].NroGuia, 8) + "-" + drFactCab[0].TipoGuia; guiaNueva.PesoTotal = drFactCab[0].PesoTotal; guiaNueva.PesoKgReal = drFactCab[0].PesoTotal; guiaNueva.UnidadNegocioID = drFactCab[0].UnidadNegocioID; guiaNueva.ValorDeclarado = drFactCab[0].ValorDeclaradoTotal; guiaNueva.VolumenTotal = drFactCab[0].VolumenTotal; guiaNueva.RemitoClienteNro = drFactCab[0].RemitoClienteNro.ToString(); //CARGO DATOS DEL DETALLE DE LA FACTURA DsGuiasFacturas.DatosDetalleRow[] drFactDet = (DsGuiasFacturas.DatosDetalleRow[])dsGuiasDet.DatosDetalle.Select("GuiaID = " + GuiaOriginalID); if (drFactDet.Length > 0) { guiaNueva.TipoBultoID = (NegociosSisPackInterface.SisPack.TipoBulto)drFactDet[0].TipoBultoID; //el try se usa en caso de que el seguro venga con DBNull //en cuyo caso se le coloca en cero. try { guiaNueva.SeguroTantoPorMil = Convert.ToDouble(drFactDet[0].SeguroTantoPorMil); } catch (Exception) { guiaNueva.SeguroTantoPorMil = 0; } guiaNueva.GuiaDevueltaID = drFactDet[0].GuiaID; //Si la u. de vta de la guía a devolver tiene servicio ContraReembolso, o Acuse de recibo //regresa como encomienda estándar sin servicio adicional. IUnidadVenta uVta = UnidadVentaFactory.GetUnidadVenta(); DsUnidadVentaTEntregaProductoServicio dsUV = uVta.GetServiciosDisponiblesByProductoTEntregaAgenciaDataSet(); DsUnidadVentaTEntregaProductoServicio.DatosRow[] drsUV = (DsUnidadVentaTEntregaProductoServicio.DatosRow[])dsUV.Datos.Select("UnidadVentaID = " + drFactDet[0].UnidadVentaID + " AND (ServicioID = " + (int)NegociosSisPackInterface.SisPack.Servicio.ContraReembolso + " OR ServicioID = " + (int)NegociosSisPackInterface.SisPack.Servicio.AcuseRecibo + ")"); if (drsUV.Length > 0) { //Parámetro: ID Unidad de venta correspondiente a Encomienda estándar sin servicio adicional param.Parametro = NegociosSisPackInterface.SisPack.Parametro.EncomiendaEstandarSinServAdicional; param.Consultar(); guiaNueva.UnidadVentaID = Convert.ToInt32(param.ValorString); } else { guiaNueva.UnidadVentaID = drFactDet[0].UnidadVentaID; } //la guia debe devolverse con la modalidad de entrega inversa a la original // siempre y cuando esa modalidad estè contemplada en el convenio del cliente // para la unidad de venta con la que sale la guia nueva IAdministrarGuias guiaOriginal = AdministrarGuiasFactory.GetAdministrarGuias(); guiaOriginal.GuiaID = drFactCab[0].GuiaID; guiaOriginal.ClienteCorp.ClienteID = drFactCab[0].RemitenteClienteID; guiaOriginal.UnidadVentaID = guiaNueva.UnidadVentaID; guiaOriginal.ModalidadEntregaID = guiaOriginal.GetModalidadEntrega(); guiaOriginal.AgenciaOrigenID = drFactCab[0].AgenciaOrigenID; /*if(guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta) && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta)) * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta; * if(guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta)) * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta; * else if (guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta)) * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta; * else * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;*/ //para que vuelva con entrega a domicilio hay 1 condicion: // - que el cliente tenga en el convenio la modalidad de entrega a domic para // la UV con la que sale la guia para el destino de la guia q vuelve // nota: en ultima instancia vuelve Ter-Ter indptemente de que esté o no en el convenio del cliente if (guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaTerminal) || guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta)) { guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta; } else { guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal; } /*if(guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaTerminal && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta)) * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta; * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta)) * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta; * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta) * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal; * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal) * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal; * else * guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;*/ //CARGO DATOS DE LOS SUBCONCEPTOS FACTURADOS DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow[] drFactSCF = (DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow[])dsGuiasDet.DatosDetalleSubconceptoFacturable.Select("GuiaID = " + drFactDet[0].GuiaID + " AND GuiaFacturaDetalleID = " + drFactDet[0].GuiaFacturaDetalleID + " AND (SubConceptoFacturableID = " + (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.FleteNacional + " OR SubConceptoFacturableID = " + (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.Seguro + ")"); if (drFactSCF.Length > 0) { foreach (DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow drSubConcepto in drFactSCF) { if (drSubConcepto.SubConceptoFacturableID == (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.FleteNacional) { guiaNueva.ImporteFlete = drSubConcepto.Importe; } else { guiaNueva.ImporteSeguro = drSubConcepto.Importe; } } guiaNueva.CalcularImportes(); Session["guiaNueva"] = guiaNueva; this.ObtenerNroGuia(dr[0].TipoGuia); } else { hayError = true; } } else { hayError = true; } } else { hayError = true; } } if (hayError) { ((ErrorWeb)phErrores.FindControl("Error")).setMensaje(this.TraducirTexto("Errores.Invalidos.GuiaIncompleta")); } } catch (Exception ex) { ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje(TraducirTexto(ex.Message)); } }