diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index fb92a81d1..06889de41 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -3155,14 +3155,15 @@ Public Class ClsBancos Return Retorno End Function - Public Function GetLayoutFyE(CveCuenta As Integer, CveEmpresa As Integer) As Boolean + Public Function GetLayoutFyE(CveCuenta As Integer, CveEmpresa As Integer, Optional PorGrupos As Boolean = False) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Banc_LayoutFyE") With SqlAdapter.SelectCommand.Parameters .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@PorGrupos", SqlDbType.Bit).Value = PorGrupos End With Try @@ -3173,9 +3174,9 @@ Public Class ClsBancos End Try Return Retorno - End Function + End Function #End Region - + #Region "F L U C T U A C I O N E S" Public Function GetFluctuacionesBitacora(CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/App_Code/ClsGenerales.vb b/App_Code/ClsGenerales.vb index 60e55b897..b47b3d317 100644 --- a/App_Code/ClsGenerales.vb +++ b/App_Code/ClsGenerales.vb @@ -1496,6 +1496,34 @@ Public Class ClsGenerales Return Retorno End Function + Public Function UpdateCuentasDepositosEstatusPagoElectronicoGrupos(CveCuentaDeposito As Integer, EstatusPagoElectronicoGrupos As Boolean) As Boolean + + Dim Retorno As Boolean = False + + DataAdapter("PA_Gral_CuentasDepositosUpdateEstatusPagoElectronicoGrupos") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCuentaDeposito", SqlDbType.VarChar).Value = CveCuentaDeposito + .Add("@EstatusPagoElectronicoGrupos", SqlDbType.Bit).Value = EstatusPagoElectronicoGrupos + End With + + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch Ex1 As SqlException + If Ex1.Message.Contains("Número: 2627;") Then + Alert("Ya existe un registro con el mismo nombre", TipoMensaje.MsgAdvertencia) + Else + Me.OnError("Ocurrió un error al guardar los cambios", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If + Catch ex As Exception + OnError("Ocurrió un error al guardar los cambios.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + #End Region #Region "T I P O - C A M B I O" diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 4bc6ba35a..4541aa752 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -1817,7 +1817,7 @@ Public Class ClsInventarios CveAlmacen As Integer, Optional CveSeccionAlmacen As Integer = -1, Optional CveTipoAlmacen As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional FechaMovto As String = "-1", Optional SerieLote As String = "-1", Optional CveVendedor As Integer = -1, Optional CveCliente As Integer = -1, Optional ExcluyeAdelantado As Integer = -1, Optional PendientePorSurtir As Integer = -1, Optional Lote As String = "-1", Optional Batch As String = "-1", - Optional ExcluyeApartados As Integer = 1, Optional RestringirAlmacenes As Integer = -1) As Boolean + Optional ExcluyeApartados As Integer = 1, Optional RestringirAlmacenes As Integer = -1, Optional Caducidad As Date = MinFecha) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Inv_ExistenciasGet") @@ -1839,6 +1839,7 @@ Public Class ClsInventarios .Add("@PendientePorSurtir", SqlDbType.Int).Value = PendientePorSurtir .Add("@ExcluyeApartados", SqlDbType.Int).Value = ExcluyeApartados .Add("@RestringirAlmacenes", SqlDbType.Int).Value = RestringirAlmacenes + .Add("@Caducidad", SqlDbType.Date).Value = Caducidad .Add("@Existencia", SqlDbType.Money).Direction = ParameterDirection.Output End With Try @@ -4922,6 +4923,28 @@ Public Class ClsInventarios Return Retorno End Function + +#Region "SUGERENCIAS SALIDA DE ALMACEN" + + Public Function GetSugerenciasSalidaAlmacen(CveVenta As Integer, CveAlmacen As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Inv_SugerenciasSalidasGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@CveAlmacen", SqlDbType.Int).Value = CveAlmacen + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener las sugerencias para la salida de almacen.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return Retorno + End Function + +#End Region + #Region " IDisposable Support " ' IDisposable Protected Overridable Sub Dispose(ByVal disposing As Boolean) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index f70562de6..20b4b091e 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -3801,6 +3801,7 @@ Public Class ClsPaginas PaginaDict.Add("/Bancos/Creditos.aspx".ToUpper(), 318) PaginaDict.Add("/Bancos/PagoElectronico.aspx".ToUpper(), 324) PaginaDict.Add("/Bancos/RepProgramaciones.aspx".ToUpper(), 323) + PaginaDict.Add("/Bancos/PagoElectronicoGrupos.aspx".ToUpper(), 1318) PaginaDict.Add("/Bancos/PopIE.aspx".ToUpper(), 153) PaginaDict.Add("/Bancos/PopIEVentas.aspx".ToUpper(), 153) @@ -4709,7 +4710,7 @@ Public Class ClsPaginas PaginaDict.Add("/PV/PVRepCompras.aspx".ToUpper(), 272) PaginaDict.Add("/PV/PVRepVentasCompras.aspx".ToUpper(), 273) - PaginaDict.Add("/Bancos/PagoElectronicoGrupos.aspx".ToUpper(), -1) + diff --git a/Bancos/PagoElectronicoGrupos.aspx b/Bancos/PagoElectronicoGrupos.aspx index f1752353f..e8c9384e9 100644 --- a/Bancos/PagoElectronicoGrupos.aspx +++ b/Bancos/PagoElectronicoGrupos.aspx @@ -14,11 +14,7 @@ - - - - @@ -170,7 +166,7 @@ -
+ <%--
@@ -220,7 +216,7 @@
-
+
--%> diff --git a/Bancos/PagoElectronicoGrupos.aspx.vb b/Bancos/PagoElectronicoGrupos.aspx.vb index 01a4a3521..40f10f8f6 100644 --- a/Bancos/PagoElectronicoGrupos.aspx.vb +++ b/Bancos/PagoElectronicoGrupos.aspx.vb @@ -374,24 +374,25 @@ Partial Class Bancos_PagoElectronicoGrupos fs.Close() Return True - End Function - Private Function GuardaTXT() As Boolean - Dim Retorno = True - Try - Dim Ruta = "" - Dim FileName As String = Path.GetFileName(FUTxt.PostedFile.FileName) - NombreArchivo = FileName - Dim Extension As String = Path.GetExtension(FUTxt.PostedFile.FileName) - Dim FolderPath As String = String.Format("{0}Empresas\", Request.ApplicationPath) - Dim FilePath As String = Server.MapPath(FolderPath + FileName) - FUTxt.SaveAs(FilePath) - NombreArchivo = FilePath - Catch ex As Exception - Retorno = False - End Try - - Return Retorno End Function + + 'Private Function GuardaTXT() As Boolean + ' Dim Retorno = True + ' Try + ' Dim Ruta = "" + ' Dim FileName As String = Path.GetFileName(FUTxt.PostedFile.FileName) + ' NombreArchivo = FileName + ' Dim Extension As String = Path.GetExtension(FUTxt.PostedFile.FileName) + ' Dim FolderPath As String = String.Format("{0}Empresas\", Request.ApplicationPath) + ' Dim FilePath As String = Server.MapPath(FolderPath + FileName) + ' FUTxt.SaveAs(FilePath) + ' NombreArchivo = FilePath + ' Catch ex As Exception + ' Retorno = False + ' End Try + + ' Return Retorno + 'End Function #End Region #Region " TAB PRINCIPAL " @@ -516,10 +517,10 @@ Partial Class Bancos_PagoElectronicoGrupos Exit Sub End If - AltaProveedores(1) + AltaProveedores() End Sub - Private Sub AltaProveedores(TipoAlta As Integer, Optional DtCuentasPendientesTemp As DataTable = Nothing) + Private Sub AltaProveedores(Optional DtCuentasPendientesTemp As DataTable = Nothing) NombreArchivo = "" @@ -544,9 +545,11 @@ Partial Class Bancos_PagoElectronicoGrupos DtCuentasPendientesTemp.CaseSensitive = False - Dim DtCuentasPendientesBancomer As DataTable = DtCuentasPendientesTemp.FiltraParametros($" (EstatusPagoElectronicoGrupos IS NULL OR EstatusPagoElectronicoGrupos = False) AND (BancoNombre like '%BBVA%' OR BancoNombre like '%BANCOMER%' ) ", "", {"BancoNombre", "CLABEDestino", "Abreviatura", "RazonSocial", "CveProveedor", "CveBanco", "Cuenta", "BBVAAlias"}) - Dim DtCuentasPendientesInterbancarias As DataTable = DtCuentasPendientesTemp.FiltraParametros($" (EstatusPagoElectronicoGrupos IS NULL OR EstatusPagoElectronicoGrupos = False) AND (BancoNombre not like '%BBVA%' AND BancoNombre not like '%BANCOMER%' ) ", "", {"BancoNombre", "CLABEDestino", "Abreviatura", "RazonSocial", "CveProveedor", "CveBanco", "Cuenta", "BBVAAlias"}) - 'CLABEDestino + Dim DtCuentasPendientesBancomer As DataTable = DtCuentasPendientesTemp.FiltraParametros($" (EstatusPagoElectronicoGrupos IS NULL OR EstatusPagoElectronicoGrupos = False) AND (BancoNombre like '%BBVA%' OR BancoNombre like '%BANCOMER%' ) ", "", {"CveCuentaDeposito", "BancoNombre", "CLABEDestino", "Abreviatura", "RazonSocial", "CveProveedor", "CveBanco", "Cuenta", "BBVAAlias"}) + Dim DtCuentasPendientesInterbancarias As DataTable = DtCuentasPendientesTemp.FiltraParametros($" (EstatusPagoElectronicoGrupos IS NULL OR EstatusPagoElectronicoGrupos = False) AND (BancoNombre not like '%BBVA%' AND BancoNombre not like '%BANCOMER%' ) ", "", {"CveCuentaDeposito", "BancoNombre", "CLABEDestino", "Abreviatura", "RazonSocial", "CveProveedor", "CveBanco", "Cuenta", "BBVAAlias"}) + + + Dim ObjGrales As New ClsGenerales If DtCuentasPendientesBancomer.Rows.Count > 0 Then For Each dRow As DataRow In DtCuentasPendientesBancomer.Rows @@ -591,6 +594,7 @@ Partial Class Bancos_PagoElectronicoGrupos If Not ErrorLineaBancomer Then RegistrosAltaBancomer.Append(SBTmpBancomer.ToString) + ObjGrales.UpdateCuentasDepositosEstatusPagoElectronicoGrupos(dRow("CveCuentaDeposito").ToString.ToEntero, True) Else SBErroresBancomer.Append("
") SBErrores.AppendLine(SBErroresBancomer.ToString) @@ -646,7 +650,7 @@ Partial Class Bancos_PagoElectronicoGrupos SBTmpInterbancarias.Append("0999999999999.99") - If dRow("RazonSocial").ToString.Trim.Length <31 Then 'Tamaño maximo 30 + If dRow("RazonSocial").ToString.Trim.Length < 31 Then 'Tamaño maximo 30 SBTmpInterbancarias.Append(dRow("RazonSocial").ToString.PadRight(30, EspacioRelleno)) Else SBTmpInterbancarias.Append(dRow("RazonSocial").ToString.Trim.Substring(0, 30)) @@ -667,6 +671,7 @@ Partial Class Bancos_PagoElectronicoGrupos If Not ErrorLineaInterbancaria Then RegistrosAltaInterbancario.Append(SBTmpInterbancarias.ToString) + ObjGrales.UpdateCuentasDepositosEstatusPagoElectronicoGrupos(dRow("CveCuentaDeposito").ToString.ToEntero, True) Else SBErroresInterBancario.Append("
") SBErrores.AppendLine(SBErroresInterBancario.ToString) @@ -683,6 +688,7 @@ Partial Class Bancos_PagoElectronicoGrupos End If + ObjGrales.Dispose() Dim Mensaje As New StringBuilder @@ -711,6 +717,7 @@ Partial Class Bancos_PagoElectronicoGrupos End If + CargaDatos() End Sub @@ -1091,124 +1098,124 @@ Partial Class Bancos_PagoElectronicoGrupos End Sub - Private Sub GeneraPagoViejo(DTTemp As DataTable, CveBLE As Integer) - If DTTemp.Rows.Count <= 0 Then - Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia) - Exit Sub - End If + 'Private Sub GeneraPagoViejo(DTTemp As DataTable, CveBLE As Integer) + ' If DTTemp.Rows.Count <= 0 Then + ' Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia) + ' Exit Sub + ' End If - 'For Each gvr As DataRow In DTTemp.Rows - ' If gvr("EstatusPagoElectronico").ToString.ToEntero <= 0 Then - ' Alert("Los proveedores tienen que estar dados de alta. Primero de alta a los proveedores") - ' Exit Sub - ' End If - 'Next + ' 'For Each gvr As DataRow In DTTemp.Rows + ' ' If gvr("EstatusPagoElectronico").ToString.ToEntero <= 0 Then + ' ' Alert("Los proveedores tienen que estar dados de alta. Primero de alta a los proveedores") + ' ' Exit Sub + ' ' End If + ' 'Next - 'Comprobamos la cuenta deposito y moneda de las cuentas deposito - For Each dr As DataRow In DTTemp.Rows - If dr("BancoNombre").ToString = "" Then - Alert(String.Format("El Pago '{0}' no tiene Cuenta Deposito Asociada.", dr("Observaciones")), TipoMensaje.MsgError) - Exit Sub - End If + ' 'Comprobamos la cuenta deposito y moneda de las cuentas deposito + ' For Each dr As DataRow In DTTemp.Rows + ' If dr("BancoNombre").ToString = "" Then + ' Alert(String.Format("El Pago '{0}' no tiene Cuenta Deposito Asociada.", dr("Observaciones")), TipoMensaje.MsgError) + ' Exit Sub + ' End If - If dr("MonedaCtaDeposito").ToString = "" Or dr("MonedaCtaDeposito").ToString.ToEntero <= 0 Then - Alert(String.Format("La cuenta deposito '{0}' del proveedor '{1}' no tiene Moneda especificada.", dr("CuentaDeposito"), dr("RazonSocial")), TipoMensaje.MsgError) - Exit Sub - End If - Next + ' If dr("MonedaCtaDeposito").ToString = "" Or dr("MonedaCtaDeposito").ToString.ToEntero <= 0 Then + ' Alert(String.Format("La cuenta deposito '{0}' del proveedor '{1}' no tiene Moneda especificada.", dr("CuentaDeposito"), dr("RazonSocial")), TipoMensaje.MsgError) + ' Exit Sub + ' End If + ' Next - 'Excluimos los registros que no tengan cuenta deposito dada de alta - 'DTTemp = DTTemp.FiltraParametros("EstatusPagoElectronico = 0") + ' 'Excluimos los registros que no tengan cuenta deposito dada de alta + ' 'DTTemp = DTTemp.FiltraParametros("EstatusPagoElectronico = 0") - HeaderTexto = "" - DetalleTexto = "" - TrailerTexto = "" - TotalAcumulado = 0 + ' HeaderTexto = "" + ' DetalleTexto = "" + ' TrailerTexto = "" + ' TotalAcumulado = 0 - 'Insertar en LayoutEnvios - Dim ObjBancos As New ClsBancos - ObjBancos.IniciaTransacSQL() - Dim ErrorLayout = False + ' 'Insertar en LayoutEnvios + ' Dim ObjBancos As New ClsBancos + ' ObjBancos.IniciaTransacSQL() + ' Dim ErrorLayout = False - Dim TotalDetalles As Integer = 0 + ' Dim TotalDetalles As Integer = 0 - 'CREA CARPETA SI NO EXISTE - Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/", UsuarioActual.CveEmpresa)) - Dim exists = System.IO.Directory.Exists(path) - If Not exists Then - System.IO.Directory.CreateDirectory(path) - End If + ' 'CREA CARPETA SI NO EXISTE + ' Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/", UsuarioActual.CveEmpresa)) + ' Dim exists = System.IO.Directory.Exists(path) + ' If Not exists Then + ' System.IO.Directory.CreateDirectory(path) + ' End If - Dim CveIEs = "" - CreaDtPago() + ' Dim CveIEs = "" + ' CreaDtPago() - For Each gvr As DataRow In DTTemp.Rows - If gvr("CveCuentaDeposito").ToString <> "" Then - DTPendienteActual = DTTemp.FiltraParametros(String.Format("CveIE = {0}", gvr("CveIE").ToString)) + ' For Each gvr As DataRow In DTTemp.Rows + ' If gvr("CveCuentaDeposito").ToString <> "" Then + ' DTPendienteActual = DTTemp.FiltraParametros(String.Format("CveIE = {0}", gvr("CveIE").ToString)) - 'ACTUALIZA FECHADOCUMENTO DEL IE - 'If CveBLE > 0 Then - ' ObjBancos.UpdateBancos_IE(Date.Now, Date.Now, DTPendienteActual(0)("CveIE").ToString.ToEntero) - 'End If + ' 'ACTUALIZA FECHADOCUMENTO DEL IE + ' 'If CveBLE > 0 Then + ' ' ObjBancos.UpdateBancos_IE(Date.Now, Date.Now, DTPendienteActual(0)("CveIE").ToString.ToEntero) + ' 'End If - If TotalDetalles > 0 Then - DetalleTexto &= vbCrLf - End If - CrearDetallePagos() - TotalDetalles += 1 - End If - Next + ' If TotalDetalles > 0 Then + ' DetalleTexto &= vbCrLf + ' End If + ' CrearDetallePagos() + ' TotalDetalles += 1 + ' End If + ' Next - FormarTextoPagos(TotalDetalles, TotalAcumulado.ToString.FormatoNumero.Replace(",", "").Replace(".", "")) - CreaArchivo(1) + ' FormarTextoPagos(TotalDetalles, TotalAcumulado.ToString.FormatoNumero.Replace(",", "").Replace(".", "")) + ' CreaArchivo(1) - If CveBLE > 0 Then - 'ACTUALIZAMOS EL ENVIO SI ES REGENERACION - If Not ObjBancos.UpdateLayoutEnvios(CveBLE, Date.Now) Then - ErrorLayout = True - End If + ' If CveBLE > 0 Then + ' 'ACTUALIZAMOS EL ENVIO SI ES REGENERACION + ' If Not ObjBancos.UpdateLayoutEnvios(CveBLE, Date.Now) Then + ' ErrorLayout = True + ' End If - 'GUARDAMOS EL ENVIO SI NO ES REGENERACION - Else + ' 'GUARDAMOS EL ENVIO SI NO ES REGENERACION + ' Else - Dim CveLayoutEnvio = ObjBancos.AddLayoutEnvios(NombreArchivo, Date.Now, CveCuenta) + ' Dim CveLayoutEnvio = ObjBancos.AddLayoutEnvios(NombreArchivo, Date.Now, CveCuenta) - If CveLayoutEnvio > 0 Then - For Each dr As DataRow In DTTemp.Rows - If dr("CveProveedor").ToString <> "" Or dr("CvePersonal").ToString <> "" Then - If Not ObjBancos.AddLayoutEnviosDetalle(CveLayoutEnvio, dr("CveIE").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, 1, "Observaciones") Then - ErrorLayout = True - End If - End If - Next - Else - ErrorLayout = True - End If + ' If CveLayoutEnvio > 0 Then + ' For Each dr As DataRow In DTTemp.Rows + ' If dr("CveProveedor").ToString <> "" Or dr("CvePersonal").ToString <> "" Then + ' If Not ObjBancos.AddLayoutEnviosDetalle(CveLayoutEnvio, dr("CveIE").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, 1, "Observaciones") Then + ' ErrorLayout = True + ' End If + ' End If + ' Next + ' Else + ' ErrorLayout = True + ' End If - End If + ' End If - If Not ErrorLayout Then - ObjBancos.Commit() - ObjBancos.Dispose() + ' If Not ErrorLayout Then + ' ObjBancos.Commit() + ' ObjBancos.Dispose() - Dim Des = String.Format("{0}Layout\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo) - Dim Descargas As New StringBuilder() - Descargas.AppendFormat("
  • TXT
  • ", NombreArchivo) - ' Descargas.AppendFormat("
  • Reporte
  • ", NombreArchivo) - Descargas.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) + ' Dim Des = String.Format("{0}Layout\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo) + ' Dim Descargas As New StringBuilder() + ' Descargas.AppendFormat("
  • TXT
  • ", NombreArchivo) + ' ' Descargas.AppendFormat("
  • Reporte
  • ", NombreArchivo) + ' Descargas.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) - Alert(String.Format("
    El Layout fue creado satisfactoriamente.


    Descargas:
      {0}
    ", Descargas), TipoMensaje.MsgInformacion) - 'Alert("El Layout fue creado satisfactoriamente") - Else - ObjBancos.RollBack() - ObjBancos.Dispose() - Alert("Ocurrio un problema al registrar la creacion del Layout. Por favor vuelva a intentar.", TipoMensaje.MsgError) - End If + ' Alert(String.Format("
    El Layout fue creado satisfactoriamente.


    Descargas:
      {0}
    ", Descargas), TipoMensaje.MsgInformacion) + ' 'Alert("El Layout fue creado satisfactoriamente") + ' Else + ' ObjBancos.RollBack() + ' ObjBancos.Dispose() + ' Alert("Ocurrio un problema al registrar la creacion del Layout. Por favor vuelva a intentar.", TipoMensaje.MsgError) + ' End If - End Sub + 'End Sub Protected Sub CrearDetallePagos() 'Dim Resultado = True @@ -1327,240 +1334,240 @@ Partial Class Bancos_PagoElectronicoGrupos DtAlta.Columns.Add("MensajeAdicional", GetType(String)) DtAlta.Columns.Add("Moneda", GetType(String)) - End Sub - - - Protected Sub BtnCargarAlta_Click(sender As Object, e As EventArgs) - Dim ErrorArchivo = False - - If FUTxt.HasFile Then - If Not GuardaTXT() Then - Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError) - Exit Sub - End If - Else - Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - - 'LEE TXT - Dim Texto As String - - Dim sr As New System.IO.StreamReader(NombreArchivo) - Texto = sr.ReadToEnd() - sr.Close() - - Dim TextoArreglo() = Texto.Split(CChar(vbCrLf)) - - 'Alert(TextoArreglo.Length.ToString) - - 'LEE LINEA POR LINEA - Dim RespuestaHeader = "", RespuestaDetalle = "", RespuestaTrailer = "", CveCuentasDeposito = "" - CreaDtAlta() - Dim ObjGrales As New ClsGenerales - Dim Row As DataRow = Nothing - Dim TipoCuentaDeposito = "" - - For i = 0 To TextoArreglo.Length - 1 Step 1 - 'Valida que el primer renglon sea el HEADER - If i = 0 Then - If TextoArreglo(i).Substring(0, 1) <> "H" Then - ErrorArchivo = True - Exit For - Else - RespuestaHeader = TextoArreglo(i).Substring(50, 2) - End If - Else - 'LEE DETALLE - If TextoArreglo(i).Length > 1 Then - If TextoArreglo(i).Substring(1, 1) = "D" Then - - 'If i > 1 Then - ' RespuestaDetalle += vbCrLf - 'End If - - 'RespuestaDetalle += String.Format("{0}{1}", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30))) - - ''Guardo CveCuentaDeposito cuando la operacion salio exitosa para actualizar en la DB - If TextoArreglo(i).Substring(597, 2) = "00" Or TextoArreglo(i).Substring(597, 2) = "34" Then - CveCuentasDeposito += If(CveCuentasDeposito <> "", ",", "") - CveCuentasDeposito += TextoArreglo(i).Substring(3, 30).ToEntero.ToString - End If - - - ''LLENA DT PARA REPORTE - Row = DtAlta.NewRow() - - Row("Proveedor") = If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim) - - 'BANCO - If ObjGrales.GetCuentasDepositos(CveCuentaDeposito:=TextoArreglo(i).Substring(3, 30).ToEntero) Then - If ObjGrales.DtResultados.Rows.Count = 1 Then - Row("Banco") = ObjGrales.DtResultados.Rows(0)("BancoNombre").ToString - Else - ErrorArchivo = True - Exit For - End If - Else - ErrorArchivo = True - Exit For - End If - - 'CUENTA - If TextoArreglo(i).Substring(41, 2).Trim <> "" Then - Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)) - ElseIf TextoArreglo(i).Substring(81, 2).Trim <> "" Then - Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(83, 35).TrimStart("0"c)) - Row("TipoCuenta") = "CLABE" - Else - ErrorArchivo = True - Exit For - End If - - 'TIPO CUENTA - If Row("TipoCuenta").ToString = "" Then - If String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 8 Then - Row("TipoCuenta") = "CIE" - ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 10 Or String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 9 Then - Row("TipoCuenta") = "Cuenta" - ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 18 Then - Row("TipoCuenta") = "CLABE" - End If - End If - - Row("Estatus") = TextoArreglo(i).Substring(599, 30) - - DtAlta.Rows.Add(Row) - - ''LLENA PARA ALERT - 'If i > 1 Then - ' RespuestaDetalle += vbCrLf - 'End If - - 'RespuestaDetalle += String.Format("{0}{1}", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30))) - - - 'LEE TRAILER - ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then - RespuestaTrailer = TextoArreglo(i).Substring(32, 10) - RespuestaTrailer += vbCrLf - RespuestaTrailer += TextoArreglo(i).Substring(42, 10) - RespuestaTrailer += vbCrLf - RespuestaTrailer += TextoArreglo(i).Substring(52, 10) - Exit For - Else - ErrorArchivo = True - Exit For - End If - End If - End If - Next - ObjGrales.Dispose() - - - Dim Respuesta As New StringBuilder - 'LEE ARCHIVO - If Not ErrorArchivo Then - 'TRADUCE CODIGO RESPUESTA HEADER - If RespuestaHeader = "01" Then - RespuestaHeader = "ACEPTADO TOTAL" - ElseIf RespuestaHeader = "02" Then - RespuestaHeader = "ACEPTADO PARCIAL" - ElseIf RespuestaHeader = "03" Then - RespuestaHeader = "RECHAZADO" - End If - - 'DIVIDE DETALLE - Dim Detalle() = RespuestaDetalle.Split(CChar(vbCrLf)) - - 'DIVIDE TRAILER - Dim Trailer() = RespuestaTrailer.Split(CChar(vbCrLf)) - - 'ARMADO DE RESPUESTA - Respuesta.AppendFormat("
    Resumen de respuesta: {0}
    ", RespuestaHeader) - Respuesta.AppendFormat("Numero de movimientos: {0}


    ", DtAlta.Rows.Count) - Respuesta.Append("------------------------------ Detalle de los movimientos ------------------------------
    ") - - Respuesta.Append("") - 'For i = 0 To Detalle.Length - 1 - ' Respuesta.AppendFormat("{1}", i + 1, Detalle(i).Trim) - 'Next - Dim i = 1 - Dim Style = "" - Dim TotalExitos = 0, TotalFracasos = 0 - For Each dr As DataRow In DtAlta.Rows - - If dr("estatus").ToString.Trim.Contiene("OPERACION EXITOSA", "ALTA TERCERO EXITOSO") Then - Style = "" - TotalExitos += 1 - Else - Style = "style=""background-color:#FF5F5F;"" " - TotalFracasos += 1 - End If - - Respuesta.AppendFormat("", i, dr("Proveedor"), dr("Banco"), dr("TipoCuenta"), dr("Cuenta"), dr("estatus"), Style) - i += 1 - Next - - Respuesta.Append("
    #ProveedorBancoTipo CuentaCuentaEstatus
    {0}
    {0}{1}{2}{3}{4}{5}
    -------------------------------------------------------------------------------------
    ") - - Respuesta.AppendFormat("Total de movimientos exitosos: {0}
    ", TotalExitos) - Respuesta.AppendFormat("Total de movimientos NO exitosos: {0}
    ", TotalFracasos) - - 'LEE DESDE EL LAYOUT - 'Respuesta.AppendFormat("Total de altas rechazadas: {0}
    ", Trailer(0).ToString.ToEntero) - 'Respuesta.AppendFormat("Total de bajas rechazadas: {0}
    ", Trailer(1).ToString.ToEntero) - 'Respuesta.AppendFormat("Total de cambios rechazados: {0}
    ", Trailer(2).ToString.ToEntero) - - End If - - If Not ErrorArchivo Then - - If CveCuentasDeposito <> "" Then - Dim ObjIE As New ClsBancos - Dim ErrorDB = False - ObjIE.IniciaTransacSQL() - Dim ArrayCuentasDeposito() = CveCuentasDeposito.Split(","c) - - For index = 0 To ArrayCuentasDeposito.Length - 1 - If Not ObjIE.UpdateCuentaDepositoPagoElectronico(ArrayCuentasDeposito(index).ToEntero) Then - ErrorDB = True - End If - Next - - If Not ErrorDB Then - ObjIE.Commit() - Respuesta.Append("

    NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.") - 'Respuesta.AppendFormat("
    Descargar reporte", NombreArchivo) - Respuesta.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) - - Alert(Respuesta.ToString, TipoMensaje.MsgInformacion) - Else - ObjIE.RollBack() - Respuesta.Append("

    NOTA: El archivo se analizo correctamente pero ocurrio un problema al efectuar los cambios en el sistema. Por favor vuelta a intentar.") - Alert(Respuesta.ToString, TipoMensaje.MsgError) - End If - - ObjIE.Dispose() - Else - Respuesta.AppendFormat("

    NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.") - 'Respuesta.AppendFormat("
    Descargar reporte", NombreArchivo) - Respuesta.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) - - Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia) - End If - - Else - Alert("Ocurrio un problema al leer el archivo. Por favor revise que el archivo sea el correcto e intente de nuevo.", TipoMensaje.MsgError) - End If - - 'ELIMINA TXT - My.Computer.FileSystem.DeleteFile(NombreArchivo) - - RecargaDatos() - End Sub + + + 'Protected Sub BtnCargarAlta_Click(sender As Object, e As EventArgs) + ' Dim ErrorArchivo = False + + ' If FUTxt.HasFile Then + ' If Not GuardaTXT() Then + ' Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError) + ' Exit Sub + ' End If + ' Else + ' Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia) + ' Exit Sub + ' End If + + + ' 'LEE TXT + ' Dim Texto As String + + ' Dim sr As New System.IO.StreamReader(NombreArchivo) + ' Texto = sr.ReadToEnd() + ' sr.Close() + + ' Dim TextoArreglo() = Texto.Split(CChar(vbCrLf)) + + ' 'Alert(TextoArreglo.Length.ToString) + + ' 'LEE LINEA POR LINEA + ' Dim RespuestaHeader = "", RespuestaDetalle = "", RespuestaTrailer = "", CveCuentasDeposito = "" + ' CreaDtAlta() + ' Dim ObjGrales As New ClsGenerales + ' Dim Row As DataRow = Nothing + ' Dim TipoCuentaDeposito = "" + + ' For i = 0 To TextoArreglo.Length - 1 Step 1 + ' 'Valida que el primer renglon sea el HEADER + ' If i = 0 Then + ' If TextoArreglo(i).Substring(0, 1) <> "H" Then + ' ErrorArchivo = True + ' Exit For + ' Else + ' RespuestaHeader = TextoArreglo(i).Substring(50, 2) + ' End If + ' Else + ' 'LEE DETALLE + ' If TextoArreglo(i).Length > 1 Then + ' If TextoArreglo(i).Substring(1, 1) = "D" Then + + ' 'If i > 1 Then + ' ' RespuestaDetalle += vbCrLf + ' 'End If + + ' 'RespuestaDetalle += String.Format("{0}{1}", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30))) + + ' ''Guardo CveCuentaDeposito cuando la operacion salio exitosa para actualizar en la DB + ' If TextoArreglo(i).Substring(597, 2) = "00" Or TextoArreglo(i).Substring(597, 2) = "34" Then + ' CveCuentasDeposito += If(CveCuentasDeposito <> "", ",", "") + ' CveCuentasDeposito += TextoArreglo(i).Substring(3, 30).ToEntero.ToString + ' End If + + + ' ''LLENA DT PARA REPORTE + ' Row = DtAlta.NewRow() + + ' Row("Proveedor") = If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim) + + ' 'BANCO + ' If ObjGrales.GetCuentasDepositos(CveCuentaDeposito:=TextoArreglo(i).Substring(3, 30).ToEntero) Then + ' If ObjGrales.DtResultados.Rows.Count = 1 Then + ' Row("Banco") = ObjGrales.DtResultados.Rows(0)("BancoNombre").ToString + ' Else + ' ErrorArchivo = True + ' Exit For + ' End If + ' Else + ' ErrorArchivo = True + ' Exit For + ' End If + + ' 'CUENTA + ' If TextoArreglo(i).Substring(41, 2).Trim <> "" Then + ' Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)) + ' ElseIf TextoArreglo(i).Substring(81, 2).Trim <> "" Then + ' Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(83, 35).TrimStart("0"c)) + ' Row("TipoCuenta") = "CLABE" + ' Else + ' ErrorArchivo = True + ' Exit For + ' End If + + ' 'TIPO CUENTA + ' If Row("TipoCuenta").ToString = "" Then + ' If String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 8 Then + ' Row("TipoCuenta") = "CIE" + ' ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 10 Or String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 9 Then + ' Row("TipoCuenta") = "Cuenta" + ' ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 18 Then + ' Row("TipoCuenta") = "CLABE" + ' End If + ' End If + + ' Row("Estatus") = TextoArreglo(i).Substring(599, 30) + + ' DtAlta.Rows.Add(Row) + + ' ''LLENA PARA ALERT + ' 'If i > 1 Then + ' ' RespuestaDetalle += vbCrLf + ' 'End If + + ' 'RespuestaDetalle += String.Format("{0}{1}", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30))) + + + ' 'LEE TRAILER + ' ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then + ' RespuestaTrailer = TextoArreglo(i).Substring(32, 10) + ' RespuestaTrailer += vbCrLf + ' RespuestaTrailer += TextoArreglo(i).Substring(42, 10) + ' RespuestaTrailer += vbCrLf + ' RespuestaTrailer += TextoArreglo(i).Substring(52, 10) + ' Exit For + ' Else + ' ErrorArchivo = True + ' Exit For + ' End If + ' End If + ' End If + ' Next + ' ObjGrales.Dispose() + + + ' Dim Respuesta As New StringBuilder + ' 'LEE ARCHIVO + ' If Not ErrorArchivo Then + ' 'TRADUCE CODIGO RESPUESTA HEADER + ' If RespuestaHeader = "01" Then + ' RespuestaHeader = "ACEPTADO TOTAL" + ' ElseIf RespuestaHeader = "02" Then + ' RespuestaHeader = "ACEPTADO PARCIAL" + ' ElseIf RespuestaHeader = "03" Then + ' RespuestaHeader = "RECHAZADO" + ' End If + + ' 'DIVIDE DETALLE + ' Dim Detalle() = RespuestaDetalle.Split(CChar(vbCrLf)) + + ' 'DIVIDE TRAILER + ' Dim Trailer() = RespuestaTrailer.Split(CChar(vbCrLf)) + + ' 'ARMADO DE RESPUESTA + ' Respuesta.AppendFormat("
    Resumen de respuesta: {0}
    ", RespuestaHeader) + ' Respuesta.AppendFormat("Numero de movimientos: {0}


    ", DtAlta.Rows.Count) + ' Respuesta.Append("------------------------------ Detalle de los movimientos ------------------------------
    ") + + ' Respuesta.Append("") + ' 'For i = 0 To Detalle.Length - 1 + ' ' Respuesta.AppendFormat("{1}", i + 1, Detalle(i).Trim) + ' 'Next + ' Dim i = 1 + ' Dim Style = "" + ' Dim TotalExitos = 0, TotalFracasos = 0 + ' For Each dr As DataRow In DtAlta.Rows + + ' If dr("estatus").ToString.Trim.Contiene("OPERACION EXITOSA", "ALTA TERCERO EXITOSO") Then + ' Style = "" + ' TotalExitos += 1 + ' Else + ' Style = "style=""background-color:#FF5F5F;"" " + ' TotalFracasos += 1 + ' End If + + ' Respuesta.AppendFormat("", i, dr("Proveedor"), dr("Banco"), dr("TipoCuenta"), dr("Cuenta"), dr("estatus"), Style) + ' i += 1 + ' Next + + ' Respuesta.Append("
    #ProveedorBancoTipo CuentaCuentaEstatus
    {0}
    {0}{1}{2}{3}{4}{5}
    -------------------------------------------------------------------------------------
    ") + + ' Respuesta.AppendFormat("Total de movimientos exitosos: {0}
    ", TotalExitos) + ' Respuesta.AppendFormat("Total de movimientos NO exitosos: {0}
    ", TotalFracasos) + + ' 'LEE DESDE EL LAYOUT + ' 'Respuesta.AppendFormat("Total de altas rechazadas: {0}
    ", Trailer(0).ToString.ToEntero) + ' 'Respuesta.AppendFormat("Total de bajas rechazadas: {0}
    ", Trailer(1).ToString.ToEntero) + ' 'Respuesta.AppendFormat("Total de cambios rechazados: {0}
    ", Trailer(2).ToString.ToEntero) + + ' End If + + ' If Not ErrorArchivo Then + + ' If CveCuentasDeposito <> "" Then + ' Dim ObjIE As New ClsBancos + ' Dim ErrorDB = False + ' ObjIE.IniciaTransacSQL() + ' Dim ArrayCuentasDeposito() = CveCuentasDeposito.Split(","c) + + ' For index = 0 To ArrayCuentasDeposito.Length - 1 + ' If Not ObjIE.UpdateCuentaDepositoPagoElectronico(ArrayCuentasDeposito(index).ToEntero) Then + ' ErrorDB = True + ' End If + ' Next + + ' If Not ErrorDB Then + ' ObjIE.Commit() + ' Respuesta.Append("

    NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.") + ' 'Respuesta.AppendFormat("
    Descargar reporte", NombreArchivo) + ' Respuesta.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) + + ' Alert(Respuesta.ToString, TipoMensaje.MsgInformacion) + ' Else + ' ObjIE.RollBack() + ' Respuesta.Append("

    NOTA: El archivo se analizo correctamente pero ocurrio un problema al efectuar los cambios en el sistema. Por favor vuelta a intentar.") + ' Alert(Respuesta.ToString, TipoMensaje.MsgError) + ' End If + + ' ObjIE.Dispose() + ' Else + ' Respuesta.AppendFormat("

    NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.") + ' 'Respuesta.AppendFormat("
    Descargar reporte", NombreArchivo) + ' Respuesta.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) + + ' Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia) + ' End If + + ' Else + ' Alert("Ocurrio un problema al leer el archivo. Por favor revise que el archivo sea el correcto e intente de nuevo.", TipoMensaje.MsgError) + ' End If + + ' 'ELIMINA TXT + ' My.Computer.FileSystem.DeleteFile(NombreArchivo) + + ' RecargaDatos() + + 'End Sub #End Region #Region "CARGA PAGO PROVEEDORES" @@ -1580,544 +1587,766 @@ Partial Class Bancos_PagoElectronicoGrupos DtPago.Columns.Add("FechaOperacion", GetType(String)) - End Sub - - - Protected Sub BtnCargarPago_Click(sender As Object, e As System.EventArgs) - Dim ErrorArchivo = False - Dim TextoErrorArchivo = "Ocurrió un problema al leer el archivo, por favor revise que el archivo sea el correcto e intente de nuevo." - - If FUTxt.HasFile Then - If Not GuardaTXT() Then - Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError) - Exit Sub - End If - Else - Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - - 'LEE TXT - Dim Texto As String - Dim sr As New System.IO.StreamReader(NombreArchivo) - Texto = sr.ReadToEnd() - sr.Close() - Dim TextoArreglo() = Texto.Split(CChar(vbCrLf)) - - 'INICIALIZA VARIABLES - Dim ObjBancos As New ClsBancos - Dim RespuestaHeader = "", RespuestaDetalle = "", RespuestaTrailer = "", Proveedor = "", CuentaAbono = "", Estatus = "", CveIEs = "", EstatusIEs = "", FechaMovto = "", Correos = "" - Dim Row As DataRow = Nothing - Dim Convenio = "" - CreaDtPago() - - 'LEE LINEA POR LINEA - For i = 0 To TextoArreglo.Length - 1 - 'Valida que el primer renglon sea el HEADER - If i = 0 Then - If TextoArreglo(i).Substring(0, 1) <> "H" Then - ErrorArchivo = True - Exit For - Else - ' Codigo de respuesta | Cuenta cargo - RespuestaHeader = String.Format("{0}|{1}", TextoArreglo(i).Substring(52, 2), TextoArreglo(i).Substring(77, 35)) - Convenio = TextoArreglo(i).Substring(2, 9) - End If - Else - If TextoArreglo(i).Length > 1 Then - - 'LEE DETALLE - If TextoArreglo(i).Substring(1, 1) = "D" Then - If i > 1 Then - RespuestaDetalle += vbCrLf - End If - - 'TRUENA PORQUE AHORA ES LA CVECUENTADEPOSITO - 'Proveedor = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveProveedor = {0}", TextoArreglo(i).Substring(24, 30).ToEntero)).Rows(0)("RazonSocial").ToString - - Correos += If(Correos <> "", "|", "") - - If ObjBancos.GetProveedorCuentaDeposito(TextoArreglo(i).Substring(24, 30).ToDouble.ToEntero) Then - If ObjBancos.DtResultados.Rows.Count > 0 Then - - Proveedor = ObjBancos.DtResultados.Rows(0)("RazonSocial").ToString - - 'Correos += If(TextoArreglo(i).Substring(477, 50).Trim = "", "-1", TextoArreglo(i).Substring(477, 50).Trim) - Correos += String.Format("{0};{1}", ObjBancos.DtResultados.Rows(0)("NotificarA").ToString, ObjBancos.DtResultados.Rows(0)("ContactoMailCobranza").ToString) - - - ''SELECCIONA CUENTA ABONO PARA CORREO - Select Case TextoArreglo(i).Substring(57, 1).ToEntero - Case 1 - CuentaAbono = "NO APLICA" - Case 2 - CuentaAbono = If(ObjBancos.DtResultados.Rows(0)("Cuenta").ToString <> "", ObjBancos.DtResultados.Rows(0)("Cuenta").ToString, ObjBancos.DtResultados.Rows(0)("CLABE").ToString) - Case 3 - CuentaAbono = ObjBancos.DtResultados.Rows(0)("CIE").ToString - Case 4 - CuentaAbono = ObjBancos.DtResultados.Rows(0)("SWIFT").ToString - Case 5, 6, 7 - CuentaAbono = ObjBancos.DtResultados.Rows(0)("CLABE").ToString - End Select - - Else - Proveedor = "PROVEEDOR NO ENCONTRADO" - End If - Else - Proveedor = "PROVEEDOR NO ENCONTRADO" - End If - - Estatus = If(TextoArreglo(i).Substring(1325, 2) = "00", "OPERACION EXITOSA: ", "OPERACION FALLIDA: ") - ' Proveedor | Importe | Descripcion estatus - RespuestaDetalle += String.Format("{0}{1}.{2} {5}{3}{4}", Proveedor, TextoArreglo(i).Substring(445, 13).ToDouble.ToEntero, TextoArreglo(i).Substring(458, 2).ToEntero, Estatus, TextoArreglo(i).Substring(1327, 30), TextoArreglo(i).Substring(420, 3)) - - ''Guardo CveIE cuando la operacion salio exitosa para actualizar en la DB el IE - 'If TextoArreglo(i).Substring(1325, 2) = "00" Then - CveIEs += If(CveIEs <> "", ",", "") - 'VIEJO IE EN CAMPO 9 - 'CveIEs += TextoArreglo(i).Substring(83, 10).Trim - CveIEs += TextoArreglo(i).Substring(123, 32).Trim - - 'SI VIENE SIN RESPUESTA ES ERROR DE ARCHIVO - If TextoArreglo(i).Substring(1325, 2).Trim = "" Then - ErrorArchivo = True - TextoErrorArchivo = "El archivo que se intento procesar no es de respuesta. Por favor verifique cargar el archivo correcto." - Exit For - End If - - EstatusIEs += If(EstatusIEs <> "", ",", "") - EstatusIEs += If(TextoArreglo(i).Substring(1325, 2) = "00", "2", "3") - - FechaMovto += If(FechaMovto <> "", ",", "") - FechaMovto += TextoArreglo(i).Substring(540, 10) - - 'If Proveedor = "PROVEEDOR NO ENCONTRADO" Or CuentaAbono = "" Then - ' Continue For - 'End If - - - ''LLENA DTPAGOS PARA CORREO - Row = DtPago.NewRow() - Row("NumeroConvenio") = Convenio - Row("ClaveProveedor") = TextoArreglo(i).Substring(24, 30) - Row("Proveedor") = Proveedor - Row("ReferenciaPago") = TextoArreglo(i).Substring(4, 20) - Row("Cuenta") = CuentaAbono - - Select Case TextoArreglo(i).Substring(57, 1).ToEntero - Case 1 - Row("TipoPago") = "1 .- ABONO EN VENTANILLA" - Case 2 - Row("TipoPago") = "2 .- ABONO A CUENTAS BANCOMER" - Case 3 - Row("TipoPago") = "3 .- ABONO A CONVENIO CIE" - Case 4 - Row("TipoPago") = "4 .- ABONO A CUENTA INTERNACIONAL VIA SWIFT" - Case 5 - Row("TipoPago") = "5 .- ABONO A CUENTA INTERBANCARIA DIA SIGUIENTE" - Case 6 - Row("TipoPago") = "6 .- ABONO A CUENTA INTERBANCARIA MISMO DIA" - Case 7 - Row("TipoPago") = "7 .- ABONO A CUENTA INTERNACIONAL VIA ACH" - End Select - - Try - Row("Cuenta") = If(Row("Cuenta").ToString = "", String.Format("******{0}", CuentaAbono.Substring(CuentaAbono.Length - 4, 4)), Row("Cuenta").ToString) - Catch ex As Exception - Row("Cuenta") = "******" - End Try - - Row("Importe") = String.Format("{0}.{1}", TextoArreglo(i).Substring(445, 13), TextoArreglo(i).Substring(458, 2)).ToDecimal.ToString - Row("FechaOperacion") = TextoArreglo(i).Substring(540, 10) - Row("Observaciones") = TextoArreglo(i).Substring(605, 700).Trim - DtPago.Rows.Add(Row) - - 'End If - - 'LEE TRAILER - ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then - - 'PARA BCOM, YA QUE TRUNCA EL STRING CUANDO SOLO ES MXP - If TextoArreglo(i).Length < 1367 Then - TextoArreglo(i) = TextoArreglo(i).PadRight(1367) - End If - - RespuestaTrailer += "------------------------------------------------------------ RESUMEN ------------------------------------------------------------" - RespuestaTrailer += String.Format("") - RespuestaTrailer += String.Format("", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(327, 10).ToDouble.ToEntero.ToString) - RespuestaTrailer += String.Format("", TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(337, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(350, 2).ToDouble.ToEntero.ToString) - RespuestaTrailer += String.Format("", TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(302, 10).ToDouble.ToEntero.ToString) - RespuestaTrailer += String.Format("
    ConceptoPesos (MXP)Dolares (USD)
    Total registros rechazados:{0}{1}
    Total Importe rechazado: $:{0}.{1}{2}.{3}
    Total registros aceptados:{0}{1}
    Total Importe aceptado $:{0}.{1}{2}.{3}
    ", TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(312, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(325, 2).ToDouble.ToEntero.ToString) - - 'RespuestaTrailer += String.Format("Total registros rechazados: {1}{0} Total Importe rechazado: $ {2}.{3}{0} Total registros aceptados: {4}{0} Total Importe aceptado: $ {5}.{6}{0}", "
    ", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToEntero.ToString) - Else - ErrorArchivo = True - Exit For - End If - End If - End If - Next - - ObjBancos.Dispose() - - Dim Respuesta As New StringBuilder - If Not ErrorArchivo Then - - 'DIVIDE HEADER - Dim Header() = RespuestaHeader.Split(CChar("|")) - 'TRADUCE CODIGO RESPUESTA HEADER - If Header(0) = "01" Then - RespuestaHeader = "ACEPTADO TOTAL" - ElseIf Header(0) = "02" Then - RespuestaHeader = "ACEPTADO PARCIAL" - ElseIf Header(0) = "03" Then - RespuestaHeader = "RECHAZADO" - End If - RespuestaHeader += String.Format("
    Cuenta Cargo: {0}", Header(1)) - - 'DIVIDE DETALLE - Dim Detalle() = RespuestaDetalle.Split(CChar(vbCrLf)) - - 'ARMADO DE RESPUESTA - Respuesta.AppendFormat("
    Resumen de respuesta: {0}
    ", RespuestaHeader) - Respuesta.AppendFormat("Numero de movimientos: {0}

    ", Detalle.Length.ToString) - Respuesta.Append("----------------------------------------------------- Detalle de los movimientos --------------------------------------------------
    ") - Respuesta.Append("") - For i = 0 To Detalle.Length - 1 - Respuesta.AppendFormat("{1}", i + 1, Detalle(i).Trim) - Next - Respuesta.Append("
    #ProveedorImporte($)MonedaEstatus
    {0}
    ----------------------------------------------------------------------------------------------------------------------
    ") - Respuesta.AppendFormat(RespuestaTrailer) - - - End If - - If Not ErrorArchivo Then - If CveIEs <> "" Then - Dim ObjIE As New ClsBancos - Dim ErrorDB = False - ObjIE.IniciaTransacSQL() - Dim ArrayCveIEs() = CveIEs.Split(","c) - Dim ArrayEstatusIEs() = EstatusIEs.Split(","c) - Dim ArrayFechasMovto() = FechaMovto.Split(","c) - Dim ArrayCorreos() = Correos.Split("|"c) - - Dim ArregloHilos As New Generic.List(Of System.Threading.Thread) - Dim ArregloParametros As New Generic.List(Of List(Of String)) - - For index = 0 To ArrayCveIEs.Length - 1 - If ObjIE.UpdatePagoElectronicoCarga(ArrayCveIEs(index).ToEntero, ArrayEstatusIEs(index).ToEntero) Then - - 'Cuando salio exitoso actualizamos el IE - If ArrayEstatusIEs(index).ToEntero = 2 Then - If ObjIE.UpdateIEPagoElectronico(ArrayCveIEs(index).ToEntero, ArrayFechasMovto(index).ToDate, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then 'DESPROGRAMA LAS COMPRAS RELACIONADAS EN ESTE PA - - 'Cambiamos estatus notificación - If ObjIE.UpdateBancos_IENotificaciones(2, "-1", "-1", ArrayCveIEs(index).ToEntero) Then - - 'Obtenemos los correos del movimiento - If ArrayCorreos(index) <> "-1" Or ArrayCorreos(index) <> "" Then - - 'Dim CorreosMovto() = ArrayCorreos(index).Split(";"c) - 'For index2 = 0 To CorreosMovto.Length - 1 - ' If CorreosMovto(index2).Length > 5 Then - ' End If - 'Next - - Dim Param As New List(Of String) - - Param.Add(ArrayCorreos(index)) 'Para - Param.Add("Notificación de Pago") 'Asunto - Param.Add(GeneraCorreo2(DtPago.Rows(index), ObjIE, ArrayCveIEs(index).ToEntero)) 'Body - - Dim Hilo As New Threading.Thread(AddressOf MandaCorreo) - ArregloHilos.Add(Hilo) - ArregloParametros.Add(Param) - End If - Else - ErrorDB = True - End If - - Else - ErrorDB = True - End If - Else - - 'Cuando salio NO exitoso cancelamos el IE - If Not ObjIE.CancelarBancos_IE(UsuarioActual.CveUsuario, ArrayCveIEs(index).ToEntero, False, -1, -1) Then - ErrorDB = True - End If - End If - - Else - ErrorDB = True - End If - Next - - If Not ErrorDB Then - ObjIE.Commit() - 'ObjIE.RollBack() - - 'EMPIEZA A ENVIAR CORREO POR HILOS - For index = 0 To ArregloHilos.Count - 1 - ArregloHilos(index).Start(ArregloParametros(index)) - Next - - Respuesta.Append("

    NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.") - Alert(Respuesta.ToString, TipoMensaje.MsgInformacion) - - CargaDatos() - Else - ObjIE.RollBack() - Respuesta.Append("

    NOTA: El archivo se analizo correctamente pero ocurrió un problema al efectuar los cambios en el sistema. Por favor vuelva a intentar.") - Alert(Respuesta.ToString, TipoMensaje.MsgError) - End If - - ObjIE.Dispose() - Else - Respuesta.AppendFormat("

    NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.") - Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia) - End If - Else - Alert(TextoErrorArchivo, TipoMensaje.MsgError) - End If - - 'ELIMINA TXT - My.Computer.FileSystem.DeleteFile(NombreArchivo) - - RecargaDatos() - End Sub + + + 'Protected Sub BtnCargarPago_Click(sender As Object, e As System.EventArgs) + ' Dim ErrorArchivo = False + ' Dim TextoErrorArchivo = "Ocurrió un problema al leer el archivo, por favor revise que el archivo sea el correcto e intente de nuevo." + + ' If FUTxt.HasFile Then + ' If Not GuardaTXT() Then + ' Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError) + ' Exit Sub + ' End If + ' Else + ' Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia) + ' Exit Sub + ' End If + + + ' 'LEE TXT + ' Dim Texto As String + ' Dim sr As New System.IO.StreamReader(NombreArchivo) + ' Texto = sr.ReadToEnd() + ' sr.Close() + ' Dim TextoArreglo() = Texto.Split(CChar(vbCrLf)) + + ' 'INICIALIZA VARIABLES + ' Dim ObjBancos As New ClsBancos + ' Dim RespuestaHeader = "", RespuestaDetalle = "", RespuestaTrailer = "", Proveedor = "", CuentaAbono = "", Estatus = "", CveIEs = "", EstatusIEs = "", FechaMovto = "", Correos = "" + ' Dim Row As DataRow = Nothing + ' Dim Convenio = "" + ' CreaDtPago() + + ' 'LEE LINEA POR LINEA + ' For i = 0 To TextoArreglo.Length - 1 + ' 'Valida que el primer renglon sea el HEADER + ' If i = 0 Then + ' If TextoArreglo(i).Substring(0, 1) <> "H" Then + ' ErrorArchivo = True + ' Exit For + ' Else + ' ' Codigo de respuesta | Cuenta cargo + ' RespuestaHeader = String.Format("{0}|{1}", TextoArreglo(i).Substring(52, 2), TextoArreglo(i).Substring(77, 35)) + ' Convenio = TextoArreglo(i).Substring(2, 9) + ' End If + ' Else + ' If TextoArreglo(i).Length > 1 Then + + ' 'LEE DETALLE + ' If TextoArreglo(i).Substring(1, 1) = "D" Then + ' If i > 1 Then + ' RespuestaDetalle += vbCrLf + ' End If + + ' 'TRUENA PORQUE AHORA ES LA CVECUENTADEPOSITO + ' 'Proveedor = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveProveedor = {0}", TextoArreglo(i).Substring(24, 30).ToEntero)).Rows(0)("RazonSocial").ToString + + ' Correos += If(Correos <> "", "|", "") + + ' If ObjBancos.GetProveedorCuentaDeposito(TextoArreglo(i).Substring(24, 30).ToDouble.ToEntero) Then + ' If ObjBancos.DtResultados.Rows.Count > 0 Then + + ' Proveedor = ObjBancos.DtResultados.Rows(0)("RazonSocial").ToString + + ' 'Correos += If(TextoArreglo(i).Substring(477, 50).Trim = "", "-1", TextoArreglo(i).Substring(477, 50).Trim) + ' Correos += String.Format("{0};{1}", ObjBancos.DtResultados.Rows(0)("NotificarA").ToString, ObjBancos.DtResultados.Rows(0)("ContactoMailCobranza").ToString) + + + ' ''SELECCIONA CUENTA ABONO PARA CORREO + ' Select Case TextoArreglo(i).Substring(57, 1).ToEntero + ' Case 1 + ' CuentaAbono = "NO APLICA" + ' Case 2 + ' CuentaAbono = If(ObjBancos.DtResultados.Rows(0)("Cuenta").ToString <> "", ObjBancos.DtResultados.Rows(0)("Cuenta").ToString, ObjBancos.DtResultados.Rows(0)("CLABE").ToString) + ' Case 3 + ' CuentaAbono = ObjBancos.DtResultados.Rows(0)("CIE").ToString + ' Case 4 + ' CuentaAbono = ObjBancos.DtResultados.Rows(0)("SWIFT").ToString + ' Case 5, 6, 7 + ' CuentaAbono = ObjBancos.DtResultados.Rows(0)("CLABE").ToString + ' End Select + + ' Else + ' Proveedor = "PROVEEDOR NO ENCONTRADO" + ' End If + ' Else + ' Proveedor = "PROVEEDOR NO ENCONTRADO" + ' End If + + ' Estatus = If(TextoArreglo(i).Substring(1325, 2) = "00", "OPERACION EXITOSA: ", "OPERACION FALLIDA: ") + ' ' Proveedor | Importe | Descripcion estatus + ' RespuestaDetalle += String.Format("{0}{1}.{2} {5}{3}{4}", Proveedor, TextoArreglo(i).Substring(445, 13).ToDouble.ToEntero, TextoArreglo(i).Substring(458, 2).ToEntero, Estatus, TextoArreglo(i).Substring(1327, 30), TextoArreglo(i).Substring(420, 3)) + + ' ''Guardo CveIE cuando la operacion salio exitosa para actualizar en la DB el IE + ' 'If TextoArreglo(i).Substring(1325, 2) = "00" Then + ' CveIEs += If(CveIEs <> "", ",", "") + ' 'VIEJO IE EN CAMPO 9 + ' 'CveIEs += TextoArreglo(i).Substring(83, 10).Trim + ' CveIEs += TextoArreglo(i).Substring(123, 32).Trim + + ' 'SI VIENE SIN RESPUESTA ES ERROR DE ARCHIVO + ' If TextoArreglo(i).Substring(1325, 2).Trim = "" Then + ' ErrorArchivo = True + ' TextoErrorArchivo = "El archivo que se intento procesar no es de respuesta. Por favor verifique cargar el archivo correcto." + ' Exit For + ' End If + + ' EstatusIEs += If(EstatusIEs <> "", ",", "") + ' EstatusIEs += If(TextoArreglo(i).Substring(1325, 2) = "00", "2", "3") + + ' FechaMovto += If(FechaMovto <> "", ",", "") + ' FechaMovto += TextoArreglo(i).Substring(540, 10) + + ' 'If Proveedor = "PROVEEDOR NO ENCONTRADO" Or CuentaAbono = "" Then + ' ' Continue For + ' 'End If + + + ' ''LLENA DTPAGOS PARA CORREO + ' Row = DtPago.NewRow() + ' Row("NumeroConvenio") = Convenio + ' Row("ClaveProveedor") = TextoArreglo(i).Substring(24, 30) + ' Row("Proveedor") = Proveedor + ' Row("ReferenciaPago") = TextoArreglo(i).Substring(4, 20) + ' Row("Cuenta") = CuentaAbono + + ' Select Case TextoArreglo(i).Substring(57, 1).ToEntero + ' Case 1 + ' Row("TipoPago") = "1 .- ABONO EN VENTANILLA" + ' Case 2 + ' Row("TipoPago") = "2 .- ABONO A CUENTAS BANCOMER" + ' Case 3 + ' Row("TipoPago") = "3 .- ABONO A CONVENIO CIE" + ' Case 4 + ' Row("TipoPago") = "4 .- ABONO A CUENTA INTERNACIONAL VIA SWIFT" + ' Case 5 + ' Row("TipoPago") = "5 .- ABONO A CUENTA INTERBANCARIA DIA SIGUIENTE" + ' Case 6 + ' Row("TipoPago") = "6 .- ABONO A CUENTA INTERBANCARIA MISMO DIA" + ' Case 7 + ' Row("TipoPago") = "7 .- ABONO A CUENTA INTERNACIONAL VIA ACH" + ' End Select + + ' Try + ' Row("Cuenta") = If(Row("Cuenta").ToString = "", String.Format("******{0}", CuentaAbono.Substring(CuentaAbono.Length - 4, 4)), Row("Cuenta").ToString) + ' Catch ex As Exception + ' Row("Cuenta") = "******" + ' End Try + + ' Row("Importe") = String.Format("{0}.{1}", TextoArreglo(i).Substring(445, 13), TextoArreglo(i).Substring(458, 2)).ToDecimal.ToString + ' Row("FechaOperacion") = TextoArreglo(i).Substring(540, 10) + ' Row("Observaciones") = TextoArreglo(i).Substring(605, 700).Trim + ' DtPago.Rows.Add(Row) + + ' 'End If + + ' 'LEE TRAILER + ' ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then + + ' 'PARA BCOM, YA QUE TRUNCA EL STRING CUANDO SOLO ES MXP + ' If TextoArreglo(i).Length < 1367 Then + ' TextoArreglo(i) = TextoArreglo(i).PadRight(1367) + ' End If + + ' RespuestaTrailer += "------------------------------------------------------------ RESUMEN ------------------------------------------------------------" + ' RespuestaTrailer += String.Format("") + ' RespuestaTrailer += String.Format("", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(327, 10).ToDouble.ToEntero.ToString) + ' RespuestaTrailer += String.Format("", TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(337, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(350, 2).ToDouble.ToEntero.ToString) + ' RespuestaTrailer += String.Format("", TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(302, 10).ToDouble.ToEntero.ToString) + ' RespuestaTrailer += String.Format("
    ConceptoPesos (MXP)Dolares (USD)
    Total registros rechazados:{0}{1}
    Total Importe rechazado: $:{0}.{1}{2}.{3}
    Total registros aceptados:{0}{1}
    Total Importe aceptado $:{0}.{1}{2}.{3}
    ", TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(312, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(325, 2).ToDouble.ToEntero.ToString) + + ' 'RespuestaTrailer += String.Format("Total registros rechazados: {1}{0} Total Importe rechazado: $ {2}.{3}{0} Total registros aceptados: {4}{0} Total Importe aceptado: $ {5}.{6}{0}", "
    ", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToEntero.ToString) + ' Else + ' ErrorArchivo = True + ' Exit For + ' End If + ' End If + ' End If + ' Next + + ' ObjBancos.Dispose() + + ' Dim Respuesta As New StringBuilder + ' If Not ErrorArchivo Then + + ' 'DIVIDE HEADER + ' Dim Header() = RespuestaHeader.Split(CChar("|")) + ' 'TRADUCE CODIGO RESPUESTA HEADER + ' If Header(0) = "01" Then + ' RespuestaHeader = "ACEPTADO TOTAL" + ' ElseIf Header(0) = "02" Then + ' RespuestaHeader = "ACEPTADO PARCIAL" + ' ElseIf Header(0) = "03" Then + ' RespuestaHeader = "RECHAZADO" + ' End If + ' RespuestaHeader += String.Format("
    Cuenta Cargo: {0}", Header(1)) + + ' 'DIVIDE DETALLE + ' Dim Detalle() = RespuestaDetalle.Split(CChar(vbCrLf)) + + ' 'ARMADO DE RESPUESTA + ' Respuesta.AppendFormat("
    Resumen de respuesta: {0}
    ", RespuestaHeader) + ' Respuesta.AppendFormat("Numero de movimientos: {0}

    ", Detalle.Length.ToString) + ' Respuesta.Append("----------------------------------------------------- Detalle de los movimientos --------------------------------------------------
    ") + ' Respuesta.Append("") + ' For i = 0 To Detalle.Length - 1 + ' Respuesta.AppendFormat("{1}", i + 1, Detalle(i).Trim) + ' Next + ' Respuesta.Append("
    #ProveedorImporte($)MonedaEstatus
    {0}
    ----------------------------------------------------------------------------------------------------------------------
    ") + ' Respuesta.AppendFormat(RespuestaTrailer) + + + ' End If + + ' If Not ErrorArchivo Then + ' If CveIEs <> "" Then + ' Dim ObjIE As New ClsBancos + ' Dim ErrorDB = False + ' ObjIE.IniciaTransacSQL() + ' Dim ArrayCveIEs() = CveIEs.Split(","c) + ' Dim ArrayEstatusIEs() = EstatusIEs.Split(","c) + ' Dim ArrayFechasMovto() = FechaMovto.Split(","c) + ' Dim ArrayCorreos() = Correos.Split("|"c) + + ' Dim ArregloHilos As New Generic.List(Of System.Threading.Thread) + ' Dim ArregloParametros As New Generic.List(Of List(Of String)) + + ' For index = 0 To ArrayCveIEs.Length - 1 + ' If ObjIE.UpdatePagoElectronicoCarga(ArrayCveIEs(index).ToEntero, ArrayEstatusIEs(index).ToEntero) Then + + ' 'Cuando salio exitoso actualizamos el IE + ' If ArrayEstatusIEs(index).ToEntero = 2 Then + ' If ObjIE.UpdateIEPagoElectronico(ArrayCveIEs(index).ToEntero, ArrayFechasMovto(index).ToDate, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then 'DESPROGRAMA LAS COMPRAS RELACIONADAS EN ESTE PA + + ' 'Cambiamos estatus notificación + ' If ObjIE.UpdateBancos_IENotificaciones(2, "-1", "-1", ArrayCveIEs(index).ToEntero) Then + + ' 'Obtenemos los correos del movimiento + ' If ArrayCorreos(index) <> "-1" Or ArrayCorreos(index) <> "" Then + + ' 'Dim CorreosMovto() = ArrayCorreos(index).Split(";"c) + ' 'For index2 = 0 To CorreosMovto.Length - 1 + ' ' If CorreosMovto(index2).Length > 5 Then + ' ' End If + ' 'Next + + ' Dim Param As New List(Of String) + + ' Param.Add(ArrayCorreos(index)) 'Para + ' Param.Add("Notificación de Pago") 'Asunto + ' Param.Add(GeneraCorreo2(DtPago.Rows(index), ObjIE, ArrayCveIEs(index).ToEntero)) 'Body + + ' Dim Hilo As New Threading.Thread(AddressOf MandaCorreo) + ' ArregloHilos.Add(Hilo) + ' ArregloParametros.Add(Param) + ' End If + ' Else + ' ErrorDB = True + ' End If + + ' Else + ' ErrorDB = True + ' End If + ' Else + + ' 'Cuando salio NO exitoso cancelamos el IE + ' If Not ObjIE.CancelarBancos_IE(UsuarioActual.CveUsuario, ArrayCveIEs(index).ToEntero, False, -1, -1) Then + ' ErrorDB = True + ' End If + ' End If + + ' Else + ' ErrorDB = True + ' End If + ' Next + + ' If Not ErrorDB Then + ' ObjIE.Commit() + ' 'ObjIE.RollBack() + + ' 'EMPIEZA A ENVIAR CORREO POR HILOS + ' For index = 0 To ArregloHilos.Count - 1 + ' ArregloHilos(index).Start(ArregloParametros(index)) + ' Next + + ' Respuesta.Append("

    NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.") + ' Alert(Respuesta.ToString, TipoMensaje.MsgInformacion) + + ' CargaDatos() + ' Else + ' ObjIE.RollBack() + ' Respuesta.Append("

    NOTA: El archivo se analizo correctamente pero ocurrió un problema al efectuar los cambios en el sistema. Por favor vuelva a intentar.") + ' Alert(Respuesta.ToString, TipoMensaje.MsgError) + ' End If + + ' ObjIE.Dispose() + ' Else + ' Respuesta.AppendFormat("

    NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.") + ' Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia) + ' End If + ' Else + ' Alert(TextoErrorArchivo, TipoMensaje.MsgError) + ' End If + + ' 'ELIMINA TXT + ' My.Computer.FileSystem.DeleteFile(NombreArchivo) + + ' RecargaDatos() + + 'End Sub #End Region 'FUNCIONARIO O EMPLEADO #Region " ALTA FUNCIONARIO " - Private Sub CargaFyE() - Dim ObjBancos As New ClsBancos - - If ObjBancos.GetLayoutFyE(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then - DTFyE = ObjBancos.DtResultados.FiltraParametros("LEN(RFC) IN (13)") - Else - DTFyE = Nothing - End If - ObjBancos.Dispose() - - If DTFyE.Rows.Count > 0 Then - GvProveedores.DataSource = DTFyE - End If - GvProveedores.DataBind() - - UpProveedores.Update() - End Sub - Private Sub GeneraAltaFyE() - Dim DtTemp As DataTable = Nothing - - 'REINICIA PROPIEDAS - HeaderTexto = "" - DetalleTexto = "" - TrailerTexto = "" - TotalAcumulado = 0 - CreaDtAlta() - - DtTemp = DTFyE - - ''VALIDA CUENTAS DEPOSITOS - Dim ErrorCuenta = False - Dim FyEError As StringBuilder = New StringBuilder - FyEError.AppendFormat("") - - Dim TotalDetalles As Integer = 0 - Dim EsBancomer = False - For Each gvr As DataRow In DtTemp.Rows - If gvr("CvePersonal").ToString <> "" AndAlso gvr("EstatusPagoElectronico").ToString <> "True" AndAlso gvr("AltaCuenta").ToString = "1" Then - DTPendienteActual = DtTemp.FiltraParametros(String.Format("CveCuentaDeposito = {0}", gvr("CveCuentaDeposito").ToString)) - ErrorCuenta = False - EsBancomer = False - - If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then - EsBancomer = True - End If - - 'CLABE SIEMPRE OBLIGATORIA SI NO ES BANCOMER - If Not ErrorCuenta Then - If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And DTPendienteActual(0)("CLABE").ToString.Trim.Length = 0 And Not EsBancomer Then - FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) - ErrorCuenta = True - End If - End If - - 'SI CUENTA TIENE ALGO Y BANCO BANCOMER DEBE TENER UNA LOGITUD EXACTA DE 10 - If Not ErrorCuenta Then - If DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 10 AndAlso EsBancomer Then - FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) - ErrorCuenta = True - End If - End If - - 'SI CLABE TIENE ALGO DEBE TENER UNA LOGITUD EXACTA DE 18 - If Not ErrorCuenta Then - If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 Then - FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) - ErrorCuenta = True - End If - End If - - 'SI CIE TIENE ALGO DEBE TENER REFERENCIA OBLIGATORIA - If Not ErrorCuenta Then - If DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0 And DTPendienteActual(0)("Referencia").ToString.Trim.Length < 3 Then - FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) - ErrorCuenta = True - End If - End If - - 'CUANDO SEA "BBVA" O "BANCOMER" DEBE TENER "CIE" O "CUENTA" - If Not ErrorCuenta Then - If EsBancomer AndAlso Not (DTPendienteActual(0)("Cuenta").ToString.Trim.Length = 10 Or DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0) Then - FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) - ErrorCuenta = True - End If - End If - - If Not ErrorCuenta Then - If TotalDetalles > 0 Then - DetalleTexto &= vbCrLf - End If - GeneraAltaDetalleFyE() - TotalDetalles += 1 - End If - - End If - Next - FyEError.AppendFormat("
    PersonalCuentaError
    {0}{1}CLABE ES OBLIGATORIA
    {0}{1}NUMERO DE CUENTA CON FORMATO INCORRECTO
    {0}{1}CLABE CON FORMATO INCORRECTO
    {0}{1}CIE CON FORMATO INCORRECTO
    {0}{1}CUENTA BANCOMER SIN CUENTA O CIE
    ") - - - If TotalDetalles > 0 Then - FormarTextoAltaFyE(TotalDetalles) - CreaArchivo(2) - - Dim Descargas As New StringBuilder() - Descargas.AppendFormat("
  • TXT
  • ", NombreArchivo) - 'Descargas.AppendFormat("
  • Reporte
  • ", NombreArchivo) - Descargas.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) - - - Dim TextoErrorProveedores = "" - If FyEError.Length > 160 Then TextoErrorProveedores = String.Format("


    Proveedores con Error:

    ------------------------------------------------------------------
    {0}

    ", FyEError.ToString) - - Alert(String.Format("
    El Layout fue creado satisfactoriamente.{1}
    Descargas:
      {0}
    ", Descargas, TextoErrorProveedores), TipoMensaje.MsgInformacion) - - 'NombreArchivo = "LayoutAltaProveedores" - 'DescargarArchivo() - Else - Alert("No hay proveedores que dar de alta", TipoMensaje.MsgInformacion) - End If - - - End Sub - Private Sub GeneraAltaDetalleFyE() - Dim Resultado = True - Dim CuentaDeposito As String = "" - Dim TipoCuentaDeposito As String = "" - Dim TipoCuenta As String = "" - - ''''' LLENADO DE DETALLE - 'Campos #1-4 del Detalle - DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros)) - - 'Banco BBVA - If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then - 'Llenamos datos de BBVA - 'Campo #5-7 del detalle - - 'Busca que cuenta sera la asignada para el proveedor - If DTPendienteActual(0)("CIE").ToString <> "" Then - CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros)) - TipoCuenta = "50" - TipoCuentaDeposito = "CIE" - ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then - CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString - TipoCuenta = "99" - TipoCuentaDeposito = "Cuenta" - ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then - CuentaDeposito = DTPendienteActual(0)("CLABE").ToString - TipoCuenta = "40" - TipoCuentaDeposito = "CLABE" - End If - - - DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros)) - - 'Llenamos en blanco datos de otros bancos - 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta - DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), DateTime.Now().ToString("yyyy-MM-dd")) - - - 'Otros Bancos NACIONAL!! - Else - - CuentaDeposito = DTPendienteActual(0)("CLABE").ToString - TipoCuentaDeposito = "CLABE" - - 'Llenamos en blanco datos de BBVA - DetalleTexto &= Vacio.PadRight(40) - - 'Llenamos datos de otros bancos - 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta - DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), DateTime.Now().ToString("yyyy-MM-dd")) - End If - - 'Llenamos datos de Tipo de Persona - Fisica - ' nombres Primer apellido Segundo apellido - DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), DTPendienteActual(0)("Nombres").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("APaterno").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("AMaterno").ToString.PadRight(20).Substring(0, 20)) - - 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC - DetalleTexto &= String.Format("{0}{1}", DTPendienteActual(0)("FechaNacimiento").ToString.ToDate.ToString("yyyy-MM-dd"), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14)) - - 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional) - DetalleTexto &= Vacio.PadLeft(153) - - 'Campos 33-36 --- Datos de confirmacion - DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50)) - - 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then - ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50)) - 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then - ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50)) - 'End If - - 'Campos 37-39 -- FILLER - DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38)) - - - ''LLENA DT PARA REPORTE - Dim Row = DtAlta.NewRow() - Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString - Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString - Row("TipoCuenta") = TipoCuentaDeposito - Row("Cuenta") = String.Format("{0}", CuentaDeposito) - DtAlta.Rows.Add(Row) - End Sub - Protected Sub FormarTextoAltaFyE(Registros As Integer) - '''''' LLENADO HEADER - Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString - 'Campos #1-4 del Header - HeaderTexto = String.Format("H{0}{1}GRUPO01 ", convenio.PadLeft(9, PadCeros), DateTime.Now().ToString("yyyy-MM-dd")) - 'Campo #5 del Header - HeaderTexto &= String.Format("{0}{1}", UsuarioActual.CveUsuario, DateTime.Now().ToString("yyyyMMdd")).PadRight(20) - 'Campos #6-8 del Header - HeaderTexto &= String.Format("00").PadRight(586) - Dim HeaderLength = HeaderTexto.Length - - ''''' LLENADO DE TRAILER - TrailerTexto = String.Format("T{0}{1}{2}", Registros.ToString.PadLeft(10, PadCeros), Vacio.PadRight(50, PadCeros), Vacio.PadRight(575)) - - ''''' ARMADO DEL TEXTO COMPLETO - TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto) - 'TxtAltas.Text = TextoCompleto + + Private Sub AltaFyE(Optional DtCuentasPendientesTemp As DataTable = Nothing) + + + NombreArchivo = "" + + Dim RegistrosAltaBancomer As New StringBuilder + Dim RegistrosAltaInterbancario As New StringBuilder + Dim SBErrores As New StringBuilder + + Dim NombreArchivoBancomer As String = "" + Dim NombreArchivoInterbancario As String = "" + + Dim CeroRelleno As Char = "0"c + Dim EspacioRelleno As Char = Chr(32) + Dim ErrorLayout = False + + + If DtCuentasPendientesTemp Is Nothing Then + DtCuentasPendientesTemp = DTFyE.Copy + End If + + + + DtCuentasPendientesTemp.CaseSensitive = False + + + + + Dim DtCuentasPendientesBancomer As DataTable = DtCuentasPendientesTemp.FiltraParametros($" (EstatusPagoElectronicoGrupos IS NULL OR EstatusPagoElectronicoGrupos = False) AND (BancoNombre like '%BBVA%' OR BancoNombre like '%BANCOMER%' ) ", "", {"CveCuentaDeposito", "BancoNombre", "CLABEDestino", "Abreviatura", "RazonSocial", "CvePersonal", "CveBanco", "Cuenta", "BBVAAlias"}) + Dim DtCuentasPendientesInterbancarias As DataTable = DtCuentasPendientesTemp.FiltraParametros($" (EstatusPagoElectronicoGrupos IS NULL OR EstatusPagoElectronicoGrupos = False) AND (BancoNombre not like '%BBVA%' AND BancoNombre not like '%BANCOMER%' ) ", "", {"CveCuentaDeposito", "BancoNombre", "CLABEDestino", "Abreviatura", "RazonSocial", "CvePersonal", "CveBanco", "Cuenta", "BBVAAlias"}) + 'CLABEDestino + + Dim ObjGrales As New ClsGenerales + + If DtCuentasPendientesBancomer.Rows.Count > 0 Then + For Each dRow As DataRow In DtCuentasPendientesBancomer.Rows + + Dim SBTmpBancomer As New StringBuilder + Dim SBErroresBancomer As New StringBuilder + Dim ErrorLineaBancomer As Boolean = False + + SBErroresBancomer.Append($"{dRow("RazonSocial").ToString } ") + SBErroresBancomer.Append($"Cuenta: {dRow("Cuenta").ToString } ") + + If dRow("CLABEDestino").ToString.Length <= 18 Then 'Tamaño maximo 18 + SBTmpBancomer.Append(dRow("CLABEDestino").ToString.PadLeft(18, CeroRelleno)) + Else + SBErroresBancomer.Append("La cuenta beneficiaria no puede ser mayor a 18 caracteres, ") + ErrorLineaBancomer = True + End If + + + If dRow("CLABEDestino").ToString.Trim = "" Then + SBErroresBancomer.Append("La cuenta beneficiaria no puede ser nula,") + ErrorLineaBancomer = True + End If + + If dRow("Abreviatura").ToString.Length = 3 Then + SBTmpBancomer.Append(dRow("Abreviatura")) + Else + SBErroresBancomer.Append("El tamaño de la divisa es incorrecto, ") + ErrorLineaBancomer = True + End If + + SBTmpBancomer.Append("0999999999999.99") + + If dRow("RazonSocial").ToString.Trim.Length < 31 Then 'Tamaño maximo 30 + SBTmpBancomer.Append(dRow("RazonSocial").ToString.PadRight(30, EspacioRelleno)) + Else + SBTmpBancomer.Append(dRow("RazonSocial").ToString.Trim.Substring(0, 30)) + End If + + 'ALIAS DE LA CUENTA PENDIENTE TAMAÑO MAXIMO 30 + SBTmpBancomer.Append(dRow("BBVAAlias").ToString.PadRight(30, EspacioRelleno)) + + 'CORREO OPCIONAL TAMAÑO MAXIMO 80 + 'RegistrosAlta.Append("".ToString.PadLeft(80, EspacioRelleno)) + + SBTmpBancomer.Append(vbCrLf) + + + If Not ErrorLineaBancomer Then + RegistrosAltaBancomer.Append(SBTmpBancomer.ToString) + ObjGrales.UpdateCuentasDepositosEstatusPagoElectronicoGrupos(dRow("CveCuentaDeposito").ToString.ToEntero, True) + Else + SBErroresBancomer.Append("
    ") + SBErrores.AppendLine(SBErroresBancomer.ToString) + End If + + + Next + + TextoCompleto = RegistrosAltaBancomer.ToString + + If CreaArchivo(2, True) Then + NombreArchivoBancomer = NombreArchivo + End If + + + End If + + + + + If DtCuentasPendientesInterbancarias.Rows.Count > 0 Then + + For Each dRow As DataRow In DtCuentasPendientesInterbancarias.Rows + + Dim SBTmpInterbancarias As New StringBuilder + Dim SBErroresInterBancario As New StringBuilder + Dim ErrorLineaInterbancaria As Boolean = False + + SBErroresInterBancario.Append($"{dRow("RazonSocial").ToString } ") + SBErroresInterBancario.Append($"Cuenta: {dRow("Cuenta").ToString } ") + + If dRow("CveBanco").ToString.Trim.Length = 3 Then + SBTmpInterbancarias.Append(dRow("CveBanco").ToString.Trim) + Else + SBErroresInterBancario.Append("clave ABM(Clave SAT) incorrecta, ") + ErrorLineaInterbancaria = True + End If + + + If dRow("CLABEDestino").ToString.Length <= 18 Then 'Tamaño maximo 18 + SBTmpInterbancarias.Append(dRow("CLABEDestino").ToString.PadLeft(18, CeroRelleno)) + Else + SBErroresInterBancario.Append("La cuenta beneficiaria no puede ser mayor a 18 caracteres, ") + ErrorLineaInterbancaria = True + End If + + + + If dRow("CLABEDestino").ToString.Trim = "" Then + SBErroresInterBancario.Append("La cuenta beneficiaria no puede ser nula,") + ErrorLineaInterbancaria = True + End If + + If dRow("Abreviatura").ToString.Length = 3 Then + SBTmpInterbancarias.Append(dRow("Abreviatura").ToString.Trim) + Else + SBErroresInterBancario.Append("El tamaño de la divisa es incorrecto, ") + ErrorLineaInterbancaria = True + End If + + SBTmpInterbancarias.Append("0999999999999.99") + + If dRow("RazonSocial").ToString.Trim.Length < 31 Then 'Tamaño maximo 30 + SBTmpInterbancarias.Append(dRow("RazonSocial").ToString.PadRight(30, EspacioRelleno)) + Else + SBTmpInterbancarias.Append(dRow("RazonSocial").ToString.Trim.Substring(0, 30)) + End If + + ' ALIAS DE LA CUENTA PENDIENTE TAMAÑO MAXIMO 30 + SBTmpInterbancarias.Append(dRow("BBVAAlias").ToString.PadRight(30, EspacioRelleno)) + + 'CORREO OPCIONAL TAMAÑO MAXIMO 80 + 'RegistrosAlta.Append("".ToString.PadLeft(80, EspacioRelleno)) + + + 'Tipo de cuenta + SBTmpInterbancarias.Append("40") + + SBTmpInterbancarias.Append(vbCrLf) + + + If Not ErrorLineaInterbancaria Then + RegistrosAltaInterbancario.Append(SBTmpInterbancarias.ToString) + ObjGrales.UpdateCuentasDepositosEstatusPagoElectronicoGrupos(dRow("CveCuentaDeposito").ToString.ToEntero, True) + Else + SBErroresInterBancario.Append("
    ") + SBErrores.AppendLine(SBErroresInterBancario.ToString) + End If + + Next + + If RegistrosAltaInterbancario.Length > 0 Then + TextoCompleto = RegistrosAltaInterbancario.ToString + If CreaArchivo(2, False) Then + NombreArchivoInterbancario = NombreArchivo + End If + End If + + End If + + ObjGrales.Dispose() + + Dim Mensaje As New StringBuilder + + + Mensaje.Append("Descarga Layouts

    ") + + If NombreArchivoBancomer.Trim.Length > 0 Then + Mensaje.Append($"Cuentas Bancomer Descarga Archivo cuentas Bancomer

    ") + End If + + + If NombreArchivoInterbancario.Trim.Length > 0 Then + Mensaje.Append($"Cuentas Interbancarias Descarga Archivo cuentas Bancomer

    ") + End If + + + If SBErrores.ToString.Length > 0 Then + Mensaje.Append("Errores Cuentas
    ") + Mensaje.Append("
    ") + End If + + If NombreArchivoBancomer.Length > 0 Or NombreArchivoInterbancario.Length > 0 Then + Alert(Mensaje.ToString, TipoMensaje.MsgInformacion) + End If + + CargaDatos() + End Sub + + + Private Sub CargaFyE() + Dim ObjBancos As New ClsBancos + + If ObjBancos.GetLayoutFyE(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, PorGrupos:=True) Then + DTFyE = ObjBancos.DtResultados.FiltraParametros("LEN(RFC) IN (13)") + Else + DTFyE = Nothing + End If + ObjBancos.Dispose() + + If DTFyE.Rows.Count > 0 Then + GvProveedores.DataSource = DTFyE + End If + GvProveedores.DataBind() + + UpProveedores.Update() + End Sub + + 'Private Sub GeneraAltaFyE() + ' Dim DtTemp As DataTable = Nothing + + ' 'REINICIA PROPIEDAS + ' HeaderTexto = "" + ' DetalleTexto = "" + ' TrailerTexto = "" + ' TotalAcumulado = 0 + ' CreaDtAlta() + + ' DtTemp = DTFyE + + ' ''VALIDA CUENTAS DEPOSITOS + ' Dim ErrorCuenta = False + ' Dim FyEError As StringBuilder = New StringBuilder + ' FyEError.AppendFormat("") + + ' Dim TotalDetalles As Integer = 0 + ' Dim EsBancomer = False + ' For Each gvr As DataRow In DtTemp.Rows + ' If gvr("CvePersonal").ToString <> "" AndAlso gvr("EstatusPagoElectronico").ToString <> "True" AndAlso gvr("AltaCuenta").ToString = "1" Then + ' DTPendienteActual = DtTemp.FiltraParametros(String.Format("CveCuentaDeposito = {0}", gvr("CveCuentaDeposito").ToString)) + ' ErrorCuenta = False + ' EsBancomer = False + + ' If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then + ' EsBancomer = True + ' End If + + ' 'CLABE SIEMPRE OBLIGATORIA SI NO ES BANCOMER + ' If Not ErrorCuenta Then + ' If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And DTPendienteActual(0)("CLABE").ToString.Trim.Length = 0 And Not EsBancomer Then + ' FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) + ' ErrorCuenta = True + ' End If + ' End If + + ' 'SI CUENTA TIENE ALGO Y BANCO BANCOMER DEBE TENER UNA LOGITUD EXACTA DE 10 + ' If Not ErrorCuenta Then + ' If DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 10 AndAlso EsBancomer Then + ' FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) + ' ErrorCuenta = True + ' End If + ' End If + + ' 'SI CLABE TIENE ALGO DEBE TENER UNA LOGITUD EXACTA DE 18 + ' If Not ErrorCuenta Then + ' If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 Then + ' FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) + ' ErrorCuenta = True + ' End If + ' End If + + ' 'SI CIE TIENE ALGO DEBE TENER REFERENCIA OBLIGATORIA + ' If Not ErrorCuenta Then + ' If DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0 And DTPendienteActual(0)("Referencia").ToString.Trim.Length < 3 Then + ' FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) + ' ErrorCuenta = True + ' End If + ' End If + + ' 'CUANDO SEA "BBVA" O "BANCOMER" DEBE TENER "CIE" O "CUENTA" + ' If Not ErrorCuenta Then + ' If EsBancomer AndAlso Not (DTPendienteActual(0)("Cuenta").ToString.Trim.Length = 10 Or DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0) Then + ' FyEError.AppendFormat("", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString) + ' ErrorCuenta = True + ' End If + ' End If + + ' If Not ErrorCuenta Then + ' If TotalDetalles > 0 Then + ' DetalleTexto &= vbCrLf + ' End If + ' GeneraAltaDetalleFyE() + ' TotalDetalles += 1 + ' End If + + ' End If + ' Next + ' FyEError.AppendFormat("
    PersonalCuentaError
    {0}{1}CLABE ES OBLIGATORIA
    {0}{1}NUMERO DE CUENTA CON FORMATO INCORRECTO
    {0}{1}CLABE CON FORMATO INCORRECTO
    {0}{1}CIE CON FORMATO INCORRECTO
    {0}{1}CUENTA BANCOMER SIN CUENTA O CIE
    ") + + + ' If TotalDetalles > 0 Then + ' FormarTextoAltaFyE(TotalDetalles) + ' CreaArchivo(2) + + ' Dim Descargas As New StringBuilder() + ' Descargas.AppendFormat("
  • TXT
  • ", NombreArchivo) + ' 'Descargas.AppendFormat("
  • Reporte
  • ", NombreArchivo) + ' Descargas.AppendFormat("
  • Descargar Reporte
  • ", NombreArchivo) + + + ' Dim TextoErrorProveedores = "" + ' If FyEError.Length > 160 Then TextoErrorProveedores = String.Format("


    Proveedores con Error:

    ------------------------------------------------------------------
    {0}

    ", FyEError.ToString) + + ' Alert(String.Format("
    El Layout fue creado satisfactoriamente.{1}
    Descargas:
      {0}
    ", Descargas, TextoErrorProveedores), TipoMensaje.MsgInformacion) + + ' 'NombreArchivo = "LayoutAltaProveedores" + ' 'DescargarArchivo() + ' Else + ' Alert("No hay proveedores que dar de alta", TipoMensaje.MsgInformacion) + ' End If + + + 'End Sub + + 'Private Sub GeneraAltaDetalleFyE() + ' Dim Resultado = True + ' Dim CuentaDeposito As String = "" + ' Dim TipoCuentaDeposito As String = "" + ' Dim TipoCuenta As String = "" + + ' ''''' LLENADO DE DETALLE + ' 'Campos #1-4 del Detalle + ' DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros)) + + ' 'Banco BBVA + ' If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then + ' 'Llenamos datos de BBVA + ' 'Campo #5-7 del detalle + + ' 'Busca que cuenta sera la asignada para el proveedor + ' If DTPendienteActual(0)("CIE").ToString <> "" Then + ' CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros)) + ' TipoCuenta = "50" + ' TipoCuentaDeposito = "CIE" + ' ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then + ' CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString + ' TipoCuenta = "99" + ' TipoCuentaDeposito = "Cuenta" + ' ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then + ' CuentaDeposito = DTPendienteActual(0)("CLABE").ToString + ' TipoCuenta = "40" + ' TipoCuentaDeposito = "CLABE" + ' End If + + + ' DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros)) + + ' 'Llenamos en blanco datos de otros bancos + ' 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta + ' DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), DateTime.Now().ToString("yyyy-MM-dd")) + + + ' 'Otros Bancos NACIONAL!! + ' Else + + ' CuentaDeposito = DTPendienteActual(0)("CLABE").ToString + ' TipoCuentaDeposito = "CLABE" + + ' 'Llenamos en blanco datos de BBVA + ' DetalleTexto &= Vacio.PadRight(40) + + ' 'Llenamos datos de otros bancos + ' 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta + ' DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), DateTime.Now().ToString("yyyy-MM-dd")) + ' End If + + ' 'Llenamos datos de Tipo de Persona - Fisica + ' ' nombres Primer apellido Segundo apellido + ' DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), DTPendienteActual(0)("Nombres").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("APaterno").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("AMaterno").ToString.PadRight(20).Substring(0, 20)) + + ' 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC + ' DetalleTexto &= String.Format("{0}{1}", DTPendienteActual(0)("FechaNacimiento").ToString.ToDate.ToString("yyyy-MM-dd"), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14)) + + ' 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional) + ' DetalleTexto &= Vacio.PadLeft(153) + + ' 'Campos 33-36 --- Datos de confirmacion + ' DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50)) + + ' 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then + ' ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50)) + ' 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then + ' ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50)) + ' 'End If + + ' 'Campos 37-39 -- FILLER + ' DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38)) + + + ' ''LLENA DT PARA REPORTE + ' Dim Row = DtAlta.NewRow() + ' Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString + ' Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString + ' Row("TipoCuenta") = TipoCuentaDeposito + ' Row("Cuenta") = String.Format("{0}", CuentaDeposito) + ' DtAlta.Rows.Add(Row) + 'End Sub + + 'Protected Sub FormarTextoAltaFyE(Registros As Integer) + ' '''''' LLENADO HEADER + ' Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString + ' 'Campos #1-4 del Header + ' HeaderTexto = String.Format("H{0}{1}GRUPO01 ", convenio.PadLeft(9, PadCeros), DateTime.Now().ToString("yyyy-MM-dd")) + ' 'Campo #5 del Header + ' HeaderTexto &= String.Format("{0}{1}", UsuarioActual.CveUsuario, DateTime.Now().ToString("yyyyMMdd")).PadRight(20) + ' 'Campos #6-8 del Header + ' HeaderTexto &= String.Format("00").PadRight(586) + ' Dim HeaderLength = HeaderTexto.Length + + ' ''''' LLENADO DE TRAILER + ' TrailerTexto = String.Format("T{0}{1}{2}", Registros.ToString.PadLeft(10, PadCeros), Vacio.PadRight(50, PadCeros), Vacio.PadRight(575)) + + ' ''''' ARMADO DEL TEXTO COMPLETO + ' TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto) + ' 'TxtAltas.Text = TextoCompleto + 'End Sub + #End Region @@ -2188,9 +2417,9 @@ Partial Class Bancos_PagoElectronicoGrupos End If If TipoMasiva = 1 Then - AltaProveedores(2, DTProveedores) + AltaProveedores(DTProveedores) Else - GeneraAltaFyE() + AltaFyE() End If End Sub diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index b986ebb70..769e68b58 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -2513,20 +2513,31 @@ Partial Class Bancos_ProveedoresAbonar ElseIf DdlTipoTransaccion.SelectedValue = "17" Then + + '''Permitir pago sin cuneta deposito + If Dep.DtResultados.Rows.Count > 0 Then DdlCuentaDeposito.DataSource = Dep.DtResultados '.FiltraParametros("EstatusPagoElectronicoGrupos = 'True' AND Estatus ='True'") + trCuentaDeposito.Visible = True + BtnIEGuardar.ToolTip = "" Else - Alert("El proveedor no tiene cuentas deposito registradas.") - End If - - 'If Dep.DtResultados.FiltraParametros("EstatusPagoElectronicoGrupos = 'True' AND Estatus ='True'").Rows.Count > 0 Then - ' trCuentaDeposito.Visible = True - ' DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) - 'Else - ' BtnIEGuardar.Enabled = False - ' Alert("El proveedor no tiene ninguna cuenta deposito registrada ", TipoMensaje.MsgAdvertencia) - 'End If + 'Alert("El proveedor no tiene cuentas deposito registradas.") + BtnIEGuardar.Enabled = False + BtnIEGuardar.ToolTip = "El proveedor no tiene cuentas deposito" + + + + End If + + 'If Dep.DtResultados.FiltraParametros("EstatusPagoElectronicoGrupos = 'True' AND Estatus ='True'").Rows.Count > 0 Then + ' trCuentaDeposito.Visible = True + ' DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) + 'Else + ' BtnIEGuardar.Enabled = False + ' Alert("El proveedor no tiene ninguna cuenta deposito registrada ", TipoMensaje.MsgAdvertencia) + 'End If + UpGuardar.Update() Else DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros("Estatus ='True'") If Dep.DtResultados.Rows.Count > 0 Then diff --git a/Inventarios/RecepcionAlmacen.aspx b/Inventarios/RecepcionAlmacen.aspx index 0c9fa6b71..8d742140e 100644 --- a/Inventarios/RecepcionAlmacen.aspx +++ b/Inventarios/RecepcionAlmacen.aspx @@ -167,7 +167,7 @@ Almacén:
    - +
    @@ -418,7 +418,7 @@ + DataKeyNames="EntregaDirecta,Consec,CodigoBarras,CvePS,CveUM,PU,CantidadC,CantidadF,UM,PS,CveCompraDetalle,CveOrdenCompraDetalle,PUExtranjero,AplicaSerieLote,CveClasificacion,Codigo,CveVentaDetalle,CostoIndirecto,CveTamaño,Lote" HeaderStyle-CssClass="Titulos" RowStyle-Height="25px" CssClass="table table-striped table-hover Widthall ScrollAD mysmallbtn" data-heighterror="450" data-freezerows="1" GridLines="None"> @@ -445,11 +445,30 @@ - + + + + + + + + +
    + + + + + + + + +
    +
    +
    @@ -463,6 +482,13 @@ + + + + + +
    @@ -568,7 +594,7 @@ - +
    @@ -685,13 +711,13 @@ - +
    - + @@ -705,8 +731,8 @@
    - @@ -1135,7 +1161,28 @@ $("#DivCantidadEspecial").show(200); } + function Dividir(t) { + $get("HdnCantidadMovimiento").value = $get(t).value; + } + function LimitaCantidad(C, textbox, button) { + + // var contenedor = $(textbox).parent().find("#" + buttonIdDiv); + + if (ToDouble(textbox.value) >= C) { + textbox.value = ""; + } + + if (parseFloat(textbox.value) > 0) { + $get(button).style.display = ""; + //$(contenedor).show(); + } + else { + $get(button).style.display = "none"; + //$(contenedor).hide(); + + } + } diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 6a926090f..05ef7a391 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -388,116 +388,131 @@ Partial Class Inventarios_RecepcionAlmacen End Sub #End Region -#Region " INICIALIZA VALORES " - Private Sub InicializaValores() - CveCompraParametro = -1 - CveCompraSurtir = -1 - CvePrePolizaCompra = -1 - CveOCSurtir = -1 - CveImportacionSurtir = -1 - CveImportacionProveedor = -1 - CveImportacionCompra = -1 - CveFleteSurtir = -1 - CveFleteOrdenCompra = -1 - CveFleteCompra = -1 - BuscaEntregaDirecta = -1 - CveAlmacenApartado = -1 - TipoMovimiento = 1 - - CantidadTotal = 0 - IndexSeccionAlmacen = 0 - CreaDtSeccionAlmacen() - CargaDdlAlmacen() - - ddlAlmacenAdd.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen NOT IN (9)") - ddlAlmacenAdd.DataBind() - - CargaAlmacenes(-1) - - ddlProveedor.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") - - If ddlProveedor.UsaWebService Then - - ddlProveedor.Attributes.Add("data-metodo", "getproveedores") - Else - ddlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) - ddlProveedor.DataBind() - ddlProveedor.ddl.Items.Insert(0, New ListItem("Seleccione el Proveedor", "-1")) - ddlProveedor.SelectedValue = "-1" - End If - - - DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) - DdlFolioOC.Items.Insert(0, New ListItem("Seleccione", "-1")) - - ConfiguraTipoRecepcion() - - If UsuarioActual.CveEmpresa = 119 Then - DivRemision.Visible = True - End If - - TxtFechaCaducidad.Text = Now.ToShortDateString - TxtFechaPendientes.Text = Now.ToShortDateString - TipoCambio = -1 - CreaDtDetalle() - - ImgClose.Attributes.Add("onclick", "$('#DivAlmacen').hide();") - ImgAdd.Attributes.Add("onclick", "$('#DivAlmacen').hide();") - - BtnGuardar.Visible = False - TxtFecha.Text = Now.ToShortDateString - RVFecha.MaximumValue = MaxFecha.ToShortDateString - If UsuarioActual.CveEmpresa.Contiene(119) Then RVFecha.MinimumValue = Now.ToShortDateString : CEFecha.StartDate = Now Else RVFecha.MinimumValue = MinFecha.ToShortDateString - InicializaBitacoraTemporal() - DdlMonedaTC.Enabled = False - - - +#Region " INICIALIZA VALORES " + Private Sub InicializaValores() + CveCompraParametro = -1 + CveCompraSurtir = -1 + CvePrePolizaCompra = -1 + CveOCSurtir = -1 + CveImportacionSurtir = -1 + CveImportacionProveedor = -1 + CveImportacionCompra = -1 + CveFleteSurtir = -1 + CveFleteOrdenCompra = -1 + CveFleteCompra = -1 + BuscaEntregaDirecta = -1 + CveAlmacenApartado = -1 + TipoMovimiento = 1 + + CantidadTotal = 0 + IndexSeccionAlmacen = 0 + CreaDtSeccionAlmacen() + CargaDdlAlmacen() + + ddlAlmacenAdd.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen NOT IN (9)") + ddlAlmacenAdd.DataBind() + + CargaAlmacenes(-1) + + ddlProveedor.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") + + If ddlProveedor.UsaWebService Then + + ddlProveedor.Attributes.Add("data-metodo", "getproveedores") + Else + ddlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) + ddlProveedor.DataBind() + ddlProveedor.ddl.Items.Insert(0, New ListItem("Seleccione el Proveedor", "-1")) + ddlProveedor.SelectedValue = "-1" + End If + + + DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) + DdlFolioOC.Items.Insert(0, New ListItem("Seleccione", "-1")) + + ConfiguraTipoRecepcion() + + If UsuarioActual.CveEmpresa = 119 Then + DivRemision.Visible = True + End If + + TxtFechaCaducidad.Text = Now.ToShortDateString + TxtFechaPendientes.Text = Now.ToShortDateString + TipoCambio = -1 + CreaDtDetalle() + + ImgClose.Attributes.Add("onclick", "$('#DivAlmacen').hide();") + ImgAdd.Attributes.Add("onclick", "$('#DivAlmacen').hide();") + + BtnGuardar.Visible = False + TxtFecha.Text = Now.ToShortDateString + RVFecha.MaximumValue = MaxFecha.ToShortDateString + If UsuarioActual.CveEmpresa.Contiene(119) Then RVFecha.MinimumValue = Now.ToShortDateString : CEFecha.StartDate = Now Else RVFecha.MinimumValue = MinFecha.ToShortDateString + InicializaBitacoraTemporal() + DdlMonedaTC.Enabled = False + + + + End Sub + ''' + ''' Recarga los almacenes [DdlAlmacen] que se pueden usar para el movimiento + ''' + ''' + ''' Parametro sin espacios y separado por comas ["1,2,3,21"] + Private Sub CargaAlmacenes(CveSubProyecto As Integer, Optional CveTiposAlmacen As String = "") + Dim StrAlmacenes As String = "" + + If UsuarioActual.CveSubProyecto = 8804 Then 'AGS + StrAlmacenes = $"CveTipoAlmacen IN ({If(CveTiposAlmacen.Length > 0, CveTiposAlmacen, "1,2,12,15")}) {If(CveSubProyecto > 0, $"And CveSubProyecto = {CveSubProyecto}", "")}" + Else + StrAlmacenes = $"CveTipoAlmacen IN ({If(CveTiposAlmacen.Length > 0, CveTiposAlmacen, "1,2,15,6")}) {If(CveSubProyecto > 0, $"And CveSubProyecto = {CveSubProyecto}", "")}" + End If + + DdlAlmacen.Items.Clear() + DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros(StrAlmacenes) 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) + DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) + DdlAlmacen.SelectedValue = "-1" + DdlAlmacen.DataBind() + DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) + + UpGenerales.Update() End Sub - ''' - ''' Recarga los almacenes [DdlAlmacen] que se pueden usar para el movimiento - ''' - ''' - ''' Parametro sin espacios y separado por comas ["1,2,3,21"] - Private Sub CargaAlmacenes(CveSubProyecto As Integer, Optional CveTiposAlmacen As String = "") - Dim StrAlmacenes As String = "" - If UsuarioActual.CveSubProyecto = 8804 Then 'AGS - StrAlmacenes = $"CveTipoAlmacen IN ({If(CveTiposAlmacen.Length > 0, CveTiposAlmacen, "1,2,12,15")}) {If(CveSubProyecto > 0, $"And CveSubProyecto = {CveSubProyecto}", "")}" - Else - StrAlmacenes = $"CveTipoAlmacen IN ({If(CveTiposAlmacen.Length > 0, CveTiposAlmacen, "1,2,15,6")}) {If(CveSubProyecto > 0, $"And CveSubProyecto = {CveSubProyecto}", "")}" + Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) + If DdlAlmacen.SelectedValue <> "-1" Then + For Each Gvr As GridViewRow In GvInv.Rows + If Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue = "-1" Then + Dim Dr As DataRow = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero($"CveAlmacen = {DdlAlmacen.SelectedValue}") + If Dr IsNot Nothing Then + Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValueExist(Dr("CveSeccion")) + End If + End If + Next + UPInv.Update() End If - - DdlAlmacen.Items.Clear() - DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros(StrAlmacenes) 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) - DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - DdlAlmacen.SelectedValue = "-1" - DdlAlmacen.DataBind() - DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) - - UpGenerales.Update() - End Sub - Private Sub ConfiguraTipoRecepcion() - DdlTipo.Items.Insert(0, New ListItem("Compra", "1")) - - If UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then - DdlTipo.Items.Insert(1, New ListItem("OC", "2")) - If UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then - DdlTipo.Items.RemoveAt(0) - DdlTipo.SelectedValue = "2" - ModalidadRecepcion() - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(155).ToEntero > 0 Then - DdlTipo.Items.Insert(DdlTipo.Items.Count - 1, New ListItem("Importación", "3")) - End If - - If UsuarioActual.Empresa.Funcionalidad(158).ToEntero > 0 Then - DdlTipo.Items.Insert(DdlTipo.Items.Count - 1, New ListItem("Costo Indirecto", "4")) - End If - - UpFiltros.Update() + End Sub + + Private Sub ConfiguraTipoRecepcion() + DdlTipo.Items.Insert(0, New ListItem("Compra", "1")) + + If UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then + DdlTipo.Items.Insert(1, New ListItem("OC", "2")) + If UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then + DdlTipo.Items.RemoveAt(0) + DdlTipo.SelectedValue = "2" + ModalidadRecepcion() + End If + End If + + If UsuarioActual.Empresa.Funcionalidad(155).ToEntero > 0 Then + DdlTipo.Items.Insert(DdlTipo.Items.Count - 1, New ListItem("Importación", "3")) + End If + + If UsuarioActual.Empresa.Funcionalidad(158).ToEntero > 0 Then + DdlTipo.Items.Insert(DdlTipo.Items.Count - 1, New ListItem("Costo Indirecto", "4")) + End If + + UpFiltros.Update() End Sub #End Region @@ -1088,131 +1103,196 @@ Partial Class Inventarios_RecepcionAlmacen End Sub #End Region -#Region " GVINV " - Private Sub CreaDTInv(TmDT As DataTable) - TmDT.Columns.Add("CveAlmacen", GetType(Integer)) - TmDT.Columns.Add("PUExtranjero", GetType(Double)) - TmDT.Columns.Add("CostoIndirectoExtranjero", GetType(Double)) - TmDT.Columns.Add("Consec", GetType(Integer)) - TmDT.Columns.Add("CantidadSurtidaPantalla", GetType(Double)) - If Not TmDT.Columns.Contains("CostoIndirecto") Then - TmDT.Columns.Add("CostoIndirecto", GetType(Double)) - End If - - GvInv.Columns(2).Visible = False - GvInv.Columns(3).Visible = False - GvInv.Columns(9).Visible = TmDT.SUM("CostoIndirecto") > 0 - - Dim VariableCampo = If(TipoMovimiento.Contiene(1, 3), "CantidadF", "CantidadS") - - Dim Index = 1 - For Each Dr As DataRow In TmDT.Rows - Dr("PUExtranjero") = Dr("PU") - Dr("CostoIndirectoExtranjero") = Dr("CostoIndirecto") - Dr("Consec") = Index - Index += 1 - Dr("CantidadF") = Dr(VariableCampo) - - If Dr(VariableCampo).ToString.ToDecimal <> Dr("CantidadC").ToString.ToDecimal Then - GvInv.Columns(3).Visible = True +#Region " GVINV " + Private Sub CreaDTInv(TmDT As DataTable) + TmDT.Columns.Add("CveAlmacen", GetType(Integer)) + TmDT.Columns.Add("PUExtranjero", GetType(Double)) + TmDT.Columns.Add("CostoIndirectoExtranjero", GetType(Double)) + TmDT.Columns.Add("Consec", GetType(Integer)) + TmDT.Columns.Add("CantidadSurtidaPantalla", GetType(Double)) + TmDT.Columns.Add("AplicaSeccion", GetType(Boolean)) + TmDT.Columns.Add("AplicaSerie", GetType(Boolean)) + TmDT.Columns.Add("AplicaLote", GetType(Boolean)) + TmDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) + If Not TmDT.Columns.Contains("CostoIndirecto") Then + TmDT.Columns.Add("CostoIndirecto", GetType(Double)) + End If + If Not TmDT.Columns.Contains("Lote") Then + TmDT.Columns.Add("Lote", GetType(String)) + End If + If Not TmDT.Columns.Contains("CveSeccion") Then + TmDT.Columns.Add("CveSeccion", GetType(Integer)) + End If + If Not TmDT.Columns.Contains("Caducidad") Then + TmDT.Columns.Add("Caducidad", GetType(Date)) + End If + If Not TmDT.Columns.Contains("Seleccionado") Then + TmDT.Columns.Add("Seleccionado", GetType(Boolean)) + End If + If Not TmDT.Columns.Contains("CantidadSeleccionada") Then + TmDT.Columns.Add("CantidadSeleccionada", GetType(Double)) + End If + + + GvInv.Columns(2).Visible = False + GvInv.Columns(3).Visible = False + GvInv.Columns(9).Visible = TmDT.SUM("CostoIndirecto") > 0 + + Dim VariableCampo = If(TipoMovimiento.Contiene(1, 3), "CantidadF", "CantidadS") + + Dim Index = 1 + For Each Dr As DataRow In TmDT.Rows + Dr("PUExtranjero") = Dr("PU") + Dr("CostoIndirectoExtranjero") = Dr("CostoIndirecto") + Dr("Consec") = Index + Index += 1 + Dr("CantidadF") = Dr(VariableCampo) + + If Dr(VariableCampo).ToString.ToDecimal <> Dr("CantidadC").ToString.ToDecimal Then + GvInv.Columns(3).Visible = True + End If + Dr("Caducidad") = Now + Next + + DtInv = TmDT '.FiltraParametros("CantidadF > 0") + dt = TmDT + If DtInv.SUM("CantidadS") > 0 Then + GvInv.Columns(2).Visible = True + End If + + End Sub + Private Sub CargaGVInv() + If UsuarioActual.CveEmpresa = 119 Then + DtInv = DtInv.FiltraParametros("", "PS") + End If + + For Each item As DataRow In DtInv.Rows + Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, item("CvePS").ToString.ToEntero).FiltroPrimero("") + If Dr IsNot Nothing Then + item("AplicaSeccion") = CBool(Dr("AplicaSeccion")) + If CBool(Dr("AplicaSeccion")) Then GvInv.Columns(10).Visible = True + item("AplicaSerie") = CBool(Dr("AplicaSerie")) + item("AplicaLote") = CBool(Dr("AplicaLote")) + If CBool(Dr("AplicaLote")) Then GvInv.Columns(11).Visible = True + item("AplicaCaducidad") = CBool(Dr("AplicaCaducidad")) + If CBool(Dr("AplicaCaducidad")) Then GvInv.Columns(12).Visible = True + If CBool(Dr("AplicaSeccion")) Or CBool(Dr("AplicaLote")) Or CBool(Dr("AplicaCaducidad")) Or CBool(Dr("AplicaSerie")) Then + GvInv.Columns(15).Visible = True + End If End If - Next - - DtInv = TmDT '.FiltraParametros("CantidadF > 0") - dt = TmDT - If DtInv.SUM("CantidadS") > 0 Then - GvInv.Columns(2).Visible = True - End If - - End Sub - Private Sub CargaGVInv() - If UsuarioActual.CveEmpresa = 119 Then - DtInv = DtInv.FiltraParametros("", "PS") - End If - GvInv.DataSource = DtInv - GvInv.DataBind() - UPInv.Update() - End Sub - Protected Sub GVINV_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvInv.RowDataBound - + Next + + GvInv.DataSource = DtInv + GvInv.DataBind() + UPInv.Update() + End Sub + Protected Sub GVINV_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvInv.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.DBCampo("CveMetodoInventario").ToString.Contiene("5", "6") Then + 'If e.Row.DBCampo("CveMetodoInventario").ToString.Contiene("5", "6") Then - If e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then - e.Row.FCButton("BtnSerieLote").Visible = True - e.Row.FCButton("BtnSerieLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec")) + If CBool(e.Row.DBCampo("AplicaSerie")) Then - e.Row.FCTextBox("TbCantidadF").Enabled = False - e.Row.FCCheckBox("cbInv").Enabled = False - Dim Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count - e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString - ElseIf e.Row.DBCampo("CveMetodoInventario").ToString = "6" Then - e.Row.FCButton("BtnLote").Visible = True - e.Row.FCButton("BtnLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec")) + 'If e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then + e.Row.FCButton("BtnSerieLote").Visible = True + e.Row.FCButton("BtnSerieLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec")) - e.Row.FCTextBox("TbCantidadF").Enabled = False - e.Row.FCCheckBox("cbInv").Enabled = False - Dim Contador = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count - e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString - End If - - Else - e.Row.FCButton("BtnSerieLote").Visible = False - e.Row.FCButton("BtnLote").Visible = False - - e.Row.FCTextBox("TbCantidadF").Enabled = True - e.Row.FCTextBox("TbCantidadF").Attributes.Add("onblur", String.Format("ValidarCantidad(this,{0})", e.Row.DBCampo("CantidadF"))) - e.Row.FCCheckBox("cbInv").Attributes.Add("onclick", String.Format("Check(this, {0}, {1});", e.Row.FCTextBox("TbCantidadF").ClientID, e.Row.DBCampo("CantidadF"))) - - If e.Row.DBCampo("EntregaDirecta").ToString = "1" And TipoMovimiento = 1 Then - e.Row.FCCheckBox("cbInv").Checked = True - e.Row.FCCheckBox("cbInv").Enabled = False - e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").FormatoNumero - e.Row.FCTextBox("TbCantidadF").Enabled = False - End If - End If - - - 'FUNCIONALIDAD PISTOLA DE CODIGOS - If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" And Not UsuarioActual.TienePermisoProceso(174) Then e.Row.FCTextBox("TbCantidadF").Enabled = False + e.Row.FCCheckBox("cbInv").Enabled = False + Dim Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count + e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString + 'ElseIf e.Row.DBCampo("CveMetodoInventario").ToString = "6" Then + ' e.Row.FCButton("BtnLote").Visible = True + ' e.Row.FCButton("BtnLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec")) + + ' e.Row.FCTextBox("TbCantidadF").Enabled = False + ' e.Row.FCCheckBox("cbInv").Enabled = False + ' Dim Contador = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count + ' e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString + 'End If + + Else + e.Row.FCButton("BtnSerieLote").Visible = False + e.Row.FCButton("BtnLote").Visible = False + + e.Row.FCTextBox("TbCantidadF").Enabled = True + e.Row.FCTextBox("TbCantidadF").Attributes.Add("onblur", String.Format("ValidarCantidad(this,{0})", e.Row.DBCampo("CantidadF"))) + e.Row.FCCheckBox("cbInv").Attributes.Add("onclick", String.Format("Check(this, {0}, {1});", e.Row.FCTextBox("TbCantidadF").ClientID, e.Row.DBCampo("CantidadF"))) + + If e.Row.DBCampo("EntregaDirecta").ToString = "1" And TipoMovimiento = 1 Then + e.Row.FCCheckBox("cbInv").Checked = True + e.Row.FCCheckBox("cbInv").Enabled = False + e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").FormatoNumero + e.Row.FCTextBox("TbCantidadF").Enabled = False + End If End If - If e.Row.DBCampo("CantidadF").ToDecimal = 0 Then - e.Row.FCTextBox("TbCantidadF").Visible = False - e.Row.Cells(3).Text = "0" - e.Row.FCCheckBox("cbInv").Visible = False + If CBool(e.Row.DBCampo("AplicaSeccion")) Then + e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = True + Else + e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False + End If + + If CBool(e.Row.DBCampo("AplicaCaducidad")) Then + e.Row.FCTextBox("TxtCaducidad").Visible = True + e.Row.FCLinkButton("LnkCaducidad").Visible = True + e.Row.FCTextBox("TxtCaducidad").Text = Now.ToShortDateString + Else + e.Row.FCTextBox("TxtCaducidad").Visible = False + e.Row.FCLinkButton("LnkCaducidad").Visible = False + End If + + If CBool(e.Row.DBCampo("AplicaLote")) Then + e.Row.FCTextBox("TxtLote").Visible = True + Else + e.Row.FCTextBox("TxtLote").Visible = False + End If + + e.Row.FCButton("BtnDividir").Attributes.Add("onclick", String.Format("Dividir('{0}');", e.Row.FCTextBox("TxtDividir").ClientID)) + e.Row.FCButton("BtnDividir").CommandArgument = e.Row.RowIndex.ToString + e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("CantidadF"), e.Row.FCButton("BtnDividir").ClientID)) + + + 'FUNCIONALIDAD PISTOLA DE CODIGOS + If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" And Not UsuarioActual.TienePermisoProceso(174) Then + e.Row.FCTextBox("TbCantidadF").Enabled = False + End If + + If e.Row.DBCampo("CantidadF").ToDecimal = 0 Then + e.Row.FCTextBox("TbCantidadF").Visible = False + e.Row.Cells(3).Text = "0" + e.Row.FCCheckBox("cbInv").Visible = False End If 'TotalGV += e.Row.DBCampo("PU").ToString.ToDecimal * e.Row.DBCampo("CantidadF").ToString.ToDecimal - If UsuarioActual.Empresa.Funcionalidad(147) = "1" Then - e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa) - e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind() - e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1")) - End If - - e.Row.FCLabel("LbTotal").Text = ((e.Row.DBCampo("PU").ToDecimal + e.Row.DBCampo("CostoIndirecto").ToDecimal) * e.Row.DBCampo("CantidadF").ToDecimal).FormatoNumero - - TotalGV += (e.Row.DBCampo("PU").ToDecimal + e.Row.DBCampo("CostoIndirecto").ToDecimal) * e.Row.DBCampo("CantidadF").ToDecimal - - End If - - If e.Row.RowType = DataControlRowType.Footer Then - Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) - - e.Row.FCLabel("LbTotal").Visible = TienePermisoImportes - - If TienePermisoImportes Then - e.Row.FCLabel("LbTotal").Text = TotalGV.FormatoNumero - TotalGV = 0.0D - e.Row.Font.Bold = True - e.Row.Cells(6).Text = "Total" - e.Row.Cells(6).HorizontalAlign = HorizontalAlign.Right - End If - - End If + 'If UsuarioActual.Empresa.Funcionalidad(147) = "1" Then + e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa) + e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind() + e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1")) + 'End If + + e.Row.FCLabel("LbTotal").Text = ((e.Row.DBCampo("PU").ToDecimal + e.Row.DBCampo("CostoIndirecto").ToDecimal) * e.Row.DBCampo("CantidadF").ToDecimal).FormatoNumero + + TotalGV += (e.Row.DBCampo("PU").ToDecimal + e.Row.DBCampo("CostoIndirecto").ToDecimal) * e.Row.DBCampo("CantidadF").ToDecimal + + End If + + If e.Row.RowType = DataControlRowType.Footer Then + Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) + + e.Row.FCLabel("LbTotal").Visible = TienePermisoImportes + + If TienePermisoImportes Then + e.Row.FCLabel("LbTotal").Text = TotalGV.FormatoNumero + TotalGV = 0.0D + e.Row.Font.Bold = True + e.Row.Cells(6).Text = "Total" + e.Row.Cells(6).HorizontalAlign = HorizontalAlign.Right + End If + + End If End Sub #End Region @@ -1327,234 +1407,234 @@ Partial Class Inventarios_RecepcionAlmacen End Sub #End Region -#Region " AGREGA POR SERIE/LOTE " - Protected Sub BtnSerieLote_Click(sender As Object, e As EventArgs) - - Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c) - - LbProducto.Text = Argumentos(3) - LbCantidad.Text = Argumentos(4).FormatoNumero - TxtFechaCaducidad.Text = Now.ToShortDateString() - - CvePSSerieLote = Argumentos(0).ToEntero - CveUMSerieLote = Argumentos(1).ToEntero - PUSerieLote = Argumentos(2).ToDecimal - CveConsecSerieLote = Argumentos(5).ToEntero - - CargaSerie(1) - - End Sub - Private Sub CreaDtDetalle() - If DtDatosDetalle Is Nothing Then - DtDatosDetalle = New DataTable - DtDatosDetalle.Columns.Add("Consec", GetType(Integer)) - DtDatosDetalle.Columns.Add("ConsecId", GetType(Integer)) - DtDatosDetalle.Columns.Add("CvePS", GetType(Integer)) - DtDatosDetalle.Columns.Add("CveUM", GetType(Integer)) - DtDatosDetalle.Columns.Add("PU", GetType(Decimal)) - DtDatosDetalle.Columns.Add("Serie", GetType(String)) - DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(String)) - End If - End Sub - - Private Sub CargaSerie(Tipo As Integer, Optional CerrarCompletado As Boolean = False) - 'RegistraScript("document.getElementById(""TxtSerieLote"").focus();") - RegistraScript("$('#DivSerie').modal();", "ModalLote") - - Dim AplicaCaducidad = False - If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then - AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False) - End If - - If AplicaCaducidad Then - GvSerie.Columns(1).Visible = True - TdCaducidad1.Visible = True - TdCaducidad2.Visible = True - Else - GvSerie.Columns(1).Visible = False - TdCaducidad1.Visible = False - TdCaducidad2.Visible = False - End If - - GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote), "Consec DESC") - GvSerie.DataBind() - - 'VALIDA QUE SIGA AGREGANDO - If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote)).Rows.Count < LbCantidad.Text.ToEntero Then - BtnAgregarPS.Enabled = False - If CerrarCompletado Then - RegistraScript("$('#DivSerie').modal('hide');") - End If - Else - BtnAgregarPS.Enabled = True - End If - - 'SI TIENE ENTRADA POR SERIE LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD - Dim Contador = 0 - For Each Gvr As GridViewRow In GvInv.Rows - If Gvr.DataKey("CvePS").ToEntero = CvePSSerieLote Then - Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count - Gvr.FCCheckBox("cbInv").Enabled = False - Gvr.FCTextBox("TbCantidadF").Enabled = False - If DtDatosDetalle IsNot Nothing AndAlso Contador > 0 Then - Gvr.FCCheckBox("cbInv").Checked = True - Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString - ElseIf Gvr.DataKey("CantidadF").ToString.ToDecimal <> 0 Then - Gvr.FCCheckBox("cbInv").Checked = False - Gvr.FCTextBox("TbCantidadF").Text = "0" - End If - End If - - Dim Dr = DtInv.Select($"Consec = {Gvr.DataKey("Consec")}")(0) - Dr("CantidadSurtidaPantalla") = Gvr.FCTextBox("TbCantidadF").Text.ToDouble - DtInv.AcceptChanges() - Next - - - UPInv.Update() - UpSerie.Update() - TxtSerieLote.Text = "" - TxtSerieLote.Focus() - - If Tipo = 1 Then - RegistraScript(String.Format("$('#{0}').on('shown.bs.modal', function () {{$('#{0}').focus(); $('#{0}').trigger(jQuery.Event('keypress', {{which: 13}})); }});$('#DivSerie').modal('show'); ", TxtSerieLote.ClientID)) - End If - - End Sub - Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs) - AgregaSerieLote(TxtSerieLote.Text.Replace(" ", String.Empty), 1) - End Sub - Private Sub AgregaSerieLote(SerieLote As String, Tipo As Integer) - 'SerieLote = SerieLote.Trim.Replace(" ", " ") - - If SerieLote.Trim = "" Then - Alert("El campo Serie es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - Dim SeriesArreglo = SerieLote.Trim.Split(";"c) - - 'VALIDACION DE SERIES DUPLICADAS - Dim MensajeAlert As New StringBuilder - Dim DtDuplicado As New DataTable - Dim DtSeriesNuevas As New DataTable - DtSeriesNuevas.Columns.Add("Serie", GetType(String)) - - 'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS - Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltroPrimero("", "PS") - - For Each Serie In SeriesArreglo - DtDuplicado = DtDatosDetalle.FiltraParametros($"ConsecId = {CveConsecSerieLote} AND Serie = '{Serie}'") - If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then - MensajeAlert.Append($"
    El numero de Serie ""{Serie}"" proporcionado ya se encuentra ingresado.") - Continue For - End If - - DtDuplicado = DtSeriesNuevas.FiltraParametros($"Serie = '{Serie}'") - If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then - MensajeAlert.Append($"
    El numero de Serie ""{Serie}"" proporcionado se encuentra duplicado.") - Continue For - End If - - 'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS - If Serie.ToUpper = dr("Codigo").ToString.ToUpper Or Serie.ToUpper = dr("CodigoBarras").ToString.ToUpper Then - MensajeAlert.Append($"
    El numero de Serie {Serie} coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.") - Continue For - End If - - Dim Row = DtSeriesNuevas.NewRow - Row("Serie") = Serie - DtSeriesNuevas.Rows.Add(Row) - Next - - If MensajeAlert.ToString <> "" Then - Alert(MensajeAlert.ToString, TipoMensaje.MsgAdvertencia) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - - - Dim MensajeSinExistencias As New StringBuilder - Dim ObjInventarios As New ClsInventarios - Dim Index = 0 - - For Each Serie In SeriesArreglo - Dim Row = DtDatosDetalle.NewRow - - Index = Index + 1 - If Index > LbCantidad.Text.ToEntero Then - Exit For - End If - - 'VALIDA QUE SIGA AGREGANDO - If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote)).Rows.Count < LbCantidad.Text.ToEntero Then - Exit For - End If - - 'VERIFICA EXISTENCIAS - If TipoMovimiento > 1 Then - Dim Existencia = ObjInventarios.GetExistenciasPS(CvePSSerieLote, CveUMSerieLote, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=Serie) - If Existencia < 1 Then - MensajeSinExistencias.Append($"Serie: {Serie}.
    ") - Continue For - End If - - If TipoMovimiento = 2 Then - If DtExistencias.SUM("Existencia", $"SerieLote = {Serie}") = 0 Then - MensajeSinExistencias.Append($"Serie: {Serie}.
    ") - Continue For - End If - End If - End If - - Dim AplicaCaducidad = False - If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then - AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False) - End If - - Row("ConsecId") = CveConsecSerieLote - Row("Consec") = DtDatosDetalle.Rows.Count + 1 - Row("CvePS") = CvePSSerieLote - Row("CveUM") = CveUMSerieLote - Row("PU") = PUSerieLote - Row("Serie") = Serie - Row("FechaCaducidad") = If(AplicaCaducidad, TxtFechaCaducidad.Text, MinFecha.ToShortDateString) - - DtDatosDetalle.Rows.Add(Row) - Next - ObjInventarios.Dispose() - - If Tipo = 1 Then - TxtSerieLote.Text = "" - TxtFechaCaducidad.Text = Now.ToShortDateString - End If - - CargaSerie(Tipo, True) - - If MensajeAlert.ToString <> "" Then - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Else - If MensajeSinExistencias.ToString <> "" Then - Alert($"Las siguientes Series no cuentan con la existencia suficiente por lo cual se omitieron.
    {MensajeSinExistencias.ToString}", TipoMensaje.MsgAdvertencia) - End If - RegistraScript("playsonidito('beep-07.wav')") - End If - - End Sub - - Protected Sub GvSerie_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSerie.RowDeleting - Dim keySerieLote As String = e.Keys("Serie").ToString - Try - For Each dr As DataRow In DtDatosDetalle.Rows - If dr("Serie").ToString = keySerieLote Then - dr.Delete() - End If - Next - Catch ex As Exception - - End Try - - DtDatosDetalle.AcceptChanges() +#Region " AGREGA POR SERIE/LOTE " + Protected Sub BtnSerieLote_Click(sender As Object, e As EventArgs) + + Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c) + + LbProducto.Text = Argumentos(3) + LbCantidad.Text = Argumentos(4).FormatoNumero + TxtFechaCaducidad.Text = Now.ToShortDateString() + + CvePSSerieLote = Argumentos(0).ToEntero + CveUMSerieLote = Argumentos(1).ToEntero + PUSerieLote = Argumentos(2).ToDecimal + CveConsecSerieLote = Argumentos(5).ToEntero + + CargaSerie(1) + + End Sub + Private Sub CreaDtDetalle() + If DtDatosDetalle Is Nothing Then + DtDatosDetalle = New DataTable + DtDatosDetalle.Columns.Add("Consec", GetType(Integer)) + DtDatosDetalle.Columns.Add("ConsecId", GetType(Integer)) + DtDatosDetalle.Columns.Add("CvePS", GetType(Integer)) + DtDatosDetalle.Columns.Add("CveUM", GetType(Integer)) + DtDatosDetalle.Columns.Add("PU", GetType(Decimal)) + DtDatosDetalle.Columns.Add("Serie", GetType(String)) + DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(String)) + End If + End Sub + + Private Sub CargaSerie(Tipo As Integer, Optional CerrarCompletado As Boolean = False) + 'RegistraScript("document.getElementById(""TxtSerieLote"").focus();") + RegistraScript("$('#DivSerie').modal();", "ModalLote") + + 'Dim AplicaCaducidad = False + 'If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then + ' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False) + 'End If + + 'If AplicaCaducidad Then + ' GvSerie.Columns(1).Visible = True + ' TdCaducidad1.Visible = True + ' TdCaducidad2.Visible = True + 'Else + ' GvSerie.Columns(1).Visible = False + ' TdCaducidad1.Visible = False + ' TdCaducidad2.Visible = False + 'End If + + GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote), "Consec DESC") + GvSerie.DataBind() + + 'VALIDA QUE SIGA AGREGANDO + If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote)).Rows.Count < LbCantidad.Text.ToEntero Then + BtnAgregarPS.Enabled = False + If CerrarCompletado Then + RegistraScript("$('#DivSerie').modal('hide');") + End If + Else + BtnAgregarPS.Enabled = True + End If + + 'SI TIENE ENTRADA POR SERIE LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD + Dim Contador = 0 + For Each Gvr As GridViewRow In GvInv.Rows + If Gvr.DataKey("CvePS").ToEntero = CvePSSerieLote Then + Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count + Gvr.FCCheckBox("cbInv").Enabled = False + Gvr.FCTextBox("TbCantidadF").Enabled = False + If DtDatosDetalle IsNot Nothing AndAlso Contador > 0 Then + Gvr.FCCheckBox("cbInv").Checked = True + Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString + ElseIf Gvr.DataKey("CantidadF").ToString.ToDecimal <> 0 Then + Gvr.FCCheckBox("cbInv").Checked = False + Gvr.FCTextBox("TbCantidadF").Text = "0" + End If + End If + + Dim Dr = DtInv.Select($"Consec = {Gvr.DataKey("Consec")}")(0) + Dr("CantidadSurtidaPantalla") = Gvr.FCTextBox("TbCantidadF").Text.ToDouble + DtInv.AcceptChanges() + Next + + + UPInv.Update() + UpSerie.Update() + TxtSerieLote.Text = "" + TxtSerieLote.Focus() + + If Tipo = 1 Then + RegistraScript(String.Format("$('#{0}').on('shown.bs.modal', function () {{$('#{0}').focus(); $('#{0}').trigger(jQuery.Event('keypress', {{which: 13}})); }});$('#DivSerie').modal('show'); ", TxtSerieLote.ClientID)) + End If + + End Sub + Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs) + AgregaSerieLote(TxtSerieLote.Text.Replace(" ", String.Empty), 1) + End Sub + Private Sub AgregaSerieLote(SerieLote As String, Tipo As Integer) + 'SerieLote = SerieLote.Trim.Replace(" ", " ") + + If SerieLote.Trim = "" Then + Alert("El campo Serie es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim SeriesArreglo = SerieLote.Trim.Split(";"c) + + 'VALIDACION DE SERIES DUPLICADAS + Dim MensajeAlert As New StringBuilder + Dim DtDuplicado As New DataTable + Dim DtSeriesNuevas As New DataTable + DtSeriesNuevas.Columns.Add("Serie", GetType(String)) + + 'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS + Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltroPrimero("", "PS") + + For Each Serie In SeriesArreglo + DtDuplicado = DtDatosDetalle.FiltraParametros($"ConsecId = {CveConsecSerieLote} AND Serie = '{Serie}'") + If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then + MensajeAlert.Append($"
    El numero de Serie ""{Serie}"" proporcionado ya se encuentra ingresado.") + Continue For + End If + + DtDuplicado = DtSeriesNuevas.FiltraParametros($"Serie = '{Serie}'") + If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then + MensajeAlert.Append($"
    El numero de Serie ""{Serie}"" proporcionado se encuentra duplicado.") + Continue For + End If + + 'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS + If Serie.ToUpper = dr("Codigo").ToString.ToUpper Or Serie.ToUpper = dr("CodigoBarras").ToString.ToUpper Then + MensajeAlert.Append($"
    El numero de Serie {Serie} coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.") + Continue For + End If + + Dim Row = DtSeriesNuevas.NewRow + Row("Serie") = Serie + DtSeriesNuevas.Rows.Add(Row) + Next + + If MensajeAlert.ToString <> "" Then + Alert(MensajeAlert.ToString, TipoMensaje.MsgAdvertencia) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + + + Dim MensajeSinExistencias As New StringBuilder + Dim ObjInventarios As New ClsInventarios + Dim Index = 0 + + For Each Serie In SeriesArreglo + Dim Row = DtDatosDetalle.NewRow + + Index = Index + 1 + If Index > LbCantidad.Text.ToEntero Then + Exit For + End If + + 'VALIDA QUE SIGA AGREGANDO + If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote)).Rows.Count < LbCantidad.Text.ToEntero Then + Exit For + End If + + 'VERIFICA EXISTENCIAS + If TipoMovimiento > 1 Then + Dim Existencia = ObjInventarios.GetExistenciasPS(CvePSSerieLote, CveUMSerieLote, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=Serie) + If Existencia < 1 Then + MensajeSinExistencias.Append($"Serie: {Serie}.
    ") + Continue For + End If + + If TipoMovimiento = 2 Then + If DtExistencias.SUM("Existencia", $"SerieLote = {Serie}") = 0 Then + MensajeSinExistencias.Append($"Serie: {Serie}.
    ") + Continue For + End If + End If + End If + + 'Dim AplicaCaducidad = False + 'If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then + ' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False) + 'End If + + Row("ConsecId") = CveConsecSerieLote + Row("Consec") = DtDatosDetalle.Rows.Count + 1 + Row("CvePS") = CvePSSerieLote + Row("CveUM") = CveUMSerieLote + Row("PU") = PUSerieLote + Row("Serie") = Serie + Row("FechaCaducidad") = MinFecha.ToShortDateString + + DtDatosDetalle.Rows.Add(Row) + Next + ObjInventarios.Dispose() + + If Tipo = 1 Then + TxtSerieLote.Text = "" + TxtFechaCaducidad.Text = Now.ToShortDateString + End If + + CargaSerie(Tipo, True) + + If MensajeAlert.ToString <> "" Then + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Else + If MensajeSinExistencias.ToString <> "" Then + Alert($"Las siguientes Series no cuentan con la existencia suficiente por lo cual se omitieron.
    {MensajeSinExistencias.ToString}", TipoMensaje.MsgAdvertencia) + End If + RegistraScript("playsonidito('beep-07.wav')") + End If + + End Sub + + Protected Sub GvSerie_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSerie.RowDeleting + Dim keySerieLote As String = e.Keys("Serie").ToString + Try + For Each dr As DataRow In DtDatosDetalle.Rows + If dr("Serie").ToString = keySerieLote Then + dr.Delete() + End If + Next + Catch ex As Exception + + End Try + + DtDatosDetalle.AcceptChanges() CargaSerie(1) End Sub @@ -2092,7 +2172,7 @@ Partial Class Inventarios_RecepcionAlmacen PU = Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (PU)) End If End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) Then ErrorMovInv = True Exit For End If @@ -2107,7 +2187,7 @@ Partial Class Inventarios_RecepcionAlmacen PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (Dr("Cantidad").ToString.ToDecimal * (PU)))) / Dr("Cantidad").ToString.ToDecimal End If End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) Then ErrorMovInv = True Exit For End If @@ -2122,7 +2202,7 @@ Partial Class Inventarios_RecepcionAlmacen PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - tTotal)) / gvr.FCTextBox("TbCantidadF").Text.ToDecimal End If End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) Then ErrorMovInv = True Exit For End If @@ -2793,306 +2873,306 @@ Partial Class Inventarios_RecepcionAlmacen If CveMovimientoVirtual > 0 Then link = String.Format("{1}", CveMovimientoVirtual, FolioVirtual) Msg.AppendFormat("
    Movimiento de Entrada al Almacen Virtual: Folio: {0}", link) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtual))) - - End If - - 'CONTABILIDAD - Msg.Append(MensajeContabilidad) - - Alert(Msg.ToString, TipoMensaje.MsgInformacion) - - If ObjInventario.RecepcionAlmacenGet(CveCompraSurtir, -1, UsuarioActual.CveEmpresa) Then - CreaDTInv(ObjInventario.DtResultados) - CargaGVInv() - BtnGuardar.Visible = True - End If - Limpia() - - Else - ObjInventario.RollBack() - If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() - If ObjContaContPAQ IsNot Nothing Then ObjContaContPAQ.RollBack() - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Alert($"Ocurrió un error al guardar el movimiento de almacén. Por favor vuelva a intentar.

    {MensajeError}", TipoMensaje.MsgError) - End If - - ObjInventario.Dispose() - If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose() - If ObjContaContPAQ IsNot Nothing Then ObjContaContPAQ.Dispose() - End Sub - Private Sub GuardaImportacionFlete() - Dim CveMovimiento As Integer - Dim InvFolio As String = "" - Dim FechaMovto As Date = TxtFecha.Text.ToDate - Dim ErrorMovInv As Boolean - Dim MensajeError = "" - - Dim ObjInventario As New ClsInventarios - Dim ObjBitacora As New ClsOIEventos(ObjInventario.IniciaTransacSQL()) - Dim ObjCompras As New ClsCompras(ObjInventario.IniciaTransacSQL()) - Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) - Dim ObjOC As New ClsOC(ObjInventario.IniciaTransacSQL()) - Dim ObjContaAC As ClsContPAQi = Nothing - - 'ENTRADA ALMACÉN - CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 2, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveImportacionCompra, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=-1, Remision:=TxtRemision.Text, Modulo:="RA/G") - If CveMovimiento > 0 Then - InvFolio = ObjInventario.Folio.ToString - Dim DtDetalle As New DataTable - Dim DtDetalleLote As New DataTable - Dim PU As Decimal = 0 - Dim CostoIndirecto As Decimal = 0 - Dim PUExtranjero As Decimal = 0 - For Each gvr As GridViewRow In GvInv.Rows - If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then - - PU = DtInv.Rows(gvr.RowIndex)("PU").ToString.ToDecimal - CostoIndirecto = DtInv.Rows(gvr.RowIndex)("CostoIndirecto").ToString.ToDecimal - PUExtranjero = DtInv.Rows(gvr.RowIndex)("PUExtranjero").ToString.ToDecimal - - 'SI FUE POR SERIE LOTE - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) - DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) - If DtDetalle.Rows.Count > 0 Then - For Each Dr As DataRow In DtDetalle.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto) Then - ErrorMovInv = True - Exit For - End If - Next - ElseIf DtDetalleLote.Rows.Count > 0 Then - For Each Dr As DataRow In DtDetalleLote.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto) Then - ErrorMovInv = True - Exit For - End If - Next - Else - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto) Then - ErrorMovInv = True - Exit For - End If - End If - - End If - Next - Else - ErrorMovInv = True - End If - - 'AGREGA BITACORA TEMPORAL - If DtBitacora IsNot Nothing AndAlso DtBitacora.Rows.Count > 0 Then - ErrorMovInv = GuardaBitacoraTemporal(ObjBitacora, CveMovimiento) - End If - Dim CvePrePoliza As Integer = 0 - Dim UsaComplementariaCostoIndirecto As Boolean = False - If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaCostoIndirecto = False - Dim PorcentajeCompraImportacion As Decimal = 0 ' si hay mas de una factura de importación saber lo que se está recibiendo - - 'SE REGISTRAN LAS PREPOLIZAS - If Not ErrorMovInv Then - CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen CostoInd", 74, 0, 0, 1, FechaMovto, TxtObservaciones.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - Dim DtTempCompras As DataTable = Nothing - PorcentajeCompraImportacion = 1 - If CveFleteSurtir > 0 Then - If ObjInventario.GetFleteDetalle(CveFleteSurtir) Then - DtTempCompras = ObjInventario.DtResultados - ' faltaría agregar la factura de producto, - If ObjCompras.GetCompras(CveFleteCompra, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then - Dim drc As DataRow = DtTempCompras.NewRow - Dim drr As DataRow = ObjCompras.DtResultados.FiltroPrimero("") - If drr IsNot Nothing Then - drc("CveCompra") = CveFleteCompra - drc("SubTotal") = drr("SubTotal") - drc("TipoCambio") = drr("TipoCambio") - drc("CveProveedor") = drr("CveProveedor") - DtTempCompras.Rows.Add(drc) - End If - - End If - - Else - ErrorMovInv = True - End If - Else - - If CveImportacionSurtir > 0 Then - - If ObjCompras.GetImportacionesDetalle(CveImportacionSurtir, -1) Then - DtTempCompras = ObjCompras.DtResultados - Dim CveCompraImportacion As Integer = -1 - If (DdlFactura.SelectedValue.ToEntero > 0) Then CveCompraImportacion = DdlFactura.SelectedValue.ToEntero - - If ObjCompras.GetImportacionCompras(CveImportacionSurtir, CveCompraImportacion) Then - For Each drt As DataRow In ObjCompras.DtResultados.Rows - PorcentajeCompraImportacion = If(CveCompraImportacion > 0, drt("PorcentajeCompra").ToString.ToDecimal, 1) - Dim drc As DataRow = DtTempCompras.NewRow - drc("CveCompra") = drt("CveCompra") - drc("SubTotal") = drt("SubTotal") - drc("TipoCambio") = drt("TipoCambio") - drc("CveProveedor") = drt("CveProveedor") - DtTempCompras.Rows.Add(drc) - Next - - End If - - - - Else - ErrorMovInv = True - End If - End If - End If - If CvePrePoliza > 0 Then - Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) - Dim TotalCosto As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL() - Dim IdCtaContableCostoInd As Integer = 0 - - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen) Then - 'se recorren las facturas a descontar el recepción - If DtTempCompras IsNot Nothing AndAlso DtTempCompras.Rows.Count > 0 Then - - For Each dr As DataRow In DtTempCompras.Rows - Dim CveComp As Integer = dr("CveCompra").ToString.ToEntero - 'el porcentaje solo aplica a las facturas de costo indirecto - Dim SubTotalPartida As Decimal = dr("SubTotal").ToString.ToDecimal * If(dr("TipoCompra").ToString = "CI", PorcentajeCompraImportacion, 1) - Dim ImporteAbono As Decimal = (SubTotalPartida * dr("TipoCambio").ToString.ToDecimal).RoundSQL - Dim ImporteAbonoME As Decimal = 0 - Dim CveConceptoCostoIndirecto As Integer = If(CveImportacionSurtir > 0, 240, 237) - - If ObjConta.GetRetCuenta(CveConceptoCostoIndirecto, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableCostoInd = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - - If UsaComplementariaCostoIndirecto Then - CveConceptoCostoIndirecto = If(CveImportacionSurtir > 0, 241, 238) - ImporteAbono = SubTotalPartida - ImporteAbonoME = (SubTotalPartida * dr("TipoCambio").ToString.ToDecimal) - SubTotalPartida - End If - - - - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAbono, InvFolio, CveConceptoCostoIndirecto, InvFolio, FechaMovto, IdCtaContableCostoInd, -1, CveCompra:=CveComp, CveProveedor:=dr("CveProveedor").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ImporteAbono) Then - ' si tiene valor es que hay complementaria - If ImporteAbonoME > 0 Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAbono, InvFolio, If(CveImportacionSurtir > 0, 242, 239), InvFolio, FechaMovto, IdCtaContableCostoInd, -1, CveCompra:=CveComp, CveProveedor:=dr("CveProveedor").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ImporteAbono) Then - ErrorMovInv = True - End If - End If - Else - ErrorMovInv = True - End If - Next - - End If - End If - - - Else - ErrorMovInv = True - End If - End If - - If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Inventarios/RecepcionAlmacen-PPCompOC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - ErrorMovInv = True - End If - End If - - If Not ErrorMovInv AndAlso UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) - ObjContaAC.IniciaTransacSQL() - If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaAC) Then - MensajeError = $"
    Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
    " - Else - ErrorMovInv = True - MensajeError = "Error al contabilizar los conceptos contables" - End If - End If - - - 'FINAL - If Not ErrorMovInv Then - ObjInventario.Commit() ' aplica los movimientos insertados - If ObjContaAC IsNot Nothing Then ObjContaAC.Commit() - RegistraScript("playsonidito('beep-07.wav')") - - Dim Msg As New StringBuilder - Dim link As String = String.Format("{1}", CveMovimiento, InvFolio) - Msg.AppendFormat("Movimiento Registrado: Folio: {0}", link) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) - - Alert(Msg.ToString, TipoMensaje.MsgInformacion) - - Limpia() - Else - ObjInventario.RollBack() - If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - GuardaLog(MensajeError) - Alert("Error al guardar el movimiento de almacen. Por favor vuelva a intentar.", TipoMensaje.MsgError) - End If - - ObjInventario.Dispose() - If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose() - End Sub - Private Sub Limpia() - CveCompraSurtir = -1 - CvePrePolizaCompra = -1 - CveOCSurtir = -1 - CveImportacionSurtir = -1 - CveImportacionProveedor = -1 - CveImportacionCompra = -1 - BuscaEntregaDirecta = -1 - DivAdvertencia.Visible = False - EntregaDirecta = False - DtInv = Nothing - CargaGVInv() - TxtObservaciones.Text = "" - TxtOC.Text = "" - TxtFecha.Text = Now.ToShortDateString - DdlAlmacen.SelectedValueExist(-1) - TxtRemision.Text = "" - - 'ddlProveedor.SelectedValueExist(-1) - ddlProveedor.SelectedValue = "-1" - DdlFolio.Items.Clear() - DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) - DdlFolioOC.Items.Clear() - DdlFolioOC.Items.Insert(0, New ListItem("Seleccione", "-1")) - DdlFolioImportacion.Items.Clear() - DdlFolioImportacion.Items.Insert(0, New ListItem("Seleccione", "-1")) - CargaFoliosRecepcion() - - DtBitacora.Clear() - DivBitacora.Visible = False - CargaEventoBitacoraTemp() - - DdlMonedaTC.SelectedValueExist("1") - TipoCambio = 0 - 'TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString - DivTipoCambio.Visible = False - - DivAdvertencia.Visible = False - - UpTipoCambio.Update() - UPInv.Update() - UpGenerales.Update() - UpFiltros.Update() - - HLFolio.Text = "" - HLFolio.NavigateUrl = "#" - LbProveedor.Text = "" - LbDescripcionCompra.Text = "" - UpDatosCompra.Update() - CargaPendientes() - - End Sub - Private Function GuardaPrePoliza() As Boolean + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtual))) + + End If + + 'CONTABILIDAD + Msg.Append(MensajeContabilidad) + + Alert(Msg.ToString, TipoMensaje.MsgInformacion) + + If ObjInventario.RecepcionAlmacenGet(CveCompraSurtir, -1, UsuarioActual.CveEmpresa) Then + CreaDTInv(ObjInventario.DtResultados) + CargaGVInv() + BtnGuardar.Visible = True + End If + Limpia() + + Else + ObjInventario.RollBack() + If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() + If ObjContaContPAQ IsNot Nothing Then ObjContaContPAQ.RollBack() + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Alert($"Ocurrió un error al guardar el movimiento de almacén. Por favor vuelva a intentar.

    {MensajeError}", TipoMensaje.MsgError) + End If + + ObjInventario.Dispose() + If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose() + If ObjContaContPAQ IsNot Nothing Then ObjContaContPAQ.Dispose() + End Sub + Private Sub GuardaImportacionFlete() + Dim CveMovimiento As Integer + Dim InvFolio As String = "" + Dim FechaMovto As Date = TxtFecha.Text.ToDate + Dim ErrorMovInv As Boolean + Dim MensajeError = "" + + Dim ObjInventario As New ClsInventarios + Dim ObjBitacora As New ClsOIEventos(ObjInventario.IniciaTransacSQL()) + Dim ObjCompras As New ClsCompras(ObjInventario.IniciaTransacSQL()) + Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) + Dim ObjOC As New ClsOC(ObjInventario.IniciaTransacSQL()) + Dim ObjContaAC As ClsContPAQi = Nothing + + 'ENTRADA ALMACÉN + CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 2, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveImportacionCompra, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=-1, Remision:=TxtRemision.Text, Modulo:="RA/G") + If CveMovimiento > 0 Then + InvFolio = ObjInventario.Folio.ToString + Dim DtDetalle As New DataTable + Dim DtDetalleLote As New DataTable + Dim PU As Decimal = 0 + Dim CostoIndirecto As Decimal = 0 + Dim PUExtranjero As Decimal = 0 + For Each gvr As GridViewRow In GvInv.Rows + If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then + + PU = DtInv.Rows(gvr.RowIndex)("PU").ToString.ToDecimal + CostoIndirecto = DtInv.Rows(gvr.RowIndex)("CostoIndirecto").ToString.ToDecimal + PUExtranjero = DtInv.Rows(gvr.RowIndex)("PUExtranjero").ToString.ToDecimal + + 'SI FUE POR SERIE LOTE + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) + DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) + If DtDetalle.Rows.Count > 0 Then + For Each Dr As DataRow In DtDetalle.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) Then + ErrorMovInv = True + Exit For + End If + Next + ElseIf DtDetalleLote.Rows.Count > 0 Then + For Each Dr As DataRow In DtDetalleLote.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) Then + ErrorMovInv = True + Exit For + End If + Next + Else + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) Then + ErrorMovInv = True + Exit For + End If + End If + + End If + Next + Else + ErrorMovInv = True + End If + + 'AGREGA BITACORA TEMPORAL + If DtBitacora IsNot Nothing AndAlso DtBitacora.Rows.Count > 0 Then + ErrorMovInv = GuardaBitacoraTemporal(ObjBitacora, CveMovimiento) + End If + Dim CvePrePoliza As Integer = 0 + Dim UsaComplementariaCostoIndirecto As Boolean = False + If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaCostoIndirecto = False + Dim PorcentajeCompraImportacion As Decimal = 0 ' si hay mas de una factura de importación saber lo que se está recibiendo + + 'SE REGISTRAN LAS PREPOLIZAS + If Not ErrorMovInv Then + CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen CostoInd", 74, 0, 0, 1, FechaMovto, TxtObservaciones.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + Dim DtTempCompras As DataTable = Nothing + PorcentajeCompraImportacion = 1 + If CveFleteSurtir > 0 Then + If ObjInventario.GetFleteDetalle(CveFleteSurtir) Then + DtTempCompras = ObjInventario.DtResultados + ' faltaría agregar la factura de producto, + If ObjCompras.GetCompras(CveFleteCompra, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then + Dim drc As DataRow = DtTempCompras.NewRow + Dim drr As DataRow = ObjCompras.DtResultados.FiltroPrimero("") + If drr IsNot Nothing Then + drc("CveCompra") = CveFleteCompra + drc("SubTotal") = drr("SubTotal") + drc("TipoCambio") = drr("TipoCambio") + drc("CveProveedor") = drr("CveProveedor") + DtTempCompras.Rows.Add(drc) + End If + + End If + + Else + ErrorMovInv = True + End If + Else + + If CveImportacionSurtir > 0 Then + + If ObjCompras.GetImportacionesDetalle(CveImportacionSurtir, -1) Then + DtTempCompras = ObjCompras.DtResultados + Dim CveCompraImportacion As Integer = -1 + If (DdlFactura.SelectedValue.ToEntero > 0) Then CveCompraImportacion = DdlFactura.SelectedValue.ToEntero + + If ObjCompras.GetImportacionCompras(CveImportacionSurtir, CveCompraImportacion) Then + For Each drt As DataRow In ObjCompras.DtResultados.Rows + PorcentajeCompraImportacion = If(CveCompraImportacion > 0, drt("PorcentajeCompra").ToString.ToDecimal, 1) + Dim drc As DataRow = DtTempCompras.NewRow + drc("CveCompra") = drt("CveCompra") + drc("SubTotal") = drt("SubTotal") + drc("TipoCambio") = drt("TipoCambio") + drc("CveProveedor") = drt("CveProveedor") + DtTempCompras.Rows.Add(drc) + Next + + End If + + + + Else + ErrorMovInv = True + End If + End If + End If + If CvePrePoliza > 0 Then + Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) + Dim TotalCosto As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL() + Dim IdCtaContableCostoInd As Integer = 0 + + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen) Then + 'se recorren las facturas a descontar el recepción + If DtTempCompras IsNot Nothing AndAlso DtTempCompras.Rows.Count > 0 Then + + For Each dr As DataRow In DtTempCompras.Rows + Dim CveComp As Integer = dr("CveCompra").ToString.ToEntero + 'el porcentaje solo aplica a las facturas de costo indirecto + Dim SubTotalPartida As Decimal = dr("SubTotal").ToString.ToDecimal * If(dr("TipoCompra").ToString = "CI", PorcentajeCompraImportacion, 1) + Dim ImporteAbono As Decimal = (SubTotalPartida * dr("TipoCambio").ToString.ToDecimal).RoundSQL + Dim ImporteAbonoME As Decimal = 0 + Dim CveConceptoCostoIndirecto As Integer = If(CveImportacionSurtir > 0, 240, 237) + + If ObjConta.GetRetCuenta(CveConceptoCostoIndirecto, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableCostoInd = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + + If UsaComplementariaCostoIndirecto Then + CveConceptoCostoIndirecto = If(CveImportacionSurtir > 0, 241, 238) + ImporteAbono = SubTotalPartida + ImporteAbonoME = (SubTotalPartida * dr("TipoCambio").ToString.ToDecimal) - SubTotalPartida + End If + + + + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAbono, InvFolio, CveConceptoCostoIndirecto, InvFolio, FechaMovto, IdCtaContableCostoInd, -1, CveCompra:=CveComp, CveProveedor:=dr("CveProveedor").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ImporteAbono) Then + ' si tiene valor es que hay complementaria + If ImporteAbonoME > 0 Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAbono, InvFolio, If(CveImportacionSurtir > 0, 242, 239), InvFolio, FechaMovto, IdCtaContableCostoInd, -1, CveCompra:=CveComp, CveProveedor:=dr("CveProveedor").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ImporteAbono) Then + ErrorMovInv = True + End If + End If + Else + ErrorMovInv = True + End If + Next + + End If + End If + + + Else + ErrorMovInv = True + End If + End If + + If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Inventarios/RecepcionAlmacen-PPCompOC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + ErrorMovInv = True + End If + End If + + If Not ErrorMovInv AndAlso UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) + ObjContaAC.IniciaTransacSQL() + If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaAC) Then + MensajeError = $"
    Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
    " + Else + ErrorMovInv = True + MensajeError = "Error al contabilizar los conceptos contables" + End If + End If + + + 'FINAL + If Not ErrorMovInv Then + ObjInventario.Commit() ' aplica los movimientos insertados + If ObjContaAC IsNot Nothing Then ObjContaAC.Commit() + RegistraScript("playsonidito('beep-07.wav')") + + Dim Msg As New StringBuilder + Dim link As String = String.Format("{1}", CveMovimiento, InvFolio) + Msg.AppendFormat("Movimiento Registrado: Folio: {0}", link) + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) + + Alert(Msg.ToString, TipoMensaje.MsgInformacion) + + Limpia() + Else + ObjInventario.RollBack() + If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + GuardaLog(MensajeError) + Alert("Error al guardar el movimiento de almacen. Por favor vuelva a intentar.", TipoMensaje.MsgError) + End If + + ObjInventario.Dispose() + If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose() + End Sub + Private Sub Limpia() + CveCompraSurtir = -1 + CvePrePolizaCompra = -1 + CveOCSurtir = -1 + CveImportacionSurtir = -1 + CveImportacionProveedor = -1 + CveImportacionCompra = -1 + BuscaEntregaDirecta = -1 + DivAdvertencia.Visible = False + EntregaDirecta = False + DtInv = Nothing + CargaGVInv() + TxtObservaciones.Text = "" + TxtOC.Text = "" + TxtFecha.Text = Now.ToShortDateString + DdlAlmacen.SelectedValueExist(-1) + TxtRemision.Text = "" + + 'ddlProveedor.SelectedValueExist(-1) + ddlProveedor.SelectedValue = "-1" + DdlFolio.Items.Clear() + DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) + DdlFolioOC.Items.Clear() + DdlFolioOC.Items.Insert(0, New ListItem("Seleccione", "-1")) + DdlFolioImportacion.Items.Clear() + DdlFolioImportacion.Items.Insert(0, New ListItem("Seleccione", "-1")) + CargaFoliosRecepcion() + + DtBitacora.Clear() + DivBitacora.Visible = False + CargaEventoBitacoraTemp() + + DdlMonedaTC.SelectedValueExist("1") + TipoCambio = 0 + 'TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString + DivTipoCambio.Visible = False + + DivAdvertencia.Visible = False + + UpTipoCambio.Update() + UPInv.Update() + UpGenerales.Update() + UpFiltros.Update() + + HLFolio.Text = "" + HLFolio.NavigateUrl = "#" + LbProveedor.Text = "" + LbDescripcionCompra.Text = "" + UpDatosCompra.Update() + CargaPendientes() + + End Sub + Private Function GuardaPrePoliza() As Boolean Return True End Function #End Region @@ -3733,6 +3813,94 @@ Partial Class Inventarios_RecepcionAlmacen CargaSeccionAlmacen() End Sub +#End Region + +#Region "DIVIDIR" + + Protected Sub Dividir(sender As Object, e As EventArgs) + Dim index2 As Integer = 0 + + For Each Row As DataRow In DtInv.Rows + Row("Seleccionado") = GvInv.Rows(index2).FCCheckBox("cbInv").Checked + If GvInv.Rows(index2).FCTextBox("TbCantidadF").Text <> "" Then + Row("CantidadSeleccionada") = GvInv.Rows(index2).FCTextBox("TbCantidadF").Text + End If + If GvInv.Rows(index2).FCTextBox("TxtLote").Text <> "" Then + Row("Lote") = GvInv.Rows(index2).FCTextBox("TxtLote").Text + End If + If GvInv.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue <> "-1" Then + Row("CveSeccion") = GvInv.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero + End If + If GvInv.Rows(index2).FCTextBox("TxtCaducidad").Text <> "" Then + Row("Caducidad") = GvInv.Rows(index2).FCTextBox("TxtCaducidad").Text.ToDate + End If + index2 += 1 + Next + DtInv.AcceptChanges() + + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, Button)).NamingContainer, GridViewRow) + Dim Index As Integer = gvRow.RowIndex + Dim Cantidad As String = HdnCantidadMovimiento.Value + Dim dr1 As DataRow = DtInv.Rows(Index) + Dim dr As DataRow = DtInv.NewRow + dr.ItemArray = dr1.ItemArray + dr1("CantidadC") = (dr1("CantidadC").ToString.ToDouble - Cantidad.ToDouble) + Dim CantidadFOriginal As Double = dr1("CantidadF").ToString.ToDouble + dr1("CantidadF") = (dr1("CantidadF").ToString.ToDouble - Cantidad.ToDouble) + Dim CantidadSOriginal As Double = dr1("CantidadS").ToString.ToDouble + dr1("CantidadS") = (CantidadSOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal + Dim CantidadSeleccionadaOriginal As Double = dr1("CantidadSeleccionada").ToString.ToDouble + dr1("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > dr1("CantidadF").ToString.ToDouble, dr1("CantidadF").ToString.ToDouble, CantidadSeleccionadaOriginal) + CantidadSeleccionadaOriginal = CantidadSeleccionadaOriginal - dr1("CantidadF").ToString.ToDouble + + Dim CostoIndirectoOriginal As Double = dr1("CostoIndirecto").ToString.ToDouble + dr1("CostoIndirecto") = (CostoIndirectoOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal + Dim CostoIndirectoExtranjeroOriginal As Double = dr1("CostoIndirectoExtranjero").ToString.ToDouble + dr1("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal + + DtInv.AcceptChanges() + + dr("CantidadC") = Cantidad.ToDouble + dr("CantidadF") = Cantidad.ToDouble + dr("CantidadS") = (CantidadSOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal + dr("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > 0, CantidadSeleccionadaOriginal, 0) + dr("Seleccionado") = If(CantidadSeleccionadaOriginal > 0, True, False) + dr("CostoIndirecto") = (CostoIndirectoOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal + dr("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal + DtInv.Rows.InsertAt(dr, Index) + DtInv.AcceptChanges() + + index2 = 1 + For Each Row As DataRow In DtInv.Rows + Row("Consec") = index2 + index2 += 1 + Next + DtInv.AcceptChanges() + + CargaGVInv() + + index2 = 0 + For Each Row As DataRow In DtInv.Rows + GvInv.Rows(index2).FCCheckBox("cbInv").Checked = CBool(Row("Seleccionado")) + If Row("CantidadSeleccionada").ToString <> "" Then + GvInv.Rows(index2).FCTextBox("TbCantidadF").Text = Row("CantidadSeleccionada").ToString + End If + If Row("Lote").ToString <> "" Then + GvInv.Rows(index2).FCTextBox("TxtLote").Text = Row("Lote").ToString + End If + If Row("CveSeccion").ToString <> "" Then + GvInv.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue = Row("CveSeccion").ToString + End If + If Row("Caducidad").ToString <> "" Then + GvInv.Rows(index2).FCTextBox("TxtCaducidad").Text = Row("Caducidad").ToString.ToDate.ToShortDateString + End If + index2 += 1 + Next + + End Sub + + #End Region + End Class diff --git a/Inventarios/RecepcionEntrega.aspx b/Inventarios/RecepcionEntrega.aspx index a426c9852..91f95119b 100644 --- a/Inventarios/RecepcionEntrega.aspx +++ b/Inventarios/RecepcionEntrega.aspx @@ -416,6 +416,14 @@
    +
    +
    +
    + +
    +
    +
    + <%--GV DATOS--%> @@ -484,11 +492,46 @@ + + + + + + + + + + + + + + + +
    + + + + + + + + +
    +
    +
    + + + + + +
    + @@ -879,6 +922,35 @@ + +
    @@ -931,6 +1003,29 @@ $('#TxtCantidadEspecialDiv').focus() } + function Dividir(t) { + $get("HdnCantidadMovimiento").value = $get(t).value; + } + + function LimitaCantidad(C, textbox, button) { + + // var contenedor = $(textbox).parent().find("#" + buttonIdDiv); + + if (ToDouble(textbox.value) >= C) { + textbox.value = ""; + } + + if (parseFloat(textbox.value) > 0) { + $get(button).style.display = ""; + //$(contenedor).show(); + } + else { + $get(button).style.display = "none"; + //$(contenedor).hide(); + + } + } + diff --git a/Inventarios/RecepcionEntrega.aspx.vb b/Inventarios/RecepcionEntrega.aspx.vb index 50ee62e69..18d66033f 100644 --- a/Inventarios/RecepcionEntrega.aspx.vb +++ b/Inventarios/RecepcionEntrega.aspx.vb @@ -34,6 +34,14 @@ Partial Class Inventarios_RecepcionEntrega ViewState("DtDatosDetalle") = value End Set End Property + Private Property DtDatosSugerencias As DataTable + Get + Return CType(ViewState("DtDatosSugerencias"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDatosSugerencias") = value + End Set + End Property Private Property DtDatosDetalleLote As DataTable Get Return CType(ViewState("DtDatosDetalleLote"), DataTable) @@ -287,6 +295,9 @@ Partial Class Inventarios_RecepcionEntrega CveVendedor = -1 CveCliente = -1 CveSubProyecto = -1 + + DtDatosSugerencias = New DataTable + Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2)" If (UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1") Then @@ -621,6 +632,30 @@ Partial Class Inventarios_RecepcionEntrega DdlAlmacen.SelectedValueExist(CveAlmacenTraspasoOrigen) End If + DtDatos.Columns.Add("AplicaSeccion", GetType(Boolean)) + DtDatos.Columns.Add("AplicaSerie", GetType(Boolean)) + DtDatos.Columns.Add("AplicaLote", GetType(Boolean)) + DtDatos.Columns.Add("AplicaCaducidad", GetType(Boolean)) + If Not DtDatos.Columns.Contains("Lote") Then + DtDatos.Columns.Add("Lote", GetType(String)) + End If + If Not DtDatos.Columns.Contains("CveSeccion") Then + DtDatos.Columns.Add("CveSeccion", GetType(Integer)) + End If + If Not DtDatos.Columns.Contains("Caducidad") Then + DtDatos.Columns.Add("Caducidad", GetType(Date)) + End If + If Not DtDatos.Columns.Contains("Seleccionado") Then + DtDatos.Columns.Add("Seleccionado", GetType(Boolean)) + End If + If Not DtDatos.Columns.Contains("CantidadSeleccionada") Then + DtDatos.Columns.Add("CantidadSeleccionada", GetType(Double)) + End If + + For Each Dr As DataRow In DtDatos.Rows + Dr("Caducidad") = Now + Next + 'TxtFecha.Text = If(EsDevolucionVenta = 1, Now.ToShortDateString, DtDatos.Rows(0)("Fecha").ToString) End If @@ -775,6 +810,23 @@ Partial Class Inventarios_RecepcionEntrega Private Sub CargaGvDatos() If DtDatos IsNot Nothing Then + + For Each item As DataRow In DtDatos.Rows + Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, item("CvePS").ToString.ToEntero).FiltroPrimero("") + If Dr IsNot Nothing Then + item("AplicaSeccion") = CBool(Dr("AplicaSeccion")) + If CBool(Dr("AplicaSeccion")) Then GvDatos.Columns(9).Visible = True + item("AplicaSerie") = CBool(Dr("AplicaSerie")) + item("AplicaLote") = CBool(Dr("AplicaLote")) + If CBool(Dr("AplicaLote")) Then GvDatos.Columns(10).Visible = True + item("AplicaCaducidad") = CBool(Dr("AplicaCaducidad")) + If CBool(Dr("AplicaCaducidad")) Then GvDatos.Columns(11).Visible = True + If CBool(Dr("AplicaSeccion")) Or CBool(Dr("AplicaLote")) Or CBool(Dr("AplicaCaducidad")) Or CBool(Dr("AplicaSerie")) Then + GvDatos.Columns(12).Visible = True + End If + End If + Next + GvDatos.DataSource = DtDatos End If @@ -802,7 +854,7 @@ Partial Class Inventarios_RecepcionEntrega Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.DBCampo("Inv_CveMetodoInventario").Contiene("5", "6") Then + If CBool(e.Row.DBCampo("AplicaSerie")) Then e.Row.FCButton("BtnSerieLote").Visible = True e.Row.FCButton("BtnSerieLote").Text = If(e.Row.DBCampo("Inv_CveMetodoInventario").ToString = "5", "SerieLote", "Lote-Batch") e.Row.FCButton("BtnSerieLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec"), e.Row.DBCampo("Inv_CveMetodoInventario")) @@ -829,6 +881,32 @@ Partial Class Inventarios_RecepcionEntrega End If + If CBool(e.Row.DBCampo("AplicaSeccion")) Then + e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = True + Else + e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False + End If + + If CBool(e.Row.DBCampo("AplicaCaducidad")) Then + e.Row.FCTextBox("TxtCaducidad").Visible = True + e.Row.FCLinkButton("LnkCaducidad").Visible = True + e.Row.FCTextBox("TxtCaducidad").Text = Now.ToShortDateString + Else + e.Row.FCTextBox("TxtCaducidad").Visible = False + e.Row.FCLinkButton("LnkCaducidad").Visible = False + End If + + If CBool(e.Row.DBCampo("AplicaLote")) Then + e.Row.FCTextBox("TxtLote").Visible = True + Else + e.Row.FCTextBox("TxtLote").Visible = False + End If + + e.Row.FCButton("BtnDividir").Attributes.Add("onclick", String.Format("Dividir('{0}');", e.Row.FCTextBox("TxtDividir").ClientID)) + e.Row.FCButton("BtnDividir").CommandArgument = e.Row.RowIndex.ToString + e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("CantidadF"), e.Row.FCButton("BtnDividir").ClientID)) + + 'FUNCIONALIDAD PISTOLA DE CODIGOS If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" Then 'NO BLOQUEA PARA ROL AD @@ -1562,6 +1640,9 @@ Partial Class Inventarios_RecepcionEntrega For Each gvr As GridViewRow In GvDatos.Rows If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then DtDatos.Rows(Index)("CantidadGV") = gvr.FCTextBox("TbCantidadF").Text.ToDecimal + DtDatos.Rows(Index)("CveSeccion") = gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero + DtDatos.Rows(Index)("Caducidad") = gvr.FCTextBox("TxtCaducidad").Text.ToDate + DtDatos.Rows(Index)("Lote") = gvr.FCTextBox("TxtLote").Text End If Index += 1 Next @@ -1610,10 +1691,10 @@ Partial Class Inventarios_RecepcionEntrega StrXML.Append("") For Each Dr As DataRow In DtDatos.Rows If Dr("CantidadGV").ToString.ToDecimal > 0 Then - If Dr("Inv_CveMetodoInventario").ToString = "5" Then + If CBool(Dr("AplicaSeccion")) Then DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) For Each Dr1 As DataRow In DtDetalle.Rows - StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), 1, Dr1("SerieLote")) + StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), 1, Dr1("SerieLote"), If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1), If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha)) Next ElseIf Dr("Inv_CveMetodoInventario").ToString = "6" Then DtDetalle = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) @@ -1621,7 +1702,7 @@ Partial Class Inventarios_RecepcionEntrega StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), DtDatosDetalleLote.SUM("Cantidad", $"Lote = '{Dr1("Lote").ToString}' AND Batch = '{Dr1("Batch").ToString}'"), Dr1("Lote")) Next Else - StrXML.AppendFormat("", Dr("CvePS"), Dr("CveUM"), Dr("CantidadGV"), "-1") + StrXML.AppendFormat("", Dr("CvePS"), Dr("CveUM"), Dr("CantidadGV"), "-1", If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1), If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha)) End If End If Next @@ -1668,11 +1749,11 @@ Partial Class Inventarios_RecepcionEntrega For Each Dr As DataRow In DtDatos.Rows If Dr("CantidadGV").ToString.ToDecimal > 0 Then - If Dr("Inv_CveMetodoInventario").ToString = "5" Then + If CBool(Dr("AplicaSeccion")) Then DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) For Each Dr1 As DataRow In DtDetalle.Rows - If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString.ToEntero, Dr1("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=Dr1("SerieLote").ToString, CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1) Then + If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString.ToEntero, Dr1("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=Dr1("SerieLote").ToString, CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO @@ -1701,7 +1782,7 @@ Partial Class Inventarios_RecepcionEntrega CantidadPendiente = 1 - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, -1, SerieLote:=Dr1("SerieLote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, -1, SerieLote:=Dr1("SerieLote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar." Exit For @@ -1720,7 +1801,7 @@ Partial Class Inventarios_RecepcionEntrega DtDetalle = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) For Each Dr1 As DataRow In DtDetalle.Rows - If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString.ToEntero, Dr1("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Lote:=Dr1("Lote").ToString, Batch:=Dr1("Batch").ToString, CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1) Then + If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString.ToEntero, Dr1("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Lote:=Dr1("Lote").ToString, Batch:=Dr1("Batch").ToString, CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then CantidadSaldo = Dr("CantidadGV").ToString.ToDecimal @@ -1751,7 +1832,7 @@ Partial Class Inventarios_RecepcionEntrega CantidadPendiente = If(Dr1("Cantidad").ToString.ToDecimal > CantidadSaldo, CantidadSaldo, Dr1("Cantidad").ToString.ToDecimal) - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, -1, Lote:=Dr1("Lote").ToString, Batch:=Dr1("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, -1, Lote:=Dr1("Lote").ToString, Batch:=Dr1("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar." Exit For @@ -1769,7 +1850,7 @@ Partial Class Inventarios_RecepcionEntrega Else - If ObjInventario.GetExistenciasProducto(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1) Then + If ObjInventario.GetExistenciasProducto(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then CantidadSaldo = Dr("CantidadGV").ToString.ToDecimal @@ -1801,7 +1882,7 @@ Partial Class Inventarios_RecepcionEntrega CantidadPendiente = If(Dr1("ExistenciaFinal").ToString.ToDecimal > CantidadSaldo, CantidadSaldo, Dr1("ExistenciaFinal").ToString.ToDecimal) - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, -1, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, -1, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar." Exit For @@ -1844,7 +1925,7 @@ Partial Class Inventarios_RecepcionEntrega If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, -1, Dr("SerieLote").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, SerieLote:=Dr("SerieLote").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar." Exit For @@ -1942,7 +2023,7 @@ Partial Class Inventarios_RecepcionEntrega End If For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, -1, Dr("SerieLote").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, SerieLote:=Dr("SerieLote").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar." Exit For @@ -1972,7 +2053,7 @@ Partial Class Inventarios_RecepcionEntrega PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero} AND SerieLote = '{Dr1("SerieLote").ToString}'").ToString.ToDecimal End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, SerieLote:=Dr1("SerieLote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, SerieLote:=Dr1("SerieLote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar." Exit For @@ -1984,7 +2065,7 @@ Partial Class Inventarios_RecepcionEntrega PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero} AND SerieLote = '{Dr1("SerieLote").ToString}'").ToString.ToDecimal End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr1("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, Lote:=Dr1("Lote").ToString, Batch:=Dr1("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr1("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, Batch:=Dr1("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar." Exit For @@ -1995,7 +2076,7 @@ Partial Class Inventarios_RecepcionEntrega PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero}").ToString.ToDecimal End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, CantidadPendiente, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, CantidadPendiente, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("Caducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then ErrorMovInv = True TextoError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar." Exit For @@ -2806,7 +2887,92 @@ Partial Class Inventarios_RecepcionEntrega #End Region +#Region "DIVIDIR" + Protected Sub Dividir(sender As Object, e As EventArgs) + Dim index2 As Integer = 0 + + For Each Row As DataRow In DtDatos.Rows + Row("Seleccionado") = GvDatos.Rows(index2).FCCheckBox("cbInv").Checked + If GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text <> "" Then + Row("CantidadSeleccionada") = GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text + End If + If GvDatos.Rows(index2).FCTextBox("TxtLote").Text <> "" Then + Row("Lote") = GvDatos.Rows(index2).FCTextBox("TxtLote").Text + End If + If GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue <> "-1" Then + Row("CveSeccion") = GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero + End If + If GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text <> "" Then + Row("Caducidad") = GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text.ToDate + End If + index2 += 1 + Next + DtDatos.AcceptChanges() + + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, Button)).NamingContainer, GridViewRow) + Dim Index As Integer = gvRow.RowIndex + Dim Cantidad As String = HdnCantidadMovimiento.Value + Dim dr1 As DataRow = DtDatos.Rows(Index) + Dim dr As DataRow = DtDatos.NewRow + dr.ItemArray = dr1.ItemArray + dr1("CantidadC") = (dr1("CantidadC").ToString.ToDouble - Cantidad.ToDouble) + Dim CantidadFOriginal As Double = dr1("CantidadF").ToString.ToDouble + dr1("CantidadF") = (dr1("CantidadF").ToString.ToDouble - Cantidad.ToDouble) + Dim CantidadSOriginal As Double = dr1("CantidadS").ToString.ToDouble + dr1("CantidadS") = (CantidadSOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal + Dim CantidadSeleccionadaOriginal As Double = dr1("CantidadSeleccionada").ToString.ToDouble + dr1("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > dr1("CantidadF").ToString.ToDouble, dr1("CantidadF").ToString.ToDouble, CantidadSeleccionadaOriginal) + CantidadSeleccionadaOriginal = CantidadSeleccionadaOriginal - dr1("CantidadF").ToString.ToDouble + + 'Dim CostoIndirectoOriginal As Double = dr1("CostoIndirecto").ToString.ToDouble + 'dr1("CostoIndirecto") = (CostoIndirectoOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal + 'Dim CostoIndirectoExtranjeroOriginal As Double = dr1("CostoIndirectoExtranjero").ToString.ToDouble + 'dr1("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal + + DtDatos.AcceptChanges() + + dr("CantidadC") = Cantidad.ToDouble + dr("CantidadF") = Cantidad.ToDouble + dr("CantidadS") = (CantidadSOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal + dr("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > 0, CantidadSeleccionadaOriginal, 0) + dr("Seleccionado") = If(CantidadSeleccionadaOriginal > 0, True, False) + 'dr("CostoIndirecto") = (CostoIndirectoOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal + 'dr("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal + DtDatos.Rows.InsertAt(dr, Index) + DtDatos.AcceptChanges() + + index2 = 1 + For Each Row As DataRow In DtDatos.Rows + Row("Consec") = index2 + index2 += 1 + Next + DtDatos.AcceptChanges() + + CargaGvDatos() + + index2 = 0 + For Each Row As DataRow In DtDatos.Rows + GvDatos.Rows(index2).FCCheckBox("cbInv").Checked = CBool(Row("Seleccionado")) + If Row("CantidadSeleccionada").ToString <> "" Then + GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text = Row("CantidadSeleccionada").ToString + End If + If Row("Lote").ToString <> "" Then + GvDatos.Rows(index2).FCTextBox("TxtLote").Text = Row("Lote").ToString + End If + If Row("CveSeccion").ToString <> "" Then + GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue = Row("CveSeccion").ToString + End If + If Row("Caducidad").ToString <> "" Then + GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text = Row("Caducidad").ToString.ToDate.ToShortDateString + End If + index2 += 1 + Next + + End Sub + + +#End Region #Region " GUIAS - SABE QUE ES PORQUE NO VEO QUE SE UTILIZE EN ALGUNA PARTE - EN MIRAS DE ELIMINAR - IPP 24 AGOSTO 2017 " Private Sub BtnNumeroGuia_Click(sender As Object, e As EventArgs) Handles BtnNumeroGuia.Click @@ -2844,6 +3010,86 @@ Partial Class Inventarios_RecepcionEntrega End Sub #End Region +#Region "SUGERENCIAS" + + Protected Sub BtnVerSugerencias_Click(sender As Object, e As EventArgs) + If Not CveVentaSurtir > 0 Then + Alert("Tiene que seleccionar la venta a surtir", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If Not DdlAlmacen.SelectedValue.ToEntero > 0 Then + Alert("Tiene que seleccionar el almacen", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim ObjInv As New ClsInventarios + If ObjInv.GetSugerenciasSalidaAlmacen(CveVentaSurtir, DdlAlmacen.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + GvSugerencias.DataSource = ObjInv.DtResultados + + + DtDatosSugerencias = ObjInv.DtResultados + + DtDatos.Columns.Add("Consec", GetType(Integer)) + DtDatos.Columns.Add("CantidadGV", GetType(Double)) + DtDatos.Columns.Add("CantidadTraspaso", GetType(Double)) + DtDatos.Columns.Add("AplicaSeccion", GetType(Boolean)) + DtDatos.Columns.Add("AplicaSerie", GetType(Boolean)) + DtDatos.Columns.Add("AplicaLote", GetType(Boolean)) + DtDatos.Columns.Add("AplicaCaducidad", GetType(Boolean)) + If Not DtDatos.Columns.Contains("Lote") Then + DtDatos.Columns.Add("Lote", GetType(String)) + End If + If Not DtDatos.Columns.Contains("CveSeccion") Then + DtDatos.Columns.Add("CveSeccion", GetType(Integer)) + End If + If Not DtDatos.Columns.Contains("Caducidad") Then + DtDatos.Columns.Add("Caducidad", GetType(Date)) + End If + If Not DtDatos.Columns.Contains("Seleccionado") Then + DtDatos.Columns.Add("Seleccionado", GetType(Boolean)) + End If + If Not DtDatos.Columns.Contains("CantidadSeleccionada") Then + DtDatos.Columns.Add("CantidadSeleccionada", GetType(Double)) + End If + + Dim Index = 1 + For Each Dr As DataRow In DtDatosSugerencias.Rows + Dr("Consec") = Index + Dr("Caducidad") = Now + Index += 1 + Next + + DtDatosSugerencias.AcceptChanges() + + + End If + ObjInv.Dispose() + GvSugerencias.DataBind() + + UpVerSugerencias.Update() + + RegistraScript("$('#ModalVerSugerencias').modal()") + End Sub + Protected Sub BtnAplicarSugerencias_Click(sender As Object, e As EventArgs) + + DtDatos = Nothing + DtDatos = New DataTable + DtDatos = DtDatosSugerencias + + DtDatosDetalle = Nothing + CreaDtDetalle() + + DtDatosDetalleLote = Nothing + CreaDtDetalleLote() + + CargaGvDatos() + + RegistraScript("$('#ModalVerSugerencias').modal('hide')") + End Sub + + +#End Region diff --git a/OS/OrdenesServicios.aspx.vb b/OS/OrdenesServicios.aspx.vb index 9737cf675..647fd13a9 100644 --- a/OS/OrdenesServicios.aspx.vb +++ b/OS/OrdenesServicios.aspx.vb @@ -2362,7 +2362,7 @@ Partial Class OS_OrdenesServicios If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, -1, -1) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, -1) Then TieneError = True TextoError = "Ocurrió un error al guardar los movimientos de entrada" Exit For @@ -2389,7 +2389,7 @@ Partial Class OS_OrdenesServicios If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada2, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, -1, -1) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada2, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, -1) Then TieneError = True TextoError = "Ocurrió un error al guardar los movimientos de entrada" Exit For