--Agregar productos similares o complementarios en ventas

This commit is contained in:
2024-06-05 14:05:46 -07:00
parent 8fdf1c8c15
commit 52a976d9ba
10 changed files with 229 additions and 9 deletions

View File

@@ -333,7 +333,7 @@ Partial Class CatPS
End If
If Opcion = 1 Then
If Not ObjPS.AddPSAdicionales(CvePSPagina, CvePSAdicional, Cantidad) Then
If Not ObjPS.AddPSAdicionales(CvePSPagina, CvePSAdicional, Cantidad, 1) Then
Return String.Format("No se registró el producto adicional:{0} no existe en la franquicia: '{1}'", CodigoPS, GlobalDTEmpresas(Franquicia).FiltroPrimeroValor("Empresa"))
End If
End If

View File

@@ -758,12 +758,12 @@
<td><b>Fecha:</b></td>
<td>
<div class="input-group input-sm input-small date date-picker " data-date-format="dd/mm/yyyy" style="width: 117px !important; padding: 0px;">
<asp:TextBox ID="TxtFecha" runat="server" Enabled="false" AutoPostBack="true" CssClass="form-control" CausesValidation="true" MaxLength="10" OnTextChanged="TxtFecha_TextChanged"></asp:TextBox>
<asp:TextBox ID="TxtFecha" runat="server" AutoPostBack="true" CssClass="form-control" CausesValidation="true" MaxLength="10" OnTextChanged="TxtFecha_TextChanged"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="ImgFecha" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server" ></asp:LinkButton>
<asp:LinkButton ID="ImgFecha" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server"></asp:LinkButton>
</span>
<ajax:MaskedEditExtender ID="MEEFecha" runat="server" TargetControlID="TxtFecha" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="CEFecha" TargetControlID="TxtFecha" PopupButtonID="ImgFecha" PopupPosition="BottomRight" Enabled="false" ></ajax:CalendarExtender>
<ajax:CalendarExtender runat="server" ID="CEFecha" TargetControlID="TxtFecha" PopupButtonID="ImgFecha" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="RFVFecha" runat="server" ControlToValidate="TxtFecha" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha''</b> es necesario, por favor ingréselo." ValidationGroup="GrpEmitirImprimir"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CVFecha" runat="server" ControlToValidate="TxtFecha" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha''</b> no tiene el formato correcto, por favor intente de nuevo con el siguiente formato: (dd/mm/yyyy)." Operator="DataTypeCheck" Type="Date" ValidationGroup="GrpEmitirImprimir"></asp:CompareValidator>
<ajax:ValidatorCalloutExtender ID="VCOFecha1" runat="server" HighlightCssClass="vco" TargetControlID="RFVFecha" Width="350px"></ajax:ValidatorCalloutExtender>
@@ -1160,7 +1160,9 @@
<asp:HiddenField ID="HdnAplicaIEPS" runat="server" Value="-1" />
<asp:HiddenField ID="HdnPorcentajeIEPS" runat="server" Value="-1" />
<asp:HiddenField ID="HdnCvePS" runat="server" Value="-1" />
<asp:HiddenField ID="HdnCvePSComparar" runat="server" Value="-1" ClientIDMode="Static" />
<asp:HiddenField ID="HdnTipoPSComparar" runat="server" Value="-1" ClientIDMode="Static" />
<asp:Button ID="BtnCargarPSAdicionales" runat="server" ClientIDMode="Static" Text="adicionales" Style="display: none;" />
<asp:DropDownList ID="DdlClasificacion" CssClass="form-control input-sm select2me" runat="server" AppendDataBoundItems="true" AutoPostBack="true" DataTextField="Clasificacion" DataValueField="CveClasificacion" Width="100%">
<asp:ListItem Selected="True" Text="Seleccione la Clasificación (Todas)" Value="-1"></asp:ListItem>
</asp:DropDownList>
@@ -6566,6 +6568,7 @@
<asp:Button ID="BtnRefacturacionConfirmarAceptacion" runat="server" ClientIDMode="Static" Text="Refacturacion Aceptacion Documento" Style="display: none;" />
<asp:Button ID="BtnRefrescarPagina" runat="server" ClientIDMode="Static" Text="Refrescar" Style="display: none;" />
<asp:Button ID="BtnAplicaNuevaNC" runat="server" ClientIDMode="Static" Text="AplicarNC" Style="display: none;" />
<asp:HiddenField ID="HdnCveVentaAcuse" runat="server" ClientIDMode="Static" Value="0" />
<%--FLETES--%>
<div id="ModalFletes" class="modal ADS fade" role="dialog">
@@ -8925,7 +8928,70 @@
</asp:UpdatePanel>
</div>
<%-- MODAL PS ADICIONALES --%>
<div id="DivSimilares" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpSimilares" class="modal-content rowpadding" tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">
<asp:Literal ID="LtlNombreModalPS" runat="server"></asp:Literal></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvPSAdicionales" runat="server" GridLines="None" DataKeyNames="CvePS,CodigoPS" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-sort="true" BorderWidth="1" BorderColor="#D3D3D3" CellSpacing="0" Width="100%" AutoGenerateColumns="False" data-heighterror="600" EmptyDataText="No se encontraron registros">
<Columns>
<asp:TemplateField ItemStyle-HorizontalAlign="center" ItemStyle-Width="5%" ItemStyle-CssClass="NoClick">
<HeaderTemplate>
<asp:CheckBox runat="server" ID="chkAllPSAdicionales" CssClass="ChkAllClickPS" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkPSAdicional" CssClass="ChkAllEvtPS" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-HorizontalAlign="Right" ItemStyle-Width="10%" HeaderText="Cantidad">
<ItemTemplate>
<asp:TextBox ID="TxtCantidad" runat="server" CausesValidation="true" lang="nb" Text="0.00" MaxLength="12" Width="100%" Height="24px" CssClass="form-control input-sm"></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FTVCantidad" runat="server" TargetControlID="TxtCantidad" FilterType="Custom, Numbers" ValidChars="." />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CodigoPS" ItemStyle-Width="85%" HeaderText="Producto y/o Servicio" ItemStyle-HorizontalAlign="Left"/>
</Columns>
</asp:GridView>
</div>
</div>
<%--<div class="row">
<div class="col-md-6">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtCantidadPSSimilar" runat="server" ClientIDMode="Static" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FTBPSSimilar" runat="server" TargetControlID="TxtCantidadPSSimilar" FilterType="Numbers, Custom" ValidChars="." />
<asp:RequiredFieldValidator ID="RFVPSSimilar" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtCantidadPSSimilar" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Cantidad''</b> es necesario, por favor ingréselo." ValidationGroup="GrpPSSimilar"></asp:RequiredFieldValidator>
<label for="<%= TxtCantidadPSSimilar.ClientID.ToString()%>">Cantidad:</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group form-md-line-input input-iconright">
<asp:DropDownList ID="DdlPSSimilar" Width="100%" runat="server" CssClass="form-control select2me" DataValueField="CvePSAdicional" DataTextField="PS"></asp:DropDownList>
<asp:RequiredFieldValidator ID="RFVSimilar" runat="server" ControlToValidate="DdlPSSimilar" CssClass="help-block errorimput" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Producto/Servicio''</b> es necesario, por favor seleccione uno." InitialValue="-1" ValidationGroup="GrpPSSimilar"></asp:RequiredFieldValidator>
<label for="<%= DdlPSSimilar.ClientID.ToString()%>">Producto/Servicio:</label>
</div>
</div>
</div>--%>
</div>
<div class="modal-footer" style="display: block">
<asp:LinkButton ID="BtnAgregarPSSimilar" runat="server" CssClass="btn btn-success" Text="Agregar" ValidationGroup="GrpPSSimilar"></asp:LinkButton>
<button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</asp:Content>
@@ -10218,6 +10284,7 @@
});
$('body').on('click', '.ChkAllClickAF input', function () { $(".ChkAllEvtAF input").not(this).prop('checked', $('.ChkAllClickAF input').is(':checked')); });
$('body').on('click', '.ChkAllClickPS input', function () { $(".ChkAllEvtPS input").not(this).prop('checked', $('.ChkAllClickPS input').is(':checked')); });
if(HdnCargarInventario.value == 'True'){
$("#TabAlmacen_tab .ajax__tab_inner").click(function () {
@@ -10566,6 +10633,10 @@
$('#BtnCargaAuxiliarConta').click();
}
function CargaPSAdicionalesSimilares() {
$('#BtnCargarPSAdicionales').click();
}
$('.DdlPS').on("select2:open", function (e) { $('.select2-container.select2-container--default .select2-dropdown .select2anothertable').remove(); });
$("body").on("mouseenter", ".select2-container.select2-container--default.select2-container--open .select2-dropdown li", function (event) {
@@ -10597,6 +10668,8 @@
for (var key in item) {
if (idxHeader == 0 && '<%= UsuarioActual.Empresa.Funcionalidad(382) %>' == '1') {
tr.append('<td style="font-weight:bold;"> </td>');
tr.append('<td style="font-weight:bold;"></td>');
tr.append('<td style="font-weight:bold;"></td>');
}
if (!(key == "text" || key == "id")) {
td = $('<td style="font-weight:bold;">' + key + '</td>');
@@ -10612,8 +10685,14 @@
for (var key in item) {
if (idxColumn == 0 && '<%= UsuarioActual.Empresa.Funcionalidad(382) %>' == '1') {
let tdExistencia = '<a href="javascript:void(0);" onclick="javascript:AbrirVentana(' + "'/Inventarios/PopUpExistenciasAlmacen.aspx?CvePS=" + item.id + "'" + ", 800, 547," + "'N'" + ",'PopUpBuscar');$('#C_Tab_TabGenerales_DdlPS > select').select2('close');" + '"> <i class="fa fa-eye" aria-hidden="true"></i> </a>';
let tdExistencia = '<a href="javascript:void(0);" onclick="javascript:AbrirVentana(' + "'/Inventarios/PopUpExistenciasAlmacen.aspx?CvePS=" + item.id + "'" + ", 800, 547," + "'N'" + ",'PopUpBuscar');$('#C_Tab_TabGenerales_DdlPS > select').select2('close');" + '"> <img style="width:15px; height: 13px;" src="../Content/CustomIcons/existencia_verde.svg" alt="Buscar existencias"></img > </a>';
tr.append('<td>' + tdExistencia + '</td>');
let tdComplementarios = '<a href="javascript:void(0);" onclick="' + "javascript:$get('HdnCvePSComparar').value=" + item.id + ";$get('HdnTipoPSComparar').value=1;CargaPSAdicionalesSimilares();" + "$('#C_Tab_TabGenerales_DdlPS > select').select2('close');" + '"> <img style="width:15px; height: 13px;" src="../Content/CustomIcons/sustituir_azul.svg" alt="Productos complementarios"></img ></a>';
tr.append('<td>' + tdComplementarios + '</td>');
let tdSimilares = '<a href="javascript:void(0);" onclick="' + "javascript:$get('HdnCvePSComparar').value=" + item.id + ";$get('HdnTipoPSComparar').value=2;CargaPSAdicionalesSimilares();" + "$('#C_Tab_TabGenerales_DdlPS > select').select2('close');" + '"> <img style="width:15px; height: 13px;" src="../Content/CustomIcons/similar_verde.svg" alt="Productos similares"></img > </a>';
tr.append('<td>' + tdSimilares + '</td>');
}
if (!(key == "text" || key == "id")) {

View File

@@ -8710,6 +8710,9 @@ Partial Class Ventas
If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then
e.Row.FCLinkButton("LnkDescuentos").Visible = True
If e.Row.DBCampo("TipoDocto") = "Cot" AndAlso CveVenta > 0 AndAlso Not EsCreaApartirDe Then
e.Row.FCLinkButton("imgClone").Visible = False
End If
End If
'If GvInv.Rows.Count > 0 AndAlso ModalidadEdicion AndAlso DdlTipoComprobante.SelectedValue = "Rem" AndAlso e.Row.DataKey("CveVentaDetalle").ToString().ToEntero() > 0 Then
@@ -31522,6 +31525,10 @@ Partial Class Ventas
LnkDescuentosRNC.Visible = UsuarioActual.TienePermisoProceso(328)
End If
If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then
GvPS.Columns(19).Visible = True
End If
UpPS.Update()
UPPDescuento.Update()
UPObservaciones.Update()
@@ -33635,12 +33642,85 @@ Partial Class Ventas
ObjVentas.Dispose()
ObjEventos.Dispose()
End Sub
#End Region
Private Sub BtnRefrescarPagina_Click(sender As Object, e As EventArgs) Handles BtnRefrescarPagina.Click
Response.Redirect($"~/Ventas/Ventas.aspx?CveVenta={Me.CveVenta}")
End Sub
#End Region
Private Sub BtnCargarPSAdicionales_Click(sender As Object, e As EventArgs) Handles BtnCargarPSAdicionales.Click
Dim CvePS = HdnCvePSComparar.Value.ToEntero()
If CvePS > 0 Then
Dim ObjProductosServicios As New ClsProductosServicios()
If ObjProductosServicios.GetPSAdicionales(CvePS, UsuarioActual.CveEmpresa) Then
GvPSAdicionales.DataSource = ObjProductosServicios.DtResultados.FiltraParametros($"Tipo={HdnTipoPSComparar.Value}")
End If
ObjProductosServicios.Dispose()
If HdnTipoPSComparar.Value = "1" Then
LtlNombreModalPS.Text = "Productos y/o servicios complementarios"
ElseIf HdnTipoPSComparar.Value = "2" Then
LtlNombreModalPS.Text = "Productos y/o servicios similares"
End If
GvPSAdicionales.DataBind()
UpSimilares.Update()
RegistraScript("$('#DivSimilares').modal({backdrop: 'static', keyboard: false });")
End If
End Sub
Private Sub BtnAgregarPSSimilar_Click(sender As Object, e As EventArgs) Handles BtnAgregarPSSimilar.Click
If HdnTipoPSComparar.Value.ToEntero() > 0 Then
If GvPSAdicionales.Rows.Cast(Of GridViewRow)().Count(Function(gvr) gvr.FCCheckBox("chkPSAdicional").Checked) <= 0 Then
Alert($"Debe seleccionar al menos 1 producto", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'VALIDA
For Each Row As GridViewRow In GvPSAdicionales.Rows
If Row.RowType = DataControlRowType.DataRow Then
If Row.FCCheckBox("chkPSAdicional").Checked Then
If Row.FCTextBox("TxtCantidad").Text.ToDecimal() <= 0.00 Then
Alert($"La cantidad del producto y/o servicio {Row.DataKey("CodigoPS")} debe ser mayor a 0", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
Next
'AGREGA
For Each Row As GridViewRow In GvPSAdicionales.Rows
If Row.RowType = DataControlRowType.DataRow Then
If Row.FCCheckBox("chkPSAdicional").Checked Then
Dim CvePS As Integer = Row.DataKey("CvePS").ToEntero()
HdnPS.Value = CvePS.ToString()
DdlPS.SelectedValue = CvePS.ToString()
DdlPS.SelectedText = Row.DataKey("CodigoPS")
TxtCantidad.Text = Row.FCTextBox("TxtCantidad").Text
Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("")
If DrPS IsNot Nothing Then
DdlUnidadMedida.SelectedValueExistInsert(DrPS("CveUnidadMedida").ToString(), DrPS("UnidadMedida").ToString())
DdlPSIndexChange(DdlPS.SelectedValue.ToEntero(), DdlPS)
AgregarPS()
End If
End If
End If
Next
End If
HdnTipoPSComparar.Value = "-1"
HdnCvePSComparar.Value = "-1"
End Sub
#Region "U S A D O S"