private void butConfirmar_Click(object sender, System.EventArgs e) { usuario = (IUsuarios)Session["usuario"]; // Obtengo las agencias para verificar si la sucursal de la guía a recibir es válida // en el caso de guías de agencias no automatizadas IAgencia agencia = AgenciaFactory.GetAgencia(); DsAgencias dsAgencias = agencia.GetAgenciasDataSet(); bool ok = true; Hashtable hGuias = new Hashtable(); // Guías que no se pueden recibir, porque son de ag. no automatizadas o no existen Hashtable hGuiasNR = new Hashtable(); // Guías que no están en condiciones de ser recibidas Hashtable hGuiasIncompletas = new Hashtable(); // Guías que se pueden recibir, pero no se completaron los datos (valor declarado, bultos y agencias) // Verifico si el sistema está configurado para utilizar recepción libre bool recepcionLibre = false; IParametroUNegocio param = ParametroUNegocioFactory.GetParametroUNegocio(); param.Parametro = NegociosSisPackInterface.SisPack.Parametro.RecepcionLibre; param.UnidadNegocioID = this.UnidadNegocioID; param.Consultar(); if (param.ValorString == "1") { recepcionLibre = true; } int cant = Utiles.Validaciones.obtieneEntero(this.txtGuiaIndex.Text); for (int i = 0; i < cant; i++) { // ANTES DE RECIBIR CADA GUÍA HAY QUE REALIZAR LOS CONTROLES CORRESPONDIENTES // E IR GUARDANDO LAS GUÍAS QUE FALLAN, PARA LUEGO VISUALIZAR UNA LISTA DE ESAS GUÍAS string txt = "txt" + i; string obs = "Obs" + i.ToString() + "$txtObservacionID"; string obsCodigo = "Obs" + i.ToString() + "$txtCodigo"; string obsDescrip = "Obs" + i.ToString() + "$txtObsDescrip"; string ddl = "ddl" + i.ToString(); string nroGuia = Request.Form[txt].ToString(); string observacionID = Request.Form[obs].ToString(); string sObsCodigo = Request.Form[obsCodigo].ToString(); string sObsDescrip = Request.Form[obsDescrip].ToString(); // Lógica para recibir (y observar) guías string tGuia = ""; // if (nroGuia.Substring(0,1) == "3") // tGuia="A"; // else if (nroGuia.Substring(0,1) == "4") // tGuia="B"; // //else // //throw new Exception("Errores.Invalidos.CodigoBarrasLongitud"); tGuia = NegociosSisPackInterface.SisPack.TipoGuia(nroGuia.Substring(0, 1)); string nroSucursal = nroGuia.Substring(1, 4); string nGuia = nroGuia.Substring(5); IGuia oGuia = GuiaFactory.GetGuia(); oGuia.NroGuia = Utiles.Validaciones.obtieneEntero(nGuia); oGuia.NroSucursalGuia = nroSucursal; oGuia.TipoGuia = tGuia; oGuia.Consultar(); oGuia.EsRecepcion = 1; oGuia.UnidadNegocioID = this.UnidadNegocioID; //oGuia.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); oGuia.UsuarioID = usuario.UsuarioID; IGuiaFactura oGuiaFactura = GuiaFacturaFactory.GetGuiaFactura(); oGuiaFactura.UsuarioID = usuario.UsuarioID; // si la guía existe en el sistema, la recibe if (oGuia.GuiaID > 0) { // Obtengo el Id de la agencia administración IParametroUNegocio paramAdm = ParametroUNegocioFactory.GetParametroUNegocio(); paramAdm.Parametro = NegociosSisPackInterface.SisPack.Parametro.AgenciaDeAdministracion; paramAdm.UnidadNegocioID = this.UnidadNegocioID; paramAdm.Consultar(); int agAdm = Utiles.Validaciones.obtieneEntero(paramAdm.ValorString); paramAdm = null; // Reviso si la guía es recepcionable (si la guía todavia no esta en destino o si esta solicitada para devolución) //if (oGuia.EsRecepcionable || oGuia.RevisarSiTieneEstadoHistoricoBuscado(13, 2, oGuia.AgenciaDestinoID)) // Diego 29/03/2014 // Modificado para que verifique que la guia no este anulada o anulada WEB if ((oGuia.EsRecepcionable || oGuia.RevisarSiTieneEstadoHistoricoBuscado(13, 2, oGuia.AgenciaDestinoID)) && !oGuia.EsGuiaAnulada(oGuia.GuiaID)) { // La guía es recepcionable ((IGuia)oGuiaFactura).GuiaID = oGuia.GuiaID; /* Diego 09/01/2013 Actualiza el stock de las unidades de logisticas */ if (oGuia.TipoGuia == "X") { IGuiaUnidadLogistica gUnidad = GuiaUnidadLogisticaFactory.GetIGuiaUnidadLogistica(); gUnidad.ActualizarStockGuiaUnidadLogistica(oGuia.GuiaID, this.AgenciaConectadaID, usuario.UsuarioID, 1); } if ((this.AgenciaConectadaID == oGuia.AgenciaDestinoID) || ((this.AgenciaConectadaID == oGuia.AgenciaOrigenID /*|| this.AgenciaConectadaID == agAdm*/) && oGuia.EstadoSentidoViaje == (int)NegociosSisPackInterface.SisPack.ValorEstadoSentidoViaje.Devolucion)) { if (oGuia.ClasificacionGuiaID != NegociosSisPackInterface.SisPack.ClasificacionGuia.Factura && oGuia.ClasificacionGuiaID != NegociosSisPackInterface.SisPack.ClasificacionGuia.Remito) { //((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; oGuia.EsRecepcionLibre = recepcionLibre; oGuia.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); oGuia.Ingresada("Recibida Masivamente", this.AgenciaConectadaID, usuario); /*German 28/06/2016 */ if (oGuia.TipoGuia == "X" && EsConformable(oGuia)) { oGuiaFactura.Entregada("Conformada Masivamente", this.AgenciaConectadaID, usuario); } ObservarFinDeSemana(oGuia.GuiaID, usuario.UsuarioID); } else { ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; oGuiaFactura.Ingresada("Recibida Masivamente", this.AgenciaConectadaID, usuario, Utiles.Validaciones.obtieneEntero(observacionID)); ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } } else if (this.AgenciaConectadaID == agAdm && oGuia.EstadoSentidoViaje == (int)NegociosSisPackInterface.SisPack.ValorEstadoSentidoViaje.Devolucion) { // La guía se esta recibiendo en administración y es una devolución. La cargo como que queda en archivo if (oGuia.ClasificacionGuiaID != NegociosSisPackInterface.SisPack.ClasificacionGuia.Factura) { ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; oGuia.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); oGuia.IngresadaAArchivo("Recibida Masivamente", this.AgenciaConectadaID, usuario); ObservarFinDeSemana(oGuia.GuiaID, usuario.UsuarioID); } else { ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; oGuiaFactura.IngresadaAArchivo("Recibida Masivamente", this.AgenciaConectadaID, usuario, Utiles.Validaciones.obtieneEntero(observacionID)); ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } } //SFE: Modificado para corregir el bug que no ponia en Agencia de Redespacho en la Recepcion Masiva-- Se agrego el Metodo "EsGuiaDePuntoRecepcionReferenciado(oGuia.GuiaID)" else if (this.EsGuiaDeAgenciaRedespachoReferenciada(oGuia.AgenciaDestinoID, oGuia.GuiaID) || this.EsGuiaDePuntoRecepcionReferenciado(oGuia.GuiaID)) { //Guia de redespacho ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; oGuiaFactura.Redespacho("Recibida Masivamente", this.AgenciaConectadaID, usuario); ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } else { IAgencia ag = AgenciaFactory.GetAgencia(); ag.AgenciaID = oGuia.AgenciaOrigenID; ag.ConsultarBasico(); // si la agencia que recibe en forma libre es la agencia madre, // tengo que insertar los estados correspondientes if (recepcionLibre && this.AgenciaConectadaID == ag.AgenciaMadre) { // insertar los estados de agencia madre... if (oGuia.ClasificacionGuiaID != NegociosSisPackInterface.SisPack.ClasificacionGuia.Factura) { oGuia.EsRecepcion = 1; oGuia.EsRecepcionLibre = recepcionLibre; oGuia.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); oGuia.UsuarioID = Utiles.Validaciones.obtieneEntero(this.UsuarioConectadoID); oGuia.Observaciones = "Recibida Masivamente"; oGuia.RecepcionAgenciaMadre(this.AgenciaConectadaID); ObservarFinDeSemana(oGuia.GuiaID, usuario.UsuarioID); } else { ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; //Se agregaron las siguientes dos lineas porque cuando llegaba al metodo para observar //no llegaba ni el usuario ni la observacion. FQuiroga 08/04/2016 ((IGuia)oGuiaFactura).ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); ((IGuia)oGuiaFactura).UsuarioID = (usuario.UsuarioID); oGuiaFactura.RecepcionAgenciaMadre("Recibida Masivamente", this.AgenciaConectadaID, Utiles.Validaciones.obtieneEntero(observacionID)); ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } } else { /*SFE: Agregado para trabajar con envios desde la Web*/ if (oGuia.EstadoMovimiento != (int)NegociosSisPackInterface.SisPack.ValorEstadoMovimiento.PendienteRetiro) { /**/ /*Esto estaba 16/11/2010*/ // sino, continuar normalmente... if (oGuia.ClasificacionGuiaID != NegociosSisPackInterface.SisPack.ClasificacionGuia.Factura) { oGuia.EsRecepcionLibre = recepcionLibre; oGuia.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); if (oGuia.EstadoMovimiento != (int)NegociosSisPackInterface.SisPack.ValorEstadoMovimiento.PendienteRetiro) { oGuia.Trasbordo("Recibida Masivamente", this.AgenciaConectadaID, usuario); } else { oGuia.IngresoReparto("Recibida Masivamente", this.AgenciaConectadaID, usuario); } ObservarFinDeSemana(oGuia.GuiaID, usuario.UsuarioID); } else { ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; if (oGuia.EstadoMovimiento != (int)NegociosSisPackInterface.SisPack.ValorEstadoMovimiento.PendienteRetiro) { oGuiaFactura.Trasbordo("Recibida Masivamente", this.AgenciaConectadaID, usuario, Utiles.Validaciones.obtieneEntero(observacionID)); } else { oGuiaFactura.IngresoReparto("Recibida Masivamente", this.AgenciaConectadaID, usuario); } ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } /*Esto estaba 16/11/2010*/ } /*SFE:Agregado para trabajar con envios desde la Web*/ else { // Inserto los estados de "emitida" a la guía que se recibe // ya que se emitió en la web, y cuando se realizó la factura desde SisPack // se insertó el estado "Pendiente de Retiro" IObservacion observacion = ObservacionFactory.GetObservacion(); observacion.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); if (observacion.ObservacionID > 0) { observacion.Buscar(); } if (observacion.ObservacionID > 0 && observacion.TipoObservacionID == (int)NegociosSisPackInterface.SisPack.TipoObservacion.WebYPendienteRetiro) { /* VSA 14-08: Si se ha ingresado una observación del tipo WebYPendienteRetiro --> no se cambia el estado movimiento de la guía.*/ //IGuia oGuia = GuiaFactory.GetGuia(); //oGuia.GuiaID = Utiles.Validaciones.obtieneEntero(txtGuiaID.Text); oGuia.ObservacionID = observacion.ObservacionID; oGuia.UsuarioID = usuario.UsuarioID; oGuia.Observar(); oGuia = null; /********************************************************************************************************************************/ //bOK = true; } else { //bOK = oGuia.IngresoReparto(observacion.ObsDescrip, this.AgenciaConectadaID, usuario); } } /*SFE */ } } } // fin if EsRecepcionable else { // acá debería guardar las que no se pueden recibir y luego mostrarlas en un alert... string guia = nroSucursal + "-" + nGuia + "-" + tGuia; if (hGuiasNR.ContainsKey(oGuia.GuiaID) == false) { hGuiasNR.Add(oGuia.GuiaID, guia); } } } else { if (this.txtGuiasDefectuosas.Text == "0") { /*SFE: 12/01/2011. No permitir la recepcion de una guía que no se haya emitido y que la Agencia de Origen sea auto impresora*/ // Si la guía no existe en el sistema, consulto si la Agencia Origen es Autoimpresora // 1ro verifico si la sucursal ingresada es válida DsAgencias.DatosRow[] dr = (DsAgencias.DatosRow[])dsAgencias.Datos.Select("SucursalDGI = '" + nroSucursal + "'"); if (dr.Length > 0) // Si es una sucursal válida, ahora controlo que no este configurada como autoimpresora { DsAgencias.DatosRow drAgencia = dr[0]; string guia = nroSucursal + "-" + nGuia + "-" + tGuia; if (drAgencia.TipoImpresionGuiaId != (int)NegociosSisPackInterface.SisPack.TipoImpresionGuia.PreImpresa) // Caso Buscado: Guia no existe en el sistema y la Agencia Origen es Autoimpresora. No dejar recibir { hGuiasNR.Add(oGuia.GuiaID, guia); } } else { // si la guía no existe en el sistema, ya sea porque fue emitida por una agencia no // automatizada o bien porque se emitió en forma manual por una automatizada // hay que visualizarla nuevamente para que se ingresen los datos correspondientes ok = false; string obsTemp = observacionID + "#" + sObsCodigo + "#" + sObsDescrip; if (hGuias.ContainsKey(nroGuia) == false) { hGuias.Add(nroGuia, obsTemp); } //this.txtGuiasDefectuosas.Text = "1"; } } else { /*SFE: 12/01/2011. No permitir la recepcion de una guía que no se haya emitido y que la Agencia de Origen sea auto impresora*/ // 1ro verifico si la sucursal ingresada es válida DsAgencias.DatosRow[] dr = (DsAgencias.DatosRow[])dsAgencias.Datos.Select("SucursalDGI = '" + nroSucursal + "'"); if (dr.Length > 0) // Si es una sucursal válida, ahora controlo que no este configurada como autoimpresora { DsAgencias.DatosRow drAgencia = dr[0]; if (drAgencia.TipoImpresionGuiaId != (int)NegociosSisPackInterface.SisPack.TipoImpresionGuia.PreImpresa) // Caso Buscado: Guia no existe en el sistema y la Agencia Origen es Autoimpresora. No dejar recibir { string guia = nroSucursal + "-" + nGuia + "-" + tGuia; if (hGuiasNR.ContainsKey(oGuia.GuiaID) == false) { hGuiasNR.Add(oGuia.GuiaID, guia); } } else { string valorDeclarado = "txtValorDeclarado" + i; string bultos = "txtBultos" + i.ToString(); string agenciaDestino = "agDes" + i.ToString() + "$txtAgenciaID"; string clasificacionGuiaID = Request.Form[ddl].ToString(); double vd = Utiles.Validaciones.obtieneDouble(Request.Form[valorDeclarado].ToString()); int bultosTotales = Utiles.Validaciones.obtieneEntero(Request.Form[bultos].ToString()); int agDes = Utiles.Validaciones.obtieneEntero(Request.Form[agenciaDestino].ToString()); if (vd > 0 && bultosTotales > 0 && agDes > 0) { oGuiaFactura = GuiaFacturaFactory.GetGuiaFactura(); ((IGuia)oGuiaFactura).TipoGuia = tGuia; ((IGuia)oGuiaFactura).NroSucursalGuia = nroSucursal; ((IGuia)oGuiaFactura).NroGuia = Utiles.Validaciones.obtieneEntero(nGuia); ((IGuia)oGuiaFactura).UnidadNegocioID = this.UnidadNegocioID; ((IGuia)oGuiaFactura).FechaEmision = new DateTime(1900, 1, 1); ((IGuia)oGuiaFactura).ClasificacionGuiaID = (NegociosSisPackInterface.SisPack.ClasificacionGuia)Utiles.Validaciones.obtieneEntero(clasificacionGuiaID); IAgencia agOrigen = AgenciaFactory.GetAgencia(); agOrigen.SucursalDGI = nroSucursal; agOrigen.ConsultarBySucursal(); ((IGuia)oGuiaFactura).AgenciaOrigenID = agOrigen.AgenciaID; ((IGuia)oGuiaFactura).AgenciaDestinoID = agDes; ((IGuia)oGuiaFactura).Observaciones = ""; ((IGuia)oGuiaFactura).EsRecepcion = 1; //((IGuia) oGuiaFactura).ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); ((IGuia)oGuiaFactura).UsuarioID = usuario.UsuarioID; ((IGuia)oGuiaFactura).GuiaID = oGuia.GuiaID; oGuiaFactura.ImporteTotalGuia = 0; oGuiaFactura.ValorDeclaradoTotal = vd; oGuiaFactura.CantidadBultosTotal = bultosTotales; if ((this.AgenciaConectadaID == agDes)) { if (Utiles.Validaciones.obtieneEntero(clasificacionGuiaID) != (int)NegociosSisPackInterface.SisPack.ClasificacionGuia.Factura) { oGuia.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); oGuia.Ingresada("Recibida Masivamente", this.AgenciaConectadaID, usuario); ObservarFinDeSemana(oGuia.GuiaID, usuario.UsuarioID); } else { oGuiaFactura.Ingresada("Recibida Masivamente", this.AgenciaConectadaID, usuario, Utiles.Validaciones.obtieneEntero(observacionID)); ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } } else if (this.EsGuiaDeAgenciaRedespachoReferenciada(agDes, oGuia.GuiaID)) { //Guia de redespacho ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; oGuiaFactura.Redespacho("Recibida Masivamente", this.AgenciaConectadaID, usuario); ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } else { if (Utiles.Validaciones.obtieneEntero(clasificacionGuiaID) != (int)NegociosSisPackInterface.SisPack.ClasificacionGuia.Factura) { oGuia.ObservacionID = Utiles.Validaciones.obtieneEntero(observacionID); oGuia.EsRecepcionLibre = recepcionLibre; oGuia.Trasbordo("Recibida Masivamente", this.AgenciaConectadaID, usuario); ObservarFinDeSemana(oGuia.GuiaID, usuario.UsuarioID); } else { ((IGuia)oGuiaFactura).EsRecepcionLibre = recepcionLibre; oGuiaFactura.Trasbordo("Recibida Masivamente", this.AgenciaConectadaID, usuario, Utiles.Validaciones.obtieneEntero(observacionID)); ObservarFinDeSemana(((IGuia)oGuiaFactura).GuiaID, usuario.UsuarioID); } } } else { ok = false; string obsTemp = observacionID + "#" + sObsCodigo + "#" + sObsDescrip; if (hGuiasIncompletas.ContainsKey(nroGuia) == false) { hGuiasIncompletas.Add(nroGuia, obsTemp); } } } } // fin dr.Length } } } // fin for Session["GuiasNR"] = hGuiasNR; if (ok) { Session["GuiasDefectuosas"] = null; Response.Redirect("RecepcionMasiva.aspx"); } else { if (hGuiasIncompletas != null && hGuiasIncompletas.Count > 0) { hGuias = hGuiasIncompletas; } this.txtGuiasDefectuosas.Text = "1"; Session["GuiasDefectuosas"] = hGuias; Response.Redirect("RecepcionMasiva.aspx?d=1"); } }