-- devolución con descuento por RNC.

This commit is contained in:
2025-02-17 21:47:38 -07:00
parent b551cdf648
commit e283f4450d
2 changed files with 645 additions and 625 deletions

View File

@@ -1524,7 +1524,7 @@
</div>
<br />
<asp:GridView ID="GVDevolucion" runat="server" DataKeyNames="CveMovimientoDetalle,CveAlmacen,Total,PU,Cantidad,CvePS,CveUM,UM,CveClasificacion,Clasificacion,PS,CveTipoPS,PUExtranjero" ShowFooter="true" GridLines="None" AutoGenerateColumns="false" EmptyDataText="Aun no hay registros." ShowHeaderWhenEmpty="True" Width="100%" CssClass="table table-striped table-hover Widthall">
<asp:GridView ID="GVDevolucion" runat="server" DataKeyNames="CveMovimientoDetalle,CveAlmacen,Total,PU,Cantidad,CvePS,CveUM,UM,CveClasificacion,Clasificacion,CodigoPS,CveTipoPS,PUExtranjero" ShowFooter="true" GridLines="None" AutoGenerateColumns="false" EmptyDataText="Aun no hay registros." ShowHeaderWhenEmpty="True" Width="100%" CssClass="table table-striped table-hover Widthall">
<Columns>
<asp:TemplateField HeaderText="Cantidad" ItemStyle-Width="60px" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>

View File

@@ -1439,12 +1439,18 @@ Partial Class Compras_Compras
End If
If DdlTipoComprobante.SelectedValue = "NC" Then
'paneldevolucion.Visible = True
Pnlalmaceninventarios.Visible = False
'cargaddldevoluciones(CveProveedor, TxtSubTotal2.Text.ToDouble)
InicializaAplicaNCFact()
DivReembolso.Visible = False
RBLPago.Items(2).Enabled = False
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then
ConfiguraseleccionRNC()
Else
InicializaAplicaNCFact()
End If
'paneldevolucion.Visible = True
'cargaddldevoluciones(CveProveedor, TxtSubTotal2.Text.ToDouble)
End If
If DdlTipoComprobante.SelectedValue = "DEV" Then
@@ -1579,7 +1585,6 @@ Partial Class Compras_Compras
'RFVSubProyecto.Enabled = True
End If
'VALIDA Usuario TIPO REMESA
If UsuarioActual.TienePermisoProceso(108) Then
RBLPago.Enabled = False
@@ -1672,10 +1677,6 @@ Partial Class Compras_Compras
DdlTipoComprobante.SelectedValueExist("DEV")
End If
If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso DdlTipoComprobante.SelectedValue = "NC" Then
ConfiguraseleccionRemisionNotaCredito()
End If
If Not CveCompra > 0 Then
LnkProrrateoGasolina.Visible = True
InicializaDTProrrateoGasolina()
@@ -1791,7 +1792,7 @@ Partial Class Compras_Compras
'End Sub
Private Sub ConfiguraseleccionRemisionNotaCredito()
Private Sub ConfiguraseleccionRNC()
Dim AutoSelRNC As Boolean = False
DdlTipoComprobante_SelectedIndexChanged(Nothing, Nothing)
@@ -2011,8 +2012,10 @@ Partial Class Compras_Compras
SubTotalConceptos = TmpDT.SUMD("Total").RoundSQL
If Not TmpDT.Columns.Contains("Amortizacion") Then TmpDT.Columns.Add("Amortizacion", GetType(Decimal))
If Not TmpDT.Columns.Contains("AplicaSerie") Then TmpDT.Columns.Add(New DataColumn("AplicaSerie", GetType(Boolean)) With {.DefaultValue = False})
If Not TmpDT.Columns.Contains("AplicaLote") Then TmpDT.Columns.Add(New DataColumn("AplicaLote", GetType(Boolean)) With {.DefaultValue = False})
If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add(New DataColumn("AplicaCaducidad", GetType(Boolean)) With {.DefaultValue = False})
If Not TmpDT.Columns.Contains("Serie") Then TmpDT.Columns.Add("Serie", GetType(String))
If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String))
If Not TmpDT.Columns.Contains("FechaCaducidad") Then TmpDT.Columns.Add("FechaCaducidad", GetType(Date))
@@ -2121,7 +2124,10 @@ Partial Class Compras_Compras
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("6"))
DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("11"))
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DdlTipoCompra.Items.Add(New ListItem("Recolección", "14"))
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
DdlTipoCompra.Items.Add(New ListItem("Recolección", "14"))
DdlTipoCompra.Items.Add(New ListItem("Apoyo sin virtual", "16"))
End If
Case "E"
DdlTipoComprobante.SelectedValue = "NC"
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac"))
@@ -2841,6 +2847,10 @@ Partial Class Compras_Compras
CvePrePoliza = dr("CvePrePoliza").ToString.ToEntero
EstatusAlmacen = dr("EstatusAlmacen").ToString.ToEntero
DdlTipoCompra.SelectedValueExist(dr("CveTipoCompra"))
If DdlTipoCompra.SelectedValue = "16" Then
DdlTipoCompra.Items.Add(New ListItem("Apoyo sin virtual", "16"))
DdlTipoCompra.SelectedValue = dr("CveTipoCompra").ToString
End If
TipoCompraOriginal = dr("CveTipoCompra").ToString.ToEntero
CveTipoConcepto = dr("CveTipoConcepto").ToString.ToEntero
ChkEsNoDeducible.Checked = dr("NoDeducible").ToString.ToEntero > 0
@@ -5559,12 +5569,15 @@ Partial Class Compras_Compras
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Row("Consec").ToString}")(0)
TmpDr("CveCompraDetalle") = ObjCompras.CveCompraDetalle
' Si no es un movimiento de almacen va a tronar
Try
Dim InvDr As DataRow = DtInv.Select($"Consec = {Row("Consec").ToString}")(0)
InvDr("CveCompraDetalle") = ObjCompras.CveCompraDetalle
Catch ex As Exception
End Try
Dim drs As DataRow() = DtInv.Select($"Consec = {Row("Consec").ToString}")
If drs.Count > 0 Then drs(0)("CveCompraDetalle") = ObjCompras.CveCompraDetalle
'' Si no es un movimiento de almacen va a tronar
'Try
' Dim InvDr As DataRow = DtInv.Select($"Consec = {Row("Consec").ToString}")(0)
' InvDr("CveCompraDetalle") = ObjCompras.CveCompraDetalle
'Catch ex As Exception
'End Try
End If
@@ -6540,7 +6553,6 @@ Partial Class Compras_Compras
End If
AlmacenSoloExistencia = True
End If
Dr.AcceptChanges()
Next
End If
@@ -6583,7 +6595,6 @@ Partial Class Compras_Compras
Dim CvePrePoliza2Almacen As Integer = ObjConta.AddPrePolizas("Compras/Registrar/Almacen", If(EsContado And CvePlantillaPrePoliza = 1, 2, CvePlantillaPrePoliza), ImporteCompra, TxtTotal.Text.ToDouble, DdlMoneda.SelectedValue.ToEntero, NowADS(), ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo:=FolioFijo, ReglaFolioPoliza:=ObjCompras.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa), CveTipoPoliza:=ObjConta.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa))
If CvePrePoliza2Almacen > 0 Then
Dim ImpPrepoliza As Decimal = 0D
Dim ImpPrepolizaMN As Decimal = 0D
@@ -6604,16 +6615,13 @@ Partial Class Compras_Compras
Else
ErrorPrepoliza = True
End If
Else
'SI ES GASTO CON ALMACEN NO DEBE CONTABILIZAR CONCEPTO 68
If CveMovimientoInventario > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMN.RoundSQL(2), importeMN.RoundSQL(2), 68, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CvePersonal:=CvePersonal, CveMovimientoAlmacen:=CveMovimientoInventario, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, Contabilizable:=ContabilizableAlmacen) Then
ErrorPrepoliza = True
End If
End If
'SI ES GASTO CON ALMACEN REGISTRA EL CONCEPTO 95
If DdlTipoCompra.SelectedValue = "10" Or EntradaComoGastoConAlmacen Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMN.RoundSQL(2), importeMN.RoundSQL(2), 95, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CvePersonal:=CvePersonal, CveMovimientoAlmacen:=CveMovimientoInventario, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, Contabilizable:=False) Then
@@ -6831,7 +6839,7 @@ Partial Class Compras_Compras
If RegistraConcepto225 Then
importeMovimiento = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 And ISNULL(AplicaCostoIndirecto,0) <> 1 And ISNULL(CveTipoPS,0) = 2").ToString.ToDecimal
importeMovimiento = TmpDT.SUM("Total") 'TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 And ISNULL(AplicaCostoIndirecto,0) <> 1 And ISNULL(CveTipoPS,0) = 2").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
'no es necesario, ya se está interpretandoe l usado como producto
@@ -6851,8 +6859,6 @@ Partial Class Compras_Compras
End If
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If importeMovimiento > 0 Or TxtTotal.Text.ToDecimal = 0 Then
RegistroCuentaPuente = True
Dim ImporteTransito As Decimal = 0
@@ -6870,8 +6876,6 @@ Partial Class Compras_Compras
End If
End If
Next
Dim importeMNTemp As Decimal = 0
Dim CveCompraAmortizacion As Integer = -1
@@ -6902,7 +6906,6 @@ Partial Class Compras_Compras
End If
End If
'si se marca que no se va a recibir, falta validación
If Not ErrorMovInv AndAlso Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 1, UsuarioActual.CveUsuario) Then
ErrorMovInv = True
@@ -6923,20 +6926,28 @@ Partial Class Compras_Compras
End If
End If
Else
Dim DiferenciaDevolucion As Decimal = If(DdlMoneda.SelectedValue.ToEntero <> 1, (importeMovimiento * TxtTC.Text.ToDecimal), importeMovimiento) - TotalRealDevolucion
If TotalRealDevolucion <> 0 Then
Dim tCveCompra As Integer = CveCompra
Dim tCveCompraAmortizacion As Integer = -1
If Math.Abs(DiferenciaDevolucion) > 0 Then
Dim tMovto As Boolean = False
Dim tConceptoDiferencia As Integer = 69
If UsuarioActual.CveEmpresa = 119 Then
tMovto = True
Else
DiferenciaDevolucion = -DiferenciaDevolucion
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, DiferenciaDevolucion, DiferenciaDevolucion, 69, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteME:=If(tipoCambioActual = 1, 0, DiferenciaDevolucion), TipoCambio:=tipoCambioActual, CveMovimientoAlmacen:=CveMovimientoDevolucion, Contabilizable:=SeContabiliza, CveSubProyecto:=tCveSubProyecto, CveClasificacion:=tCveClasif) Then
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then ' las devoluciones, que tengan descuento por rnc, debe de descontar del saldo de la factura aplicada
tConceptoDiferencia = 272
tCveCompraAmortizacion = tCveCompra
If ObjConta.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then
tCveCompra = ObjConta.DtResultados.FiltroPrimeroValor("CveCompraAmortizacion", "CveConceptoContable = 60").ToEntero 'a aplicación de la nc
End If
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, DiferenciaDevolucion, DiferenciaDevolucion, tConceptoDiferencia, Referencia, Concepto, CveCompra:=tCveCompra, CveCompraAmortizacion:=tCveCompraAmortizacion, CveProveedor:=CveProveedorConcepto, ImporteME:=If(tipoCambioActual = 1, 0, DiferenciaDevolucion), TipoCambio:=tipoCambioActual, CveMovimientoAlmacen:=CveMovimientoDevolucion, Contabilizable:=SeContabiliza, CveSubProyecto:=tCveSubProyecto, CveClasificacion:=tCveClasif) Then
ErrorPrepoliza = True
End If
End If
@@ -7014,8 +7025,6 @@ Partial Class Compras_Compras
End If
End If
'ChkNCInvNC
If Not RegistroCuentaPuente AndAlso Not ChkNCInvNC.Checked Then
'GASTO
If UsuarioActual.CveEmpresa = 119 Then
@@ -7040,20 +7049,7 @@ Partial Class Compras_Compras
If AgregaMercanciaInventario Then
DT = DT.FiltraParametros("ISNULL(CveTipoPS,0) <> 2")
End If
Dim DTDistinct As DataTable = DT.Copy
'If UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
' For Each drowdis As DataRow In DTDistinct.Rows
' If drowdis("CveTipoGasto").ToString = "" Then
' drowdis("CveTipoGasto") = 0
' End If
' If drowdis("TipoGasto").ToString.Trim = "" Then
' drowdis("TipoGasto") = "ND"
' End If
' Next
' DTDistinct = DTDistinct.FiltraParametros("ISNULL(TipoAF, 0) <> 2", "", {"CveClasificacion", "Clasificacion", "SubProyecto", "CveSubProyecto", "CveTipoGasto", "TipoGasto"})
'Else
For Each drowdis As DataRow In DTDistinct.Rows
If drowdis("CveTipoGasto").ToString = "" Then
@@ -7258,7 +7254,7 @@ Partial Class Compras_Compras
End If
Next
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then
If UsuarioActual.Empresa.Funcionalidad(574) = "1" AndAlso DdlTipoCompra.SelectedValue = "15" Then
Dim TotalSaldo As Decimal = TxtTotal.Text.ToDecimal
For Each gvRow As GridViewRow In GvRNC.Rows
@@ -10918,17 +10914,17 @@ Partial Class Compras_Compras
TmpDT.Columns.Add("DifPSSat", GetType(Integer))
TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer))
TmpDT.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer))
TmpDT.Columns.Add("TemporadaCuadro", GetType(String))
TmpDT.Columns.Add("AplicaSerie", GetType(Boolean))
TmpDT.Columns.Add("AplicaLote", GetType(Boolean))
TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean))
TmpDT.Columns.Add("Serie", GetType(String))
TmpDT.Columns.Add("Lote", GetType(String))
TmpDT.Columns.Add("FechaCaducidad", GetType(Date))
TmpDTOriginal = New DataTable
TmpDTOriginal.Columns.Add("Consec", GetType(Integer))
TmpDTOriginal.Columns.Add("Cantidad", GetType(Decimal))
@@ -11038,8 +11034,10 @@ Partial Class Compras_Compras
TmpDTOriginal.Columns.Add("CveCultivoCuadroDetalle", GetType(Double))
TmpDTOriginal.Columns.Add("TemporadaCuadro", GetType(String))
TmpDTOriginal.Columns.Add("AplicaSerie", GetType(Boolean))
TmpDTOriginal.Columns.Add("AplicaLote", GetType(Boolean))
TmpDTOriginal.Columns.Add("AplicaCaducidad", GetType(Boolean))
TmpDTOriginal.Columns.Add("Serie", GetType(String))
TmpDTOriginal.Columns.Add("Lote", GetType(String))
TmpDTOriginal.Columns.Add("FechaCaducidad", GetType(Date))
@@ -13876,9 +13874,14 @@ Partial Class Compras_Compras
'si no esta vinculado a nc simplemente me lo brinco
If realizadevolucion Then
'si el subtotal es iwal a la nc lo guardo si no marco error
If subtotal > subtotaldevolucion - 1 AndAlso subtotal < subtotaldevolucion + 1 Then
'si el subtotal es igual a la nc lo guardo si no marco error
Dim tTolerancia As Decimal = 0
Dim tAjustaUltimo As Boolean = True
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then
tTolerancia = Math.Abs(TxtSubTotal2.Text.ToDecimal - subtotaldevolucion)
tAjustaUltimo = False
End If
If Math.Abs(subtotal - subtotaldevolucion) <= tTolerancia Then
CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 13, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, Modulo:="Comp/G1")
If CveMovimientoEntrada <= 0 Then
ErrorMovInv = True
@@ -13894,17 +13897,16 @@ Partial Class Compras_Compras
PU = Dr.DataKey("PU").ToString.ToDecimal
PUExtranjero = Dr.DataKey("PUExtranjero").ToString.ToDecimal
ii += 1
If CantidadRenglones = ii Then
If CantidadRenglones = ii AndAlso tAjustaUltimo Then
Dim dif As Decimal = subtotal - Acumulado
PU = (((Dr.FCTextBox("TxtCantidad").Text.ToDecimal * Dr.DataKey("PU").ToString.ToDecimal)) + dif) / Dr.FCTextBox("TxtCantidad").Text.ToDecimal
PU = (((Dr.FCTextBox("TxtCantidad").Text.ToDecimal * Dr.DataKey("PU").ToDecimal)) + dif) / Dr.FCTextBox("TxtCantidad").Text.ToDecimal
End If
If ObjInventario.GetExistenciasProducto(Dr.DataKey("CvePS").ToString.ToEntero, Dr.DataKey("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, CveAlmacen,
FechaMovto:=TxtFecha.Text.ToDateTime.AddHours(NowADS().Hour).AddMinutes(NowADS().Minute).AddSeconds(NowADS().Second).ToString("yyyy/MM/dd HH:mm")) Then
Dim tFechaExistencia As DateTime = TxtFecha.Text.ToDateTime.AddHours(NowADS().Hour).AddMinutes(NowADS().Minute).AddSeconds(NowADS().Second)
If ObjInventario.GetExistenciasProducto(Dr.DataKey("CvePS").ToEntero, Dr.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, CveAlmacen,
FechaMovto:=tFechaExistencia.ToString("yyyy/MM/dd HH:mm")) Then
Dim Existencia As Decimal = ObjInventario.DtResultados.FiltroPrimeroValor("ExistenciaFinal", String.Format("CveAlmacen = {0}", CveAlmacen)).ToDecimal
If Dr.FCTextBox("TxtCantidad").Text.ToDouble > Existencia Then
Alert($"No hay existencia suficiente del producto {Dr.DataKey("PS").ToString} en la fecha:{TxtFecha.Text}", TipoMensaje.MsgAdvertencia)
Alert($"No hay existencia suficiente del producto: <br/> - {Dr.DataKey("CodigoPS")} en la fecha: {tFechaExistencia.ToString("yyyy/MM/dd HH:mm")}", TipoMensaje.MsgAdvertencia)
ErrorMovInv = True
Exit For
End If
@@ -14003,7 +14005,6 @@ Partial Class Compras_Compras
Dim subtotaldevolucion As Decimal = 0
Dim realizadevolucion As Boolean = False
'Calculo los subtotales para comparar con la NC
Dim cantidad As Decimal = 0D
@@ -14018,11 +14019,13 @@ Partial Class Compras_Compras
'si no esta vinculado a nc simplemente me lo brinco
If realizadevolucion Then
'si el subtotal es iwal a la nc lo guardo si no marco error
If TxtSubTotal2.Text.ToDouble > subtotaldevolucion - 1 AndAlso TxtSubTotal2.Text.ToDouble < subtotaldevolucion + 1 Then
'si el subtotal es igual a la nc lo guardo si no marco error
'si tiene FNC574, se ajustará la diferencia a un concepto como RNC
Dim tTolerancia As Decimal = 1
'si tiene la funcionalidad ajustará en un producto la diferencia
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then tTolerancia = Math.Abs(TxtSubTotal2.Text.ToDecimal - subtotaldevolucion)
If Math.Abs(TxtSubTotal2.Text.ToDecimal - subtotaldevolucion) <= tTolerancia Then
VinculaDevolucion()
Else
Alert("El Total de la NC debe ser igual al total de la devolucion", TipoMensaje.MsgAdvertencia)
End If
@@ -14053,15 +14056,17 @@ Partial Class Compras_Compras
Dim IVAPorcentajeCompra As Decimal = Math.Round((IVACompra / SubTotalCompra), 2)
Dim Contador As Integer = 0
Dim Consec As Integer = 0
Dim tAjusteUltimo As Boolean = True
For Each gvr As GridViewRow In GVDevolucion.Rows
If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then
Contador += 1
End If
Next
Dim CveSubProyectoContrato As String = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenDevolucion.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto")
Dim SubProyecto As String = GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=CveSubProyectoContrato.ToEntero).FiltroPrimeroValor("SubProyecto")
Dim Total As Decimal = 0
Dim CveSubProyectoDev As String = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenDevolucion.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto")
Dim SubProyecto As String = GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=CveSubProyectoDev.ToEntero).FiltroPrimeroValor("SubProyecto")
'Iteramos el GridView de la OC
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then tAjusteUltimo = False
For Each gvr As GridViewRow In GVDevolucion.Rows
If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then
@@ -14073,7 +14078,7 @@ Partial Class Compras_Compras
Dim UM As String = gvr.DataKey("UM").ToString
Dim CveClasificacion As Integer = gvr.DataKey("CveClasificacion").ToString.ToEntero
Dim Clasificacion As String = gvr.DataKey("Clasificacion").ToString
Dim PS As String = gvr.DataKey("PS").ToString
Dim PS As String = gvr.DataKey("CodigoPS").ToString
Dim CveTipoPS As Integer = gvr.DataKey("CveTipoPS").ToString.ToEntero
Dim CveProyecto As String = "-1"
@@ -14081,14 +14086,14 @@ Partial Class Compras_Compras
Dim Proyecto As String = "Seleccione"
Dim Obs As String = ""
Dim PU As Decimal = gvr.DataKey("PU").ToString.ToDecimal
Dim Total As Decimal = gvr.FCTextBox("TxtTotalDevolucion").Text.ToDecimal
Total = gvr.FCTextBox("TxtTotalDevolucion").Text.ToDecimal
Dim IVA As Decimal = IVAPorcentajeCompra 'Math.Round(Total * IVAPorcentajeCompra, 2)
Dim Descuento As Decimal = 0
Acumulado += (PU * Cantidad)
Consec += 1
If Consec = Contador Then 'SubTotalCompra < Acumulado Then
If Consec = Contador AndAlso tAjusteUltimo Then 'SubTotalCompra < Acumulado Then
'ajusta el valor
Dim dif As Decimal = SubTotalCompra - Acumulado
If dif <> 0 Then
@@ -14096,10 +14101,26 @@ Partial Class Compras_Compras
Total = Cantidad * PU
End If
End If
AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, -1, False)
AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoDev, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVAPorcentajeCompra, 0, 0, 0, 0, Descuento, -1, False, CveAlmacen:=DdlAlmacenDevolucion.SelectedValue.ToEntero)
End If
Next
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then
Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero
If CvePS_RNC = 0 Then
Alert("producto utilizado para diferencia no definido.")
Exit Sub
End If
Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS_RNC).FiltroPrimero("")
Dim PS As String = PSRow("PSCodigo").ToString
Dim tDif As Decimal = TxtSubTotal2.Text.ToDecimal - Total
AddPS(1, PSRow("CveUnidadMedida").ToString.ToEntero, PSRow("UnidadMedida").ToString,
PSRow("CveClasificacion").ToString.ToEntero, PSRow("Clasificacion").ToString, CvePS_RNC, PS, 1, CveSubProyectoDev.ToString, SubProyecto, "", "-1", "", tDif, tDif, IVAPorcentajeCompra, 0, 0, 0, 0, 0)
End If
AddPS2()
BtnGuardar.Enabled = True
@@ -14115,7 +14136,6 @@ Partial Class Compras_Compras
ImgClasificacion.Visible = False
LbAgregar.Visible = False
UpPSS.Update()
'CargaGvInv()
@@ -14137,7 +14157,6 @@ Partial Class Compras_Compras
End If
GvOC1.DataBind()
' TmpDT = OrdenarTablas("CvePS", DTOCTemp, TmpDT)
GvOC2.DataSource = TmpDT
GvOC2.DataBind()
@@ -14491,19 +14510,13 @@ Partial Class Compras_Compras
End If
End If
If Not TmpDT.Columns.Contains("AplicaLote") Then
TmpDT.Columns.Add("AplicaLote", GetType(Boolean))
End If
If Not TmpDT.Columns.Contains("AplicaCaducidad") Then
TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean))
End If
If Not TmpDT.Columns.Contains("Lote") Then
TmpDT.Columns.Add("Lote", GetType(String))
End If
If Not TmpDT.Columns.Contains("FechaCaducidad") Then
TmpDT.Columns.Add("FechaCaducidad", GetType(Date))
End If
If Not TmpDT.Columns.Contains("AplicaLote") Then TmpDT.Columns.Add("AplicaLote", GetType(Boolean))
If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean))
If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String))
If Not TmpDT.Columns.Contains("FechaCaducidad") Then TmpDT.Columns.Add("FechaCaducidad", GetType(Date))
If ObjInventario.GetInv_ComprasMov(CveCompra, UsuarioActual.CveEmpresa) Then
If ObjInventario.DtResultados.Rows.Count > 0 Then
@@ -16721,7 +16734,6 @@ Partial Class Compras_Compras
End If
End If
UPCondicionesPago.Update()
End Sub
@@ -18169,7 +18181,7 @@ Partial Class Compras_Compras
Case "A" 'ADD
Dim SATClavePS As Integer = -1
Dim PSRow As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
If PSRow IsNot Nothing Then
SATClavePS = PSRow("SATClavePS").ToString.ToEntero
End If
@@ -18258,13 +18270,11 @@ Partial Class Compras_Compras
Optional PSCodigo As String = "-", Optional PSDescripcion As String = "-", Optional CantidadF As Double = -1, Optional EntregaDirecta As Integer = -1, Optional OtrosGastos As Decimal = 0,
Optional CveSATPS As Integer = -1, Optional CargaXml As Boolean = False, Optional CveTipoGasto As Integer = -1, Optional TipoGasto As String = "", Optional PorcentajeIVA As Decimal = 0,
Optional PorcentajeIEPS As Decimal = 0, Optional PorcentajeRetIVA As Decimal = 0, Optional PorcentajeRetISR As Decimal = 0, Optional NoDeducible As Boolean = False, Optional CveContratoDetalle As Integer = -1, Optional CveCultivoCuadroDetalle As Integer = -1,
Optional CveSATPSActualizado As Boolean = False, Optional TemporadaCuadro As String = "", Optional CodigoPS As String = "") As Integer
Optional CveSATPSActualizado As Boolean = False, Optional TemporadaCuadro As String = "", Optional CodigoPS As String = "", Optional CveAlmacen As Integer = -1) As Integer
Dim Row As DataRow = Nothing
If Not TmpDT.Columns.Contains("CodigoPS") Then
TmpDT.Columns.Add("CodigoPS")
End If
If Not TmpDT.Columns.Contains("CodigoPS") Then TmpDT.Columns.Add("CodigoPS")
Row = TmpDT.NewRow()
Dim Retorno As Integer = 0
@@ -18425,8 +18435,13 @@ Partial Class Compras_Compras
Row("CveContratoDetalle") = CveContratoDetalle
Row("AplicaSerie") = DrPS("AplicaSerie")
Row("AplicaLote") = DrPS("AplicaLote")
Row("AplicaCaducidad") = DrPS("AplicaCaducidad")
Row("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle
Row("TemporadaCuadro") = TemporadaCuadro
If CveAlmacen > 0 Then Row("CveAlmacen") = CveAlmacen
If UsuarioActual.Empresa.UsaAC Then
Row("CveProgramaOperativo") = DdlACGeneral1.SelectedValue.ToEntero
@@ -19430,7 +19445,7 @@ Partial Class Compras_Compras
For Each Dr As DataRow In Dt.Rows
Dim Total As Decimal = ObjInventario.DtResultados.FiltraParametros($"CveClasificacion = {Dr("CveClasificacion")}").SUM("Total").RoundSQL() ' * (If(EsCancelacion, -1, 1))
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSalida, Not TipoMovtoAlmacen, Total, Total, 95, LblFolio.Text, Obs, 0, CveMovimientoAlmacen:=CveMovimientoSalida, CveClasificacion:=Dr("CveClasificacion").ToString.ToEntero, CveSubProyecto:=tCveSubProyecto, Contabilizable:=EsContabilizable) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSalida, Not TipoMovtoAlmacen, Total, Total, 259, LblFolio.Text, Obs, 0, CveMovimientoAlmacen:=CveMovimientoSalida, CveClasificacion:=Dr("CveClasificacion").ToString.ToEntero, CveSubProyecto:=tCveSubProyecto, Contabilizable:=EsContabilizable) Then
Respuesta = False
End If
Next
@@ -20749,6 +20764,8 @@ Partial Class Compras_Compras
End If
End If
If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then 'cuando es emp DIAZ
If DdlTipoCompra.SelectedValue = "15" Then 'Remisión de nota de crédito
If DdlTipoComprobante.SelectedValue = "NC" Then
@@ -20759,6 +20776,12 @@ Partial Class Compras_Compras
'DdlRemisionNotaCredito.SelectedValueExist(-1)
DdlTipoCompra.SelectedValueExist(-1)
End If
Else
'SE ACTIVA DE NUEVO PARA LA SELECCIÓN
HLAplicaNCFact.Visible = True
InicializaAplicaNCFact()
If CveFactura > 0 Then NCSeleccionFacturasRelacionadas(UUIDSList)
End If
End If
End Sub
@@ -22038,12 +22061,12 @@ Partial Class Compras_Compras
Dim respuesta As Boolean = True
Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal
Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero
Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS_RNC).FiltroPrimero("")
Dim CvePSRNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero
Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSRNC).FiltroPrimero("")
Dim CveSubProyectoPrincipal As Integer = AsignarSubProyectoPrincipal()
Dim SubProyecto As String = ""
If Not CvePS_RNC > 0 Then
If Not CvePSRNC > 0 Then
Alert("No esta definido el producto de Remisión de Nota de Crédito.", TipoMensaje.MsgAdvertencia)
Return False
End If
@@ -22056,7 +22079,6 @@ Partial Class Compras_Compras
SubProyecto = GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=CveSubProyectoPrincipal).FiltroPrimeroValor("SubProyecto")
If PSRow IsNot Nothing Then
Dim CompraRNC As New ClsCompraManagerCompras(UsuarioActual) With {
.TipoDocto = "RNC",
.CveProveedor = CveProveedor,
@@ -22090,7 +22112,7 @@ Partial Class Compras_Compras
Dim IVARNC As Decimal = (Importe * PorcentajeIVA).RoundSQL(2)
Dim TotalRNC As Decimal = If(RedondearSaldado, (Importe + IVARNC).RoundSQL(2), (Importe + IVARNC))
CompraRNC.ConfiguraRegistroRapido(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNC, IVARNC, TotalRNC, PorcentajeIVA, TipoCambio:=TipoCambioOriginal)
CompraRNC.ConfiguraRegistroRapido(CvePSRNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNC, IVARNC, TotalRNC, PorcentajeIVA, TipoCambio:=TipoCambioOriginal)
If CompraRNC.AddCompra(sqltransaccion) Then
Dim tImporteRNC = TotalRNC ' le agrego el importe del iva
Dim Pago As New CompraPago
@@ -22619,7 +22641,7 @@ Partial Class Compras_Compras
nRow("SubTotal") = subtotalParcial.RoundSQL(4)
nRow("Total") = totalParcialDeseado.RoundSQL(4)
nRow("PorcentajeIVA") = (ivaParcial / subtotalParcial).RoundSQL(4)
nRow("PorcentajeIVA") = (ivaParcial / subtotalParcial).RoundSQL(2)
nRow("Porcentaje") = ((totalParcialDeseado.RoundSQL(4) * 100) / TotalOriginal).RoundSQL(2)
nRow("RetIVAPorcentaje") = (retIvaParcial / subtotalParcial).RoundSQL(4)
@@ -22850,7 +22872,7 @@ Public Class ClsCompraManagerCompras
Public Property CveMetodoPago As Integer
Public Property MetodoPago As String
Public Property DocumentosRelacionadosUUIDSList As List(Of String) = New List(Of String)
Public Property DocumentosRelacionadosUUIDSList As HashSet(Of String) = New HashSet(Of String)
Public ReadOnly Property DocumentosRelacionadosUUIDSString As String
Get
Return GeneraStringDoctosRelacionados()
@@ -23069,7 +23091,7 @@ Public Class ClsCompraManagerCompras
If TipoComprobante.ToUpper = "E" AndAlso (CFDIVersion = EnumCFDIVersion.v33 OrElse CFDIVersion = EnumCFDIVersion.v40) Then
Dim UUIDS As String = ""
Dim UUIDSLista As New List(Of String)
Dim UUIDSLista As New HashSet(Of String)
Dim nodeCFDIRelacionados As XmlNode
nodeCFDIRelacionados = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces)
@@ -23222,6 +23244,8 @@ Public Class ClsCompraManagerCompras
If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean))
If Not TmpDT.Columns.Contains("AplicaSerie") Then TmpDT.Columns.Add("AplicaSerie", GetType(Boolean))
If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String))
If Not TmpDT.Columns.Contains("FechaCaducidad") Then TmpDT.Columns.Add("FechaCaducidad", GetType(Date))
@@ -23454,7 +23478,6 @@ Public Class ClsCompraManagerCompras
TmpDT.Columns.Add("SATClaveUnidadMedida", GetType(String))
TmpDT.Columns.Add("CveSATPSActualizado", GetType(Integer))
'Tipo de Gasto
TmpDT.Columns.Add("CveTipoGasto", GetType(Integer))
TmpDT.Columns.Add("TipoGasto", GetType(String))
@@ -23462,26 +23485,23 @@ Public Class ClsCompraManagerCompras
TmpDT.Columns.Add("ImporteSinImpuestos", GetType(Double))
TmpDT.Columns.Add("ImporteConImpuestos", GetType(Double))
TmpDT.Columns.Add("NoDeducible", GetType(Boolean))
TmpDT.Columns.Add("DifPSSat", GetType(Integer))
TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer))
TmpDT.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer))
TmpDT.Columns.Add("TemporadaCuadro", GetType(String))
TmpDT.Columns.Add("NoIdentificacion", GetType(String))
TmpDT.Columns.Add("AplicaSerie", GetType(Boolean))
TmpDT.Columns.Add("AplicaLote", GetType(Boolean))
TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean))
TmpDT.Columns.Add("Serie", GetType(String))
TmpDT.Columns.Add("Lote", GetType(String))
TmpDT.Columns.Add("FechaCaducidad", GetType(Date))
TmpDT.AcceptChanges()
End Sub
Private Function AjustesValidacion() As Boolean
Dim respuesta As Boolean = True