This commit is contained in:
2025-04-24 18:29:38 -07:00
4 changed files with 128 additions and 175 deletions

View File

@@ -1307,6 +1307,7 @@ Namespace Modelos
TmpDT.Columns.Add("Descuento", GetType(Decimal))
TmpDT.Columns.Add("TipoDescuento", GetType(Integer))
TmpDT.Columns.Add("TotalImporte", GetType(Decimal))
TmpDT.Columns.Add("TotalConImpuestos", GetType(Decimal))
TmpDT.Columns.Add("Total", GetType(Decimal))
TmpDT.Columns.Add("RetIVA", GetType(Decimal))
TmpDT.Columns.Add("RetISR", GetType(Decimal))
@@ -1385,8 +1386,14 @@ Namespace Modelos
TmpDT.Columns.Add("CveViajePasajero", GetType(Integer))
TmpDT.Columns("CveViajePasajero").DefaultValue = -1
'COLUMNAS DE Ventas.aspx
TmpDT.Columns.Add("CantidadConversion", GetType(Decimal))
TmpDT.Columns("CantidadConversion").DefaultValue = 0
TmpDT.Columns.Add("NumeroPedimento", GetType(String))
TmpDT.Columns.Add("CodigoAlterno", GetType(String))
TmpDT.Columns.Add("PSAlterno", GetType(String))
TmpDT.Columns.Add("Costo", GetType(Decimal))
TmpDT.Columns("Costo").DefaultValue = 0D
'COLUMNAS DE PV.aspx
TmpDT.Columns.Add("PUOriginal", GetType(Decimal))

View File

@@ -1580,20 +1580,24 @@
HdnSobranteFaltante.value = "0";
//HdnCambioFaltante.value = "1";
let cambio = total - totalVenta;
if (cambio > 1) {
if (cambio > 1 || totalEfectivo > 0) {
$get("TxtFaltante").value = "";
$get("ChkSobFaltante").checked = false;
$get("TxtCambio").value = FormatoNumero(cambio);
} else {
if (cambio == 'NaN') {
$get("TxtFaltante").value = "0.00";
} else {
$get("TxtFaltante").value = FormatoNumero(cambio);
//SOLO ACTIVAR SI NO HAY EFECTIVO
if (totalEfectivo == 0) {
if (cambio == 'NaN') {
$get("TxtFaltante").value = "0.00";
} else {
$get("TxtFaltante").value = FormatoNumero(cambio);
}
$get("ChkSobFaltante").checked = true;
$get("TxtCambio").value = "";
}
$get("ChkSobFaltante").checked = true;
$get("TxtCambio").value = "";
}
} else {
@@ -1627,13 +1631,27 @@
sobFaltantePermitido = 10;
}
if (ToDouble($get("TxtFaltante").value) > sobFaltantePermitido) {
alert("El sobrante/faltante no debe ser mayor a " + sobFaltantePermitido);
let totalEfectivo = $get("TxtImporteEfectivo") ? ToDouble($get("TxtImporteEfectivo").value) : 0;
if (totalEfectivo > 0) {
sobFaltantePermitido = 0;
}
if (sobFaltantePermitido > 0) {
if (ToDouble($get("TxtFaltante").value) > sobFaltantePermitido) {
alert("El sobrante/faltante no debe ser mayor a " + sobFaltantePermitido);
$get("TxtFaltante").value = "";
$get("ChkSobFaltante").checked = false;
} else {
$get("ChkSobFaltante").checked = true;
}
} else {
alert("El sobrante/faltante no esta permitido");
$get("TxtFaltante").value = "";
$get("ChkSobFaltante").checked = false;
} else {
$get("ChkSobFaltante").checked = true;
}
}
function CargaSobranteFaltante() {
@@ -1644,17 +1662,32 @@
if (<%= If(UsuarioActual.Empresa.CveEmpresa = 189, 1, 0)%> == 1) {
sobFaltantePermitido = 10;
}
if (ToDouble($get("TxtCambio").value) > sobFaltantePermitido) {
alert("El sobrante/faltante no debe ser mayor a " + sobFaltantePermitido)
$get("ChkSobFaltante").checked = false;
} else {
if ($get("TxtCambio").value == 'NaN') {
$get("TxtFaltante").value = "0.00";
} else {
$get("TxtFaltante").value = $get("TxtCambio").value;
}
let totalEfectivo = $get("TxtImporteEfectivo") ? ToDouble($get("TxtImporteEfectivo").value) : 0;
if (totalEfectivo > 0) {
sobFaltantePermitido = 0;
}
if (sobFaltantePermitido > 0) {
if (ToDouble($get("TxtCambio").value) > sobFaltantePermitido) {
alert("El sobrante/faltante no debe ser mayor a " + sobFaltantePermitido)
$get("ChkSobFaltante").checked = false;
} else {
if ($get("TxtCambio").value == 'NaN') {
$get("TxtFaltante").value = "0.00";
} else {
$get("TxtFaltante").value = $get("TxtCambio").value;
}
}
} else {
alert("El sobrante/faltante no esta permitido");
$get("TxtFaltante").value = "";
$get("ChkSobFaltante").checked = false;
}
}
else {
$get("TxtFaltante").value = "";

View File

@@ -673,9 +673,11 @@ Partial Class Ventas_PVCobranza
End If
End If
Dim tCveCorte As Integer = CveCorte
Dim DebeTenerCorteCaja As Boolean = UsuarioActual.TienePermisoProceso(371) ' Usa Cortes de Caja - en Cajas
Dim tCveCorte As Integer = If(DebeTenerCorteCaja, Me.CveCorte, -1)
If tCveCorte <= 0 Then
If DebeTenerCorteCaja AndAlso tCveCorte <= 0 Then
Alert("No se puede realizar el pago. Debe tener un corte activo", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
@@ -897,7 +899,7 @@ Partial Class Ventas_PVCobranza
MsgError = "Tiene saldo pendiente por aplicar"
End If
If UsuarioActual.CveRol <> 1 Then
If DebeTenerCorteCaja Then
If MsgError = "" AndAlso Not ObjVentas2.UpdateVentaCorte(CveVenta, UsuarioActual.CveEmpresa, tCveCorte) Then
MsgError = "Error al aplicar el corte"
End If
@@ -1704,12 +1706,9 @@ Partial Class Ventas_PVCobranza
If ChkSobFaltante.Checked AndAlso SobranteFaltante <> 0 Then
'SOBRANTE
If SobranteFaltante > 0 Then
'SI ES EL SOBRANTE EN EFECTIVO SUMAR EL SOBRANTE/FALTANTE
'EL SOBRANTE/FALTANTE NO PUEDE SER EN EFECTIVO
If Metodo = 13 Then
ImporteIE += SobranteFaltante
Pago.OtroGastoIngreso = SobranteFaltante.ToString().ToDecimal()
'LIMPIAR SOBRANTE/FALTANTE
SobranteFaltante = 0
Retorno = "Error en aplicación de sobrante/faltante"
Else
'AJUSTAR DONDE EL IMPORTE A BANCOS SEA MAYOR EN EL DE LA VENTA
If ImporteBancos.RoundSQL(2) >= ImporteAbonoVenta.RoundSQL(2) Then
@@ -1722,52 +1721,60 @@ Partial Class Ventas_PVCobranza
'FALTANTE
If SobranteFaltante < 0 Then
'METER LO QUE FALTA COMO GASTO
If (ImporteBancos.RoundSQL(2) + Math.Abs(SobranteFaltante)) = ImporteAbonoVenta.RoundSQL(2) Then
Pago.OtroGastoIngreso = SobranteFaltante.ToString().ToDecimal()
'EL SOBRANTE/FALTANTE NO PUEDE SER EN EFECTIVO
If Metodo = 13 Then
Retorno = "Error en aplicación de sobrante/faltante"
Else 'METER LO QUE FALTA COMO GASTO
If (ImporteBancos.RoundSQL(2) + Math.Abs(SobranteFaltante)) = ImporteAbonoVenta.RoundSQL(2) Then
Pago.OtroGastoIngreso = SobranteFaltante.ToString().ToDecimal()
'SUMAR AL PAGO
If ImporteBancos < ImporteAbonoVenta Then
ImporteBancos += Math.Abs(SobranteFaltante)
'SUMAR AL PAGO
If ImporteBancos < ImporteAbonoVenta Then
ImporteBancos += Math.Abs(SobranteFaltante)
End If
'LIMPIAR SOBRANTE/FALTANTE
SobranteFaltante = 0
End If
'LIMPIAR SOBRANTE/FALTANTE
SobranteFaltante = 0
End If
End If
End If
CveIEPago = ObjIE.AddBancos_IE(CveBancoCuenta, Metodo, Fecha, "-1", VentaActual.ClienteNombre, ImporteIE, 1, 1, Obs, "", False, True, 0, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCorte:=tCveCorte, CveAutorizacion:=CveAutorizacion, CveSubProyecto:=CveSubProyecto)
If CveIEPago > 0 Then
Dim tImportePago As Decimal = If(ImporteBancos > ImporteAbonoVenta, ImporteAbonoVenta, ImporteBancos) 'toma el importe menor para la factura
If String.IsNullOrEmpty(Retorno) Then
CveIEPago = ObjIE.AddBancos_IE(CveBancoCuenta, Metodo, Fecha, "-1", VentaActual.ClienteNombre, ImporteIE, 1, 1, Obs, "", False, True, 0, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCorte:=tCveCorte, CveAutorizacion:=CveAutorizacion, CveSubProyecto:=CveSubProyecto)
If CveIEPago > 0 Then
Dim tImportePago As Decimal = If(ImporteBancos > ImporteAbonoVenta, ImporteAbonoVenta, ImporteBancos) 'toma el importe menor para la factura
If ImporteIE > 0 Then
If ImporteIE > 0 Then
Pago.ImportePagoVenta = tImportePago
Pago.ImportePago = ImporteIE
Pago.CveIE = CveIEPago
Pago.CveMonedaPago = VentaActual.CveMoneda
Pago.Fecha = NowADS()
Pago.Referencia = VentaActual.SerieFolio
If Pago.CveMonedaPago > 1 Then Pago.TCPago = GlobalTipoCambio(Now).ToDecimal
Pago.ImportePagoVenta = tImportePago
Pago.ImportePago = ImporteIE
Pago.CveIE = CveIEPago
Pago.CveMonedaPago = VentaActual.CveMoneda
Pago.Fecha = NowADS()
Pago.Referencia = VentaActual.SerieFolio
If Pago.CveMonedaPago > 1 Then Pago.TCPago = GlobalTipoCambio(Now).ToDecimal
ErrorConta = AplicaPrePolizaPagoVenta(VentaActual, Pago, CvePrePoliza, ObjConta)
End If
ErrorConta = AplicaPrePolizaPagoVenta(VentaActual, Pago, CvePrePoliza, ObjConta)
End If
If ErrorConta Then
Retorno = "Error en aplicación de pago"
End If
Dim MetodoPago As Integer = If(Metodo = 13, 1, If(Metodo = 12, 4, If(Metodo = 11, 5, If(Metodo = 3, 2, 3))))
If Not ErrorConta AndAlso Not ObjVentas.AddVta_VentaPago(VentaActual.CveVenta, MetodoPago, ImporteBancos) Then
Retorno = "Error en aplicación de pago.."
If ErrorConta Then
Retorno = "Error en aplicación de pago"
End If
Dim MetodoPago As Integer = If(Metodo = 13, 1, If(Metodo = 12, 4, If(Metodo = 11, 5, If(Metodo = 3, 2, 3))))
If Not ErrorConta AndAlso Not ObjVentas.AddVta_VentaPago(VentaActual.CveVenta, MetodoPago, ImporteBancos) Then
Retorno = "Error en aplicación de pago.."
ErrorConta = True
End If
HdnCveIE.Value = CveIEPago.ToString
Else
Retorno = "Pago en Bancos no registrado"
ErrorConta = True
End If
HdnCveIE.Value = CveIEPago.ToString
Else
Retorno = "Pago en Bancos no registrado"
ErrorConta = True
End If
Else
Retorno = "No se ha especificado la cuenta"
End If
@@ -2286,26 +2293,26 @@ Partial Class Ventas_PVCobranza
If TipoDocto = "Ant" Then TipoAnticipo = " 'IxC' "
If Me.TmpDTAnticiposNCIxCCliente IsNot Nothing Then
GVAnticipos.DataSource = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"ISTotal = 0 AND Saldo > 0 AND Tipo IN ({TipoAnticipo}) ")
Else
GVAnticipos.DataSource = Nothing
End If
GVAnticipos.Columns(5).Visible = False
GVAnticipos.Columns(9).Visible = False
If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then
GVAnticipos.Columns(7).Visible = True
End If
GVAnticipos.DataBind()
If ListaAnticiposAplicados IsNot Nothing Then
ListaAnticiposAplicados.Clear()
End If
TxtNCDev.Text = "0.00"
GVAnticipos.DataSource = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"ISTotal = 0 AND Saldo > 0 AND Tipo IN ({TipoAnticipo}) ")
Else
GVAnticipos.DataSource = Nothing
End If
UpAnticipos.Update()
GVAnticipos.Columns(5).Visible = False
GVAnticipos.Columns(9).Visible = False
If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then
GVAnticipos.Columns(7).Visible = True
End If
GVAnticipos.DataBind()
If ListaAnticiposAplicados IsNot Nothing Then
ListaAnticiposAplicados.Clear()
End If
TxtNCDev.Text = "0.00"
End If
UpAnticipos.Update()
End Sub
Protected Sub LnkRecargaAnticipos_Click(sender As Object, e As EventArgs)

View File

@@ -37861,7 +37861,7 @@ Partial Class Ventas
ObjFacturaProntoPago.UsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("Descripcion", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI))
ObjFacturaProntoPago.ClaveUsoCFDISAT = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI))
ObjFacturaProntoPago.DtDetalle = CreaDTDetalleNCProntoPago()
ObjFacturaProntoPago.DtDetalle = Modelos.Factura.CreaDTFactura() 'CreaDTDetalleNCProntoPago()
CargaImpuestosProntoPago(ObjFacturaProntoPago, ObjFactura, ObjCliente.DesglosaIEPS, ObjCliente.RetIVA.ToDecimal, ObjCliente.RetISR.ToDecimal)
@@ -38156,100 +38156,6 @@ Partial Class Ventas
Return query.QueryToDataTable(False)
End Function
Protected Function CreaDTDetalleNCProntoPago() As DataTable
Dim TmpDT As New DataTable
TmpDT.Columns.Add("CveVenta", GetType(Integer))
TmpDT.Columns.Add("Consec", GetType(Integer))
TmpDT.Columns.Add("Cantidad", GetType(Decimal))
TmpDT.Columns.Add("Codigo", GetType(String))
TmpDT.Columns.Add("CveUM", GetType(Integer))
TmpDT.Columns.Add("UM", GetType(String))
TmpDT.Columns.Add("SATClaveUM", GetType(String))
TmpDT.Columns.Add("CveClasificacion", GetType(Integer))
TmpDT.Columns.Add("Clasificacion", GetType(String))
TmpDT.Columns.Add("CvePS", GetType(Integer))
TmpDT.Columns.Add("PS", GetType(String))
TmpDT.Columns.Add("CodigoPS", GetType(String))
TmpDT.Columns.Add("SATClaveProdServ", GetType(String))
TmpDT.Columns.Add("NoIdentificacion", GetType(String))
TmpDT.Columns.Add("CveTipoPS", GetType(Integer))
TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer))
TmpDT.Columns.Add("Serie", GetType(String))
TmpDT.Columns.Add("CuentaPredial", GetType(String))
TmpDT.Columns.Add("Obs", GetType(String))
TmpDT.Columns.Add("TiempoEntrega", GetType(String))
TmpDT.Columns.Add("PU", GetType(Decimal))
TmpDT.Columns.Add("IVA", GetType(Decimal))
TmpDT.Columns.Add("ImporteIVA", GetType(Decimal))
TmpDT.Columns.Add("PorcentajeIVA", GetType(Decimal))
TmpDT.Columns.Add("ImporteRetIVA", GetType(Decimal))
TmpDT.Columns.Add("ImporteRetISR", GetType(Decimal))
TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Decimal))
TmpDT.Columns.Add("PorcentajeRetISR", GetType(Decimal))
TmpDT.Columns.Add("ImporteIEPS", GetType(Decimal))
TmpDT.Columns.Add("IEPS", GetType(Decimal))
TmpDT.Columns.Add("PorcentajeIEPS", GetType(Decimal))
TmpDT.Columns.Add("Descuento", GetType(Decimal))
TmpDT.Columns.Add("TipoDescuento", GetType(Integer))
TmpDT.Columns.Add("TotalImporte", GetType(Decimal))
TmpDT.Columns.Add("Total", GetType(Decimal))
'Para uso del módulo contable
TmpDT.Columns.Add("CveProyecto", GetType(Integer))
TmpDT.Columns.Add("Proyecto", GetType(String))
TmpDT.Columns.Add("CveSubProyecto", GetType(Integer))
TmpDT.Columns.Add("SubProyecto", GetType(String))
TmpDT.Columns.Add("CveVentaDetallePadre", GetType(Integer))
'TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto
TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer))
TmpDT.Columns.Add("CveFuenteRecaudacion", GetType(Integer))
'Contratos
TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer))
'Remisiones a Facturas
TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer))
TmpDT.Columns.Add("CveVentaDetalleRemision", GetType(Integer))
TmpDT.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer))
'Pedido2 a Facturas
TmpDT.Columns.Add("CveVentaDetallePedido2", GetType(Integer))
TmpDT.Columns.Add("Origen", GetType(Integer))
'Ordenes Servicio
TmpDT.Columns.Add("CveOS", GetType(Integer))
TmpDT.Columns.Add("CveOSDetalle", GetType(Integer))
TmpDT.Columns.Add("SeFacturara", GetType(Integer))
TmpDT.Columns.Add("Folio", GetType(Integer))
TmpDT.Columns.Add("Estatus", GetType(String))
'Ordenamiento
TmpDT.Columns.Add("Orden", GetType(Integer))
TmpDT.Columns.Add("TipoDocto", GetType(String))
'OC
TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer))
TmpDT.Columns.Add("EntregaDirecta", GetType(Integer))
TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer))
TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal))
TmpDT.Columns.Add("CantidadFacturadaCot", GetType(Decimal))
TmpDT.Columns.Add("CantidadFacturadaPed2", GetType(Decimal))
TmpDT.Columns.Add("CantidadInventario", GetType(Decimal))
TmpDT.Columns.Add("ClaveSATFraccionArancelaria", GetType(String))
TmpDT.Columns.Add("ClaveSATUnidadAduana", GetType(String))
TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", GetType(String))
TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String))
TmpDT.Columns.Add("CodigoObjetoImpuesto", GetType(String))
TmpDT.Columns.Add("CveTamaño", GetType(Integer))
TmpDT.Columns.Add("EsCargo", GetType(Boolean))
TmpDT.Columns.Add("CveMarca", GetType(Integer))
TmpDT.Columns.Add("CvePrecioLista", GetType(Integer))
TmpDT.Columns.Add("PrecioLista", GetType(String))
TmpDT.Columns.Add("CveActivoFijo", GetType(Integer))
TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal))
TmpDT.Columns.Add("AFValorInicial", GetType(Decimal))
TmpDT.Columns.Add("NumTurnos", GetType(Decimal))
TmpDT.Columns("NumTurnos").DefaultValue = 0D
TmpDT.Columns.Add("NumeroPedimento", GetType(String))
TmpDT.Columns.Add("TotalConImpuestos", GetType(Decimal))
TmpDT.Columns.Add("Costo", GetType(Decimal))
TmpDT.Columns("Costo").DefaultValue = 0D
Return TmpDT
End Function
Private Function InicializaDTVentasNCProntoPago() As DataTable
Dim DtVentasNC As New DataTable
DtVentasNC.Columns.Add("CveVenta", GetType(Integer))