diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 3663cbb30..8aa11e225 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -8655,246 +8655,255 @@ Partial Class Compras_Compras ObjConta = New ClsContabilidad(ObjCompra.IniciaTransacSQL) End If + Try - Dim Contador As Integer = 0 - Dim Importe As Double = 0 - Dim ErrorMovtosCxP As Integer = 0 - Dim Fecha As Date + Dim Contador As Integer = 0 + Dim Importe As Double = 0 + Dim ErrorMovtosCxP As Integer = 0 + Dim Fecha As Date - If ListaDocumentos Is Nothing And Not ListaDocumentos.Count > 0 Then - For Each gvr As GridViewRow In GVAnticipos.Rows - If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then - Contador += 1 - 'If gvr.DataKey("Fecha").ToDate > Fecha Then Fecha = gvr.DataKey("Fecha").ToDate 'guardo la fecha mayor - Importe += gvr.FCTextBox("TxtAnticipo").Text.ToDouble - If Math.Round(Importe, 2) - Math.Round(CompraSaldo, 2) > 0.01 Then gvr.FCTextBox("TxtAnticipo").Text = "" : gvr.FCCheckBox("Chk").Checked = False - End If - Next - Else - Contador = 1 - End If - - 'If TxtFecha.Text.ToDate > Fecha Then Fecha = TxtFecha.Text.ToDate - Fecha = TxtFechaEjecucion.Text.ToDate - - 'Contador = 0 - If Contador > 0 Then If ListaDocumentos Is Nothing And Not ListaDocumentos.Count > 0 Then - If Math.Round(Importe, 2) - Math.Round(CompraSaldo, 2) > 0.01 Then - Alert("El Importe seleccionado excede al importe de la compra", TipoMensaje.MsgAdvertencia) - Exit Sub - End If + For Each gvr As GridViewRow In GVAnticipos.Rows + If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then + Contador += 1 + 'If gvr.DataKey("Fecha").ToDate > Fecha Then Fecha = gvr.DataKey("Fecha").ToDate 'guardo la fecha mayor + Importe += gvr.FCTextBox("TxtAnticipo").Text.ToDouble + If Math.Round(Importe, 2) - Math.Round(CompraSaldo, 2) > 0.01 Then gvr.FCTextBox("TxtAnticipo").Text = "" : gvr.FCCheckBox("Chk").Checked = False + End If + Next + Else + Contador = 1 End If - ArrAnticipos.Clear() + 'If TxtFecha.Text.ToDate > Fecha Then Fecha = TxtFecha.Text.ToDate + Fecha = TxtFechaEjecucion.Text.ToDate - If CveCompra > 0 Then - - Dim ObjContaAC As ClsContPAQi = Nothing - - 'INICIALIZA OBJETOS - If Not (ObjComprasParametro IsNot Nothing And ObjContaParametro IsNot Nothing) Then - ObjCompra = New ClsCompras - ObjConta = New ClsContabilidad(ObjCompra.IniciaTransacSQL) + 'Contador = 0 + If Contador > 0 Then + If ListaDocumentos Is Nothing And Not ListaDocumentos.Count > 0 Then + If Math.Round(Importe, 2) - Math.Round(CompraSaldo, 2) > 0.01 Then + Alert("El Importe seleccionado excede al importe de la compra", TipoMensaje.MsgAdvertencia) + Exit Sub + End If End If - Dim CveCompraNC, IdCtaContable, IdCtaContableComp As Integer - Dim ConceptoPoliza As String = $"Amortización {NombreProveedor} - {TxtSerie.Text}-{TxtFolio.Text}" + ArrAnticipos.Clear() - Try - Dim CveIE As Integer = -1 + If CveCompra > 0 Then - Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal - Dim CompraActual As New Compra - CompraActual.CveCompra = CveCompra - CompraActual.CveTipoConceptoProveedor = CveTipoConcepto - CompraActual.CveProveedor = CveProveedor - CompraActual.CveMoneda = DdlMoneda.SelectedValue.ToEntero - CompraActual.Fecha = TxtFecha.Text.ToDate - CompraActual.SerieFolio = TxtSerie.Text.Trim & "-" & TxtFolio.Text.Trim - CompraActual.ProveedorNombre = HplProveedor.Text - CompraActual.TC = TipoCambio - CompraActual.Total = TxtTotal.Text.ToDecimal - CompraActual.IVA = TxtIVA.Text.ToDecimal - CompraActual.IVADeducible = TxtIVA.Text.ToDecimal - CompraActual.IEPS = TxtIEPS.Text.ToDecimal - CompraActual.RetIVA = TxtRetIVA.Text.ToDecimal - CompraActual.RetISR = TxtRetISR.Text.ToDecimal - CompraActual.CveConceptoRetISR = DdlRetISRConcepto.SelectedValue.ToEntero - CompraActual.CveConceptoRetIVA = DdlRetIVAConcepto.SelectedValue.ToEntero - CompraActual.PorcentajeIVA = PorcentajeIVA - CompraActual.UsuarioActual = UsuarioActual - CompraActual.CveSubProyecto = TmpDT.FiltroPrimeroValor("CveSubProyecto", " CveSubProyecto > 0").ToEntero - CompraActual.IdCtaContableProv = CtaProveedor - CompraActual.IdCtaContableProvComplementaria = CtaProveedorComplementaria - CompraActual.EsImportacion = chkImportacion.Checked + Dim ObjContaAC As ClsContPAQi = Nothing - Dim CvePrePolizaNueva As Integer = ObjConta.AddPrePolizas("Compras/Anticipos", 52, Importe, Importe, DdlMoneda.SelectedValue.ToEntero, Fecha, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + 'INICIALIZA OBJETOS + If Not (ObjComprasParametro IsNot Nothing And ObjContaParametro IsNot Nothing) Then + ObjCompra = New ClsCompras + ObjConta = New ClsContabilidad(ObjCompra.IniciaTransacSQL) + End If + + Dim CveCompraNC, IdCtaContable, IdCtaContableComp As Integer + Dim ConceptoPoliza As String = $"Amortización {NombreProveedor} - {TxtSerie.Text}-{TxtFolio.Text}" + + Try + Dim CveIE As Integer = -1 + + Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal + Dim CompraActual As New Compra + CompraActual.CveCompra = CveCompra + CompraActual.CveTipoConceptoProveedor = CveTipoConcepto + CompraActual.CveProveedor = CveProveedor + CompraActual.CveMoneda = DdlMoneda.SelectedValue.ToEntero + CompraActual.Fecha = TxtFecha.Text.ToDate + CompraActual.SerieFolio = TxtSerie.Text.Trim & "-" & TxtFolio.Text.Trim + CompraActual.ProveedorNombre = HplProveedor.Text + CompraActual.TC = TipoCambio + CompraActual.Total = TxtTotal.Text.ToDecimal + CompraActual.IVA = TxtIVA.Text.ToDecimal + CompraActual.IVADeducible = TxtIVA.Text.ToDecimal + CompraActual.IEPS = TxtIEPS.Text.ToDecimal + CompraActual.RetIVA = TxtRetIVA.Text.ToDecimal + CompraActual.RetISR = TxtRetISR.Text.ToDecimal + CompraActual.CveConceptoRetISR = DdlRetISRConcepto.SelectedValue.ToEntero + CompraActual.CveConceptoRetIVA = DdlRetIVAConcepto.SelectedValue.ToEntero + CompraActual.PorcentajeIVA = PorcentajeIVA + CompraActual.UsuarioActual = UsuarioActual + CompraActual.CveSubProyecto = TmpDT.FiltroPrimeroValor("CveSubProyecto", " CveSubProyecto > 0").ToEntero + CompraActual.IdCtaContableProv = CtaProveedor + CompraActual.IdCtaContableProvComplementaria = CtaProveedorComplementaria + CompraActual.EsImportacion = chkImportacion.Checked + + Dim CvePrePolizaNueva As Integer = ObjConta.AddPrePolizas("Compras/Anticipos", 52, Importe, Importe, DdlMoneda.SelectedValue.ToEntero, Fecha, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + For Each gvr As GridViewRow In GVAnticipos.Rows + If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then + + CveCompraNC = gvr.DataKey("CveCompra").ToEntero + If CvePrePoliza > 0 Then + + Dim CveConceptoCompra As Integer = 60 + Dim CveConceptoCompraComplementaria As Integer = 266 + Dim TipoMovimientoCompra As Boolean = True + Dim CveMonedaAnticipo As Integer = gvr.DataKey("CveMoneda").ToEntero + Dim TipoCambioAnt As Decimal = gvr.DataKey("TCCompra").ToDecimal + Dim ImporteAnt As Decimal = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal + Dim ImporComisionAnticipo As Decimal = gvr.FCTextBox("TxtComision").Text.ToDecimal + + Dim Pago As New CompraPago + Pago.TipoPago = gvr.DataKey("TipoDocto") + Pago.ImportePago = ImporteAnt + Pago.OtroGastoIngreso = ImporComisionAnticipo + Pago.CveMonedaPago = CveMonedaAnticipo + Pago.TCPago = TipoCambioAnt + Pago.CveProveedor = gvr.DataKey("CveProveedor").ToEntero + + Select Case gvr.DataKey("TipoDocto") + Case "NC", "DEV" + CveConceptoCompra = If(CveMonedaAnticipo = 1, 60, 60) + CveConceptoCompraComplementaria = 235 + IdCtaContable = If(CveMonedaAnticipo = 1, CtaProveedor, CtaProveedorExtranjera) + IdCtaContableComp = CtaProveedorComplementaria + CveIE = -1 + Pago.AplicaAcreditable = False + Case "Egsc" + CveConceptoCompra = If(CveMonedaAnticipo = 1, 21, 21) + CveConceptoCompraComplementaria = 266 + IdCtaContable = If(CveMonedaAnticipo = 1, CtaProveedorAnticipos, CtaProveedorAnticiposExtranjera) + IdCtaContableComp = CtaProveedorAnticiposComplementaria + + 'vinculo la compra actual, y no la compra como si fuera nota de credito + CveCompraNC = -1 + CveIE = gvr.DataKey("CveIE").ToEntero + CompraActual.IdCtaContableAnticipoProv = IdCtaContable + Case "DD" + CveConceptoCompra = If(CveMonedaAnticipo = 1, 37, 37) + IdCtaContable = CtaProveedorDeudores + 'vinculo la compra actual, y no la compra como si fuera nota de credito + CveCompraNC = -1 + CveIE = gvr.DataKey("CveIE").ToEntero + End Select + + 'PorcentajePago = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal / TxtTotal.Text.ToDecimal + + Pago.CveIE = CveIE + Pago.CveCompraAmortizacion = CveCompraNC + + If AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePolizaNueva, ObjConta) Then + ErrorMovtosCxP = 1 + End If + End If + End If + + Next + + If ErrorMovtosCxP = 0 And CvePrePolizaNueva > 0 Then + + If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then + If ObjContaAC Is Nothing Then + ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) + ObjContaAC.IniciaTransacSQL() + End If + + If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaNueva, UsuarioActual.CveUsuario, UsuarioActual.Empresa, MinFecha, "", ObjContaAC) Then + ErrorMovtosCxP = 3 + End If + + End If + + End If + + Select Case ErrorMovtosCxP + Case 0 + + If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then + If ObjContaAC IsNot Nothing Then + ObjContaAC.Commit() + End If + End If + + Alert("El movimiento se aplicó correctamente.", TipoMensaje.MsgInformacion) + ObjCompra.Commit() + + Dim dtnc As DataTable = Nothing + If ObjCompra.GetComprasNotasCredito(CveCompra, -1) Then + dtnc = ObjCompra.DtResultados + End If + + GvAnticiposSel.DataSource = dtnc + GvAnticiposSel.DataBind() + + LblAmortizacion.Text = (LblAmortizacion.Text.ToDouble + Importe).FormatoNumero + CompraSaldo = CompraSaldo - Importe + HdnCompraSaldo.Value = CompraSaldo.ToString + + If CompraSaldo > 0 Then CargaAnticipos(CveProveedor) + If CveCompra > 0 Then VisualizaEstatusCompraSaldo(DdlTipoComprobante.SelectedValue, CompraSaldo.ToDecimal, TxtTotal.Text.ToDecimal) + + UpAnticipos.Update() + UpPS.Update() + dtnc.Dispose() + + Case 1 + Alert("Ocurrió un error al amortizar la nota de crédito
Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia) + ObjCompra.RollBack() + Case 2 + Alert("Ocurrió un error al amortizar la nota de crédito
Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia) + ObjCompra.RollBack() + Case 3 + Alert("Ocurrió un error al contabilizar la la amortizacion del anticipo.", TipoMensaje.MsgAdvertencia) + + If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then + If ObjContaAC IsNot Nothing Then + Try + ObjContaAC.RollBack() + Catch ex As Exception + + End Try + End If + End If + + ObjCompra.RollBack() + End Select + + Catch ex As Exception + ObjCompra.RollBack() + End Try + + + If ObjContaAC IsNot Nothing Then + ObjContaAC.Dispose() + End If + + ObjCompra.Dispose() + + Else + 'sino se ha guardado la compra, se registra temporal que anticpos van a cargarle For Each gvr As GridViewRow In GVAnticipos.Rows If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then - - CveCompraNC = gvr.DataKey("CveCompra").ToEntero - If CvePrePoliza > 0 Then - - Dim CveConceptoCompra As Integer = 60 - Dim CveConceptoCompraComplementaria As Integer = 266 - Dim TipoMovimientoCompra As Boolean = True - Dim CveMonedaAnticipo As Integer = gvr.DataKey("CveMoneda").ToEntero - Dim TipoCambioAnt As Decimal = gvr.DataKey("TCCompra").ToDecimal - Dim ImporteAnt As Decimal = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal - Dim ImporComisionAnticipo As Decimal = gvr.FCTextBox("TxtComision").Text.ToDecimal - - Dim Pago As New CompraPago - Pago.TipoPago = gvr.DataKey("TipoDocto") - Pago.ImportePago = ImporteAnt - Pago.OtroGastoIngreso = ImporComisionAnticipo - Pago.CveMonedaPago = CveMonedaAnticipo - Pago.TCPago = TipoCambioAnt - Pago.CveProveedor = gvr.DataKey("CveProveedor").ToEntero - - Select Case gvr.DataKey("TipoDocto") - Case "NC", "DEV" - CveConceptoCompra = If(CveMonedaAnticipo = 1, 60, 60) - CveConceptoCompraComplementaria = 235 - IdCtaContable = If(CveMonedaAnticipo = 1, CtaProveedor, CtaProveedorExtranjera) - IdCtaContableComp = CtaProveedorComplementaria - CveIE = -1 - Pago.AplicaAcreditable = False - Case "Egsc" - CveConceptoCompra = If(CveMonedaAnticipo = 1, 21, 21) - CveConceptoCompraComplementaria = 266 - IdCtaContable = If(CveMonedaAnticipo = 1, CtaProveedorAnticipos, CtaProveedorAnticiposExtranjera) - IdCtaContableComp = CtaProveedorAnticiposComplementaria - - 'vinculo la compra actual, y no la compra como si fuera nota de credito - CveCompraNC = -1 - CveIE = gvr.DataKey("CveIE").ToEntero - CompraActual.IdCtaContableAnticipoProv = IdCtaContable - Case "DD" - CveConceptoCompra = If(CveMonedaAnticipo = 1, 37, 37) - IdCtaContable = CtaProveedorDeudores - 'vinculo la compra actual, y no la compra como si fuera nota de credito - CveCompraNC = -1 - CveIE = gvr.DataKey("CveIE").ToEntero - End Select - - 'PorcentajePago = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal / TxtTotal.Text.ToDecimal - - Pago.CveIE = CveIE - Pago.CveCompraAmortizacion = CveCompraNC - AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePolizaNueva, ObjConta) - End If + ArrAnticipos.Add(New Anticipos With {.CvePrePoliza = gvr.DataKey("CvePrePoliza").ToEntero, .CveIE = gvr.DataKey("CveIE").ToString.ToEntero, .CveCompra = gvr.DataKey("CveCompra").ToEntero, .Importe = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal, .ImporteComision = gvr.FCTextBox("TxtComision").Text.ToDecimal, .TCCompra = gvr.DataKey("TCCompra").ToDecimal, .TipoMovto = gvr.DataKey("TipoDocto")}) End If - Next - If ErrorMovtosCxP = 0 And CvePrePolizaNueva > 0 Then - - If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then - If ObjContaAC Is Nothing Then - ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) - ObjContaAC.IniciaTransacSQL() - End If - - If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaNueva, UsuarioActual.CveUsuario, UsuarioActual.Empresa, MinFecha, "", ObjContaAC) Then - ErrorMovtosCxP = 3 - End If - - End If - + Dim ImporteAnticipo As Decimal = 0 + If ArrAnticipos.Count > 0 Then + For Each Ant As Compras_Compras.Anticipos In ArrAnticipos + ImporteAnticipo += Ant.Importe + Next End If - Select Case ErrorMovtosCxP - Case 0 - - If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then - If ObjContaAC IsNot Nothing Then - ObjContaAC.Commit() - End If - End If - - Alert("El movimiento se aplicó correctamente.", TipoMensaje.MsgInformacion) - ObjCompra.Commit() - - Dim dtnc As DataTable = Nothing - If ObjCompra.GetComprasNotasCredito(CveCompra, -1) Then - dtnc = ObjCompra.DtResultados - End If - - GvAnticiposSel.DataSource = dtnc - GvAnticiposSel.DataBind() - - LblAmortizacion.Text = (LblAmortizacion.Text.ToDouble + Importe).FormatoNumero - CompraSaldo = CompraSaldo - Importe - HdnCompraSaldo.Value = CompraSaldo.ToString - - If CompraSaldo > 0 Then CargaAnticipos(CveProveedor) - If CveCompra > 0 Then VisualizaEstatusCompraSaldo(DdlTipoComprobante.SelectedValue, CompraSaldo.ToDecimal, TxtTotal.Text.ToDecimal) - - UpAnticipos.Update() - UpPS.Update() - dtnc.Dispose() - - Case 1 - Alert("Ocurrió un error al amortizar la nota de crédito
Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia) - ObjCompra.RollBack() - Case 2 - Alert("Ocurrió un error al amortizar la nota de crédito
Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia) - ObjCompra.RollBack() - Case 3 - Alert("Ocurrió un error al contabilizar la la amortizacion del anticipo.", TipoMensaje.MsgAdvertencia) - - If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then - If ObjContaAC IsNot Nothing Then - Try - ObjContaAC.RollBack() - Catch ex As Exception - - End Try - End If - End If - - ObjCompra.RollBack() - End Select - - Catch ex As Exception - ObjCompra.RollBack() - End Try - - - If ObjContaAC IsNot Nothing Then - ObjContaAC.Dispose() + LblAmortizacion.Text = ImporteAnticipo.FormatoNumero + LblAplicadoCompraAnt.Text = ImporteAnticipo.FormatoNumero + LblSaldoFactura.Text = (TxtTotal.Text.ToDecimal - ImporteAnticipo).ToString.FormatoNumero + UpPS.Update() End If - - ObjCompra.Dispose() - + RegistraScript(String.Format("$('#{0}').modal('hide');", "DivAnticipos")) Else - 'sino se ha guardado la compra, se registra temporal que anticpos van a cargarle - - For Each gvr As GridViewRow In GVAnticipos.Rows - If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then - ArrAnticipos.Add(New Anticipos With {.CvePrePoliza = gvr.DataKey("CvePrePoliza").ToEntero, .CveIE = gvr.DataKey("CveIE").ToString.ToEntero, .CveCompra = gvr.DataKey("CveCompra").ToEntero, .Importe = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal, .ImporteComision = gvr.FCTextBox("TxtComision").Text.ToDecimal, .TCCompra = gvr.DataKey("TCCompra").ToDecimal, .TipoMovto = gvr.DataKey("TipoDocto")}) - End If - Next - - Dim ImporteAnticipo As Decimal = 0 - If ArrAnticipos.Count > 0 Then - For Each Ant As Compras_Compras.Anticipos In ArrAnticipos - ImporteAnticipo += Ant.Importe - Next - End If - - LblAmortizacion.Text = ImporteAnticipo.FormatoNumero - LblAplicadoCompraAnt.Text = ImporteAnticipo.FormatoNumero - LblSaldoFactura.Text = (TxtTotal.Text.ToDecimal - ImporteAnticipo).ToString.FormatoNumero - UpPS.Update() + Alert("No hay movimientos seleccionados para aplicar", TipoMensaje.MsgAdvertencia) End If - RegistraScript(String.Format("$('#{0}').modal('hide');", "DivAnticipos")) - Else - Alert("No hay movimientos seleccionados para aplicar", TipoMensaje.MsgAdvertencia) - End If - UPPAnticiposSel.Update() + UPPAnticiposSel.Update() + + Catch ex As Exception + ObjCompra.RollBack() + ObjCompra.Dispose() + End Try End Sub