-
This commit is contained in:
@@ -128,7 +128,7 @@ font-size: 12px;
|
||||
<div class="col-md-12">
|
||||
|
||||
<asp:GridView ID="GvDatos" runat="server" AutoGenerateColumns="False" Width="100%" EmptyDataText="No se encontraron datos con los filtros especificados"
|
||||
DataKeyNames="CvePrecioVentaManifiesto,CveEmbarqueManifiesto,CveCultivo,CveCultivoVariedad,Referencia,LdDate,InvDate,PDDate,CantidadVendida,PUVenta,Observaciones"
|
||||
DataKeyNames="CvePrecioVentaManifiesto,CveEmbarqueManifiesto,CveCultivo,CveCultivoVariedad,Referencia,LdDate,InvDate,PDDate,CantidadVendida,PUVenta,Observaciones,Diferencia"
|
||||
ToolTip="" CssClass="table table-striped table-hover Widthall ScrollAD mysmallbt" data-sort="true" GridLines="None">
|
||||
<Columns>
|
||||
<asp:BoundField HeaderText="Manifiesto" DataField="NoEmbarque" />
|
||||
@@ -139,12 +139,11 @@ font-size: 12px;
|
||||
<asp:BoundField HeaderText="Referencia" DataField="Referencia" />
|
||||
<asp:BoundField HeaderText="Fecha Vta" DataField="InvDate" ItemStyle-Width="110px" DataFormatString="{0:dd/MM/yyyy}" HtmlEncode="False" />
|
||||
<asp:BoundField HeaderText="Cantidad" DataField="CantidadVendida" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:N2}" />
|
||||
<asp:BoundField HeaderText="Total Venta" DataField="PUVentaOriginal" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:N2}" />
|
||||
<asp:BoundField HeaderText="Precio venta (Grow)" DataField="PUVenta" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:N2}" />
|
||||
<asp:BoundField HeaderText="Precio del día" DataField="PrecioVenta" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:N2}" />
|
||||
<asp:BoundField HeaderText="Diferencia" DataField="Diferencia" ItemStyle-HorizontalAlign="Center" DataFormatString="{0:N2}" />
|
||||
<asp:BoundField HeaderText="% de diferencia" DataField="Porcentaje" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:N2}%" />
|
||||
<asp:BoundField HeaderText="Fecha Ing." DataField="FechaIng" ItemStyle-HorizontalAlign="Center" DataFormatString="{0:dd/MM/yyyy HH:mm:ss}" HtmlEncode="False" />
|
||||
<asp:BoundField HeaderText="Usuario" DataField="Usuario" />
|
||||
<asp:BoundField HeaderText="Dif." DataField="Diferencia" ItemStyle-HorizontalAlign="Center" DataFormatString="{0:N2}" ItemStyle-Width="50px" />
|
||||
<asp:BoundField HeaderText="% Dif." DataField="Porcentaje" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:N2}%" ItemStyle-Width="50px" />
|
||||
</Columns>
|
||||
</asp:GridView>
|
||||
|
||||
|
||||
@@ -25,10 +25,10 @@ Partial Class Agrupecuaria_RepPreciosVentaManifiesto
|
||||
If Not IsPostBack Then
|
||||
If UsuarioActual.CveEmpresa = 2 AndAlso UsuarioActual.CveUsuario.Contiene(77, 21) Then Response.Redirect("/Inicio.aspx")
|
||||
|
||||
txtFechaI.Text = $"01/{Now.Month.ToString("0#")}/{Now.Year}"
|
||||
txtFechaI.Text = Now.AddDays(-1).ToString("dd/MM/yyyy")
|
||||
txtFechaF.Text = Now.ToString("dd/MM/yyyy")
|
||||
|
||||
TxtModalFechaInicio.Text = $"01/{Now.Month.ToString("0#")}/{Now.Year}"
|
||||
TxtModalFechaInicio.Text = Now.AddDays(-1).ToString("dd/MM/yyyy")
|
||||
TxtModalFechaFin.Text = Now.ToString("dd/MM/yyyy")
|
||||
|
||||
CargaCombos()
|
||||
@@ -120,6 +120,13 @@ Partial Class Agrupecuaria_RepPreciosVentaManifiesto
|
||||
|
||||
#Region " GV DATOS - ROW DATABOUND "
|
||||
Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound
|
||||
If e.Row.RowType = DataControlRowType.DataRow Then
|
||||
Dim Dif As Decimal = e.Row.DataKey("Diferencia").ToDecimal
|
||||
If Dif < 0 Then
|
||||
e.Row.Cells(11).ForeColor = Drawing.Color.Red
|
||||
e.Row.Cells(12).ForeColor = Drawing.Color.Red
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
|
||||
@@ -481,15 +481,16 @@ Public Class ClsOP
|
||||
Return Retorno
|
||||
End Function
|
||||
|
||||
Public Function GetEstatusOP(CveEmpresa As Integer, Optional CveEstatusOP As Integer = -1, Optional TipoEstatus As Integer = -1, Optional Estatus As Integer = -1) As Boolean
|
||||
Public Function GetEstatusOP(CveEmpresa As Integer, Optional CveEstatusOP As Integer = -1, Optional TipoEstatus As Integer = -1, Optional Estatus As Integer = -1, Optional CveUsuario As Integer = -1) As Boolean
|
||||
Dim Retorno As Boolean = False
|
||||
|
||||
DataAdapter("PA_OP_EstatusOPGet")
|
||||
With SqlAdapter.SelectCommand.Parameters
|
||||
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
|
||||
.Add("@CveEstatusOP", SqlDbType.Int).Value = CveEstatusOP
|
||||
.Add("@TipoEstatus", SqlDbType.Int).Value = TipoEstatus
|
||||
.Add("@Estatus", SqlDbType.Int).Value = Estatus
|
||||
.Add("@cveEmpresa", SqlDbType.Int).Value = CveEmpresa
|
||||
.Add("@cveEstatusOP", SqlDbType.Int).Value = CveEstatusOP
|
||||
.Add("@tipoEstatus", SqlDbType.Int).Value = TipoEstatus
|
||||
.Add("@estatus", SqlDbType.Int).Value = Estatus
|
||||
.Add("@cveUsuario", SqlDbType.Int).Value = CveUsuario
|
||||
End With
|
||||
Try
|
||||
SqlAdapter.Fill(Data)
|
||||
|
||||
@@ -6224,6 +6224,7 @@ Public Class ClsPaginas
|
||||
Dim ConfATR2 As String = ""
|
||||
Dim ObjInv As New ClsGenerales
|
||||
Dim TelDestino As String = ""
|
||||
Dim NombreUsuario As String = "" 'Persona que timbro
|
||||
|
||||
If ObjInv.GetGralTimbre(CveTimbre, "-1", MinFecha, MaxFecha, -1, UsuarioActual.CveEmpresa, -1) Then
|
||||
If ObjInv.DtResultados.Rows.Count > 0 Then
|
||||
@@ -6233,6 +6234,7 @@ Public Class ClsPaginas
|
||||
Telefono = Dr("FiguraTelefono").ToString
|
||||
TipoDocto = Dr("TipoDocto").ToString
|
||||
TelDestino = Dr("TelDestino").ToString
|
||||
NombreUsuario = Dr("NombreUsuario").ToString
|
||||
|
||||
If UsuarioActual.CveEmpresa = 13 Then
|
||||
PermisoSCTR1 = Dr("PermisoSCTR1").ToString
|
||||
@@ -6629,6 +6631,7 @@ Public Class ClsPaginas
|
||||
params.Add(New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString))
|
||||
params.Add(New ReportParameter("DomicilioFiscal", $"{UsuarioActual.Empresa.Direccion}, {UsuarioActual.Empresa.Colonia}, {UsuarioActual.Empresa.Localidad}, {UsuarioActual.Empresa.Estado}, Tel. {Telefono}"))
|
||||
params.Add(New ReportParameter("SerieFolio", SerieFolio))
|
||||
params.Add(New ReportParameter("NombreUsuario", NombreUsuario))
|
||||
params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
|
||||
params.Add(New ReportParameter("DomicilioExpedicion", LugarExpedicion))
|
||||
'CLIENTE
|
||||
@@ -11140,7 +11143,7 @@ Public Class ClsPaginas
|
||||
PaginaDict.Add("/Contabilidad/OCDetalleAlmacen.aspx".ToUpper(), -1)
|
||||
PaginaDict.Add("/Contabilidad/RepBalanceGeneralHorizontal.aspx".ToUpper(), -1)
|
||||
PaginaDict.Add("/Agropecuaria/CierreCultivo.aspx".ToUpper(), 1326)
|
||||
PaginaDict.Add("/Agropecuaria/RepPreciosVentaManifiesto.aspx".ToUpper(), -1)
|
||||
PaginaDict.Add("/Agropecuaria/RepPreciosVentaManifiesto.aspx".ToUpper(), 1353)
|
||||
|
||||
PaginaDict.Add("/Inventarios/RepRSCO.aspx".ToUpper(), 1328)
|
||||
PaginaDict.Add("/testApi.aspx".ToUpper(), -1)
|
||||
|
||||
@@ -3604,7 +3604,7 @@ Namespace Modelos
|
||||
Exit Select
|
||||
End If
|
||||
|
||||
If ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant") AndAlso ValorMultiplicador = -1 Then
|
||||
If ObjFactura.TipoDocto.Contiene("Ing", "Egs") AndAlso ValorMultiplicador = -1 Then
|
||||
For Each row2 As DataRow In ObjFactura.DtAnticipos.Rows
|
||||
If row2("CveConceptoContable").ToString().ToEntero = 11 Then
|
||||
importeMovimiento = row2("Importe").ToString().ToDecimal * ValorMultiplicador '- ((row2.FCTextBox("TxtAnticipo" & row2.RowIndex).Text.ToDecimal / row2.DataKey("TotalAnticipo").ToDecimal) * row2.DataKey("IVAAnticipo").ToDecimal)
|
||||
@@ -5732,8 +5732,15 @@ Namespace Modelos
|
||||
Return Retorno
|
||||
End If
|
||||
|
||||
If ObjFactura.TipoDocto = "Ant" AndAlso ObjFactura.SaldoAmortizado > 0 Then
|
||||
Retorno.Mensaje = "La factura no se puede cancelar debido a que el anticipo ha sido amortizado."
|
||||
'If ObjFactura.TipoDocto = "Ant" AndAlso ObjFactura.SaldoAmortizado > 0 Then
|
||||
' Retorno.Mensaje = "La factura no se puede cancelar debido a que el anticipo ha sido amortizado."
|
||||
' Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
|
||||
|
||||
' Return Retorno
|
||||
'End If
|
||||
|
||||
If UsuarioActual.CveEmpresa <> 119 AndAlso ObjFactura.TipoDocto = "Ant" AndAlso ObjFactura.SaldoAnticipo.RoundSQL(2) <> ObjFactura.SubTotal.RoundSQL(2) Then
|
||||
Retorno.Mensaje = "La factura no se puede cancelar debido a que el anticipo ha sido aplicado."
|
||||
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
|
||||
|
||||
Return Retorno
|
||||
|
||||
@@ -209,17 +209,6 @@ Public Class E158 : Implements IHttpHandler, IReadOnlySessionState
|
||||
ObjVentas.Dispose()
|
||||
|
||||
|
||||
'For Each dRow As DataRow In DTresp.Rows
|
||||
|
||||
'Next
|
||||
|
||||
'Dim ObjVentas As New ClsVentas
|
||||
|
||||
'If ObjVentas.AddPreciosVentaManifiesto() Then
|
||||
|
||||
'End If
|
||||
|
||||
'ObjVentas.Dispose()
|
||||
'DTresp.WriteXml("C:\temp\GrowerService\Sales.xml", XmlWriteMode.WriteSchema)
|
||||
|
||||
|
||||
|
||||
@@ -1587,19 +1587,18 @@ Partial Class PopUpVerFactura
|
||||
Dim CVEVENTA As Integer = UrlParametros("CVEVENTA").ToString.ToEntero
|
||||
Dim CVECLIENTE As Integer = UrlParametros("CVECLIENTE").ToString.ToEntero
|
||||
Dim MONTO As Decimal = UrlParametros("MONTO").ToString.ToDecimal
|
||||
Dim TIPO As String = UrlParametros("TIPO").ToString
|
||||
|
||||
If CVECLIENTE > 0 AndAlso (CVEIE > 0 Or CVEVENTA > 0) Then
|
||||
ImprimirSaldosAmortizacion(CVEVENTAAMORTIZADA, CVEIE, CVEVENTA, CVECLIENTE, MONTO)
|
||||
ImprimirSaldosAmortizacion(TIPO, CVEVENTAAMORTIZADA, CVEIE, CVEVENTA, CVECLIENTE, MONTO)
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub ImprimirSaldosAmortizacion(CveVentaAmortizada As Integer, CveIE As Integer, CveVenta As Integer, CveCliente As Integer, Monto As Decimal)
|
||||
Private Sub ImprimirSaldosAmortizacion(Tipo As String, CveVentaAmortizada As Integer, CveIE As Integer, CveVenta As Integer, CveCliente As Integer, Monto As Decimal)
|
||||
|
||||
|
||||
Dim ObjMovtos As New ClsMovimientos()
|
||||
Dim SaldoAntNCDev As Decimal = 0
|
||||
Dim DatosSaldoAntNCDev As New DataTable
|
||||
Dim TipoDocto As String = ""
|
||||
@@ -1607,36 +1606,22 @@ Partial Class PopUpVerFactura
|
||||
Dim Saldo As Decimal = 0D
|
||||
Dim DTNCVinculadas As New DataTable
|
||||
|
||||
|
||||
Dim ObjMovtos As New ClsMovimientos()
|
||||
If ObjMovtos.GetAnticiposNCIxCCliente(CveCliente) Then
|
||||
DatosSaldoAntNCDev = ObjMovtos.DtResultados
|
||||
If Tipo.Contiene("NC", "Ant") Then
|
||||
DatosSaldoAntNCDev = ObjMovtos.DtResultados.FiltraParametros($"Tipo='{Tipo}' AND CveVenta={CveVenta}")
|
||||
ElseIf Tipo.Contiene("IxC") Then
|
||||
DatosSaldoAntNCDev = ObjMovtos.DtResultados.FiltraParametros($"Tipo='{Tipo}' AND CveIE={CveIE}")
|
||||
End If
|
||||
End If
|
||||
ObjMovtos.Dispose()
|
||||
|
||||
If DatosSaldoAntNCDev IsNot Nothing AndAlso DatosSaldoAntNCDev.Rows.Count > 0 Then
|
||||
|
||||
SaldoAntNCDev = If(CveVenta > 0,
|
||||
DatosSaldoAntNCDev.FiltroPrimeroValor("Saldo", $"CveVenta={CveVenta}").ToDecimal,
|
||||
DatosSaldoAntNCDev.FiltroPrimeroValor("Saldo", $"CveIE={CveIE}").ToDecimal)
|
||||
|
||||
TipoDocto = If(CveVenta > 0,
|
||||
DatosSaldoAntNCDev.FiltroPrimeroValor("Tipo", $"CveVenta={CveVenta}"),
|
||||
DatosSaldoAntNCDev.FiltroPrimeroValor("Tipo", $"CveIE={CveIE}"))
|
||||
|
||||
|
||||
|
||||
|
||||
If CveIE > 0 Then
|
||||
CveVenta = DatosSaldoAntNCDev.FiltroPrimeroValor("CveVenta", $"CveIE={CveIE}").ToEntero
|
||||
Folio = DatosSaldoAntNCDev.FiltroPrimeroValor("Folio", $"CveIE={CveIE}")
|
||||
Saldo = DatosSaldoAntNCDev.FiltroPrimeroValor("Saldo", $"CveIE={CveIE}").ToDecimal
|
||||
Else
|
||||
Folio = DatosSaldoAntNCDev.FiltroPrimeroValor("Folio", $"CveVenta={CveVenta}")
|
||||
Saldo = DatosSaldoAntNCDev.FiltroPrimeroValor("Saldo", $"CveVenta={CveVenta}").ToDecimal
|
||||
End If
|
||||
|
||||
|
||||
|
||||
SaldoAntNCDev = DatosSaldoAntNCDev.FiltroPrimeroValor("Saldo").ToDecimal
|
||||
TipoDocto = DatosSaldoAntNCDev.FiltroPrimeroValor("Tipo")
|
||||
Folio = DatosSaldoAntNCDev.FiltroPrimeroValor("Folio")
|
||||
Saldo = DatosSaldoAntNCDev.FiltroPrimeroValor("Saldo").ToDecimal
|
||||
|
||||
End If
|
||||
|
||||
@@ -1651,30 +1636,53 @@ Partial Class PopUpVerFactura
|
||||
ObjVentas.Dispose()
|
||||
End If
|
||||
|
||||
If TipoDocto.Contiene("IxC") Then
|
||||
|
||||
DTNCVinculadas = New DataTable()
|
||||
DTNCVinculadas.Columns.Add(New DataColumn("SerieFolioEstatus", GetType(String)))
|
||||
DTNCVinculadas.Columns.Add(New DataColumn("FechaAplicado", GetType(String)))
|
||||
DTNCVinculadas.Columns.Add(New DataColumn("Moneda", GetType(String)))
|
||||
DTNCVinculadas.Columns.Add(New DataColumn("TotalNC", GetType(String)))
|
||||
Dim DtIxC As DataTable = Nothing
|
||||
Dim ObjVentas As New ClsVentas
|
||||
If ObjVentas.GetRepAnticiposNCIXCDetalle(CveCliente, -1, MinFecha, MaxFecha, UsuarioActual.CveEmpresa, -1, 3, -1, MinFecha, MaxFecha, TipoCambio:=1, TCEspecifico:=-1) Then
|
||||
DtIxC = ObjVentas.DtResultados.FiltraParametros($"CveIE={CveIE} AND TipoColumna ='Aplicación'")
|
||||
End If
|
||||
ObjVentas.Dispose()
|
||||
|
||||
If DtIxC IsNot Nothing Then
|
||||
For Each RowIxC As DataRow In DtIxC.Rows
|
||||
Dim Row As DataRow = DTNCVinculadas.NewRow
|
||||
Row("SerieFolioEstatus") = RowIxC("SerieFolioAmortizacion")
|
||||
Row("FechaAplicado") = RowIxC("FechaAmortizacion")
|
||||
Row("Moneda") = RowIxC("MonedaAmortizacion")
|
||||
Row("TotalNC") = RowIxC("ImporteAmortizacion")
|
||||
DTNCVinculadas.Rows.Add(Row)
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If DTNCVinculadas IsNot Nothing Then
|
||||
|
||||
Dim params As New List(Of ReportParameter)
|
||||
|
||||
params.Add(New ReportParameter("Tipo", Tipo))
|
||||
|
||||
Dim ObjVentas As New ClsVentas
|
||||
If ObjVentas.GetVenta(CveVentaAmortizada, UsuarioActual.CveEmpresa) Then
|
||||
Dim DbRowVenta = ObjVentas.DtResultados.Copy().FiltroPrimero("")
|
||||
|
||||
If DbRowVenta IsNot Nothing Then
|
||||
params.Add(New ReportParameter("SerieFolio", DbRowVenta("SerieFolio").ToString))
|
||||
params.Add(New ReportParameter("SerieFolio", Folio))
|
||||
params.Add(New ReportParameter("Moneda", DbRowVenta("Moneda").ToString))
|
||||
params.Add(New ReportParameter("Cliente", DbRowVenta("ClienteNombre").ToString))
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
ObjVentas.Dispose()
|
||||
|
||||
|
||||
|
||||
Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
|
||||
|
||||
|
||||
params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
|
||||
params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
|
||||
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
|
||||
params.Add(New ReportParameter("FechaImpresion", NowADS().ToString))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1091,13 +1091,13 @@
|
||||
<Width>2.54796cm</Width>
|
||||
</TablixColumn>
|
||||
<TablixColumn>
|
||||
<Width>4.20919cm</Width>
|
||||
<Width>4.01711cm</Width>
|
||||
</TablixColumn>
|
||||
<TablixColumn>
|
||||
<Width>2.24876cm</Width>
|
||||
<Width>2.73018cm</Width>
|
||||
</TablixColumn>
|
||||
<TablixColumn>
|
||||
<Width>6.34152cm</Width>
|
||||
<Width>6.40233cm</Width>
|
||||
</TablixColumn>
|
||||
</TablixColumns>
|
||||
<TablixRows>
|
||||
@@ -1258,7 +1258,7 @@
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style>
|
||||
<TextAlign>Left</TextAlign>
|
||||
<TextAlign>Center</TextAlign>
|
||||
</Style>
|
||||
</Paragraph>
|
||||
</Paragraphs>
|
||||
@@ -1538,7 +1538,7 @@
|
||||
<TablixMember>
|
||||
<Group Name="GPO3" />
|
||||
<TablixHeader>
|
||||
<Size>1.68927cm</Size>
|
||||
<Size>1.39994cm</Size>
|
||||
<CellContents>
|
||||
<Textbox Name="Cantidad3">
|
||||
<CanGrow>true</CanGrow>
|
||||
@@ -1596,7 +1596,7 @@
|
||||
<Top>10.58305cm</Top>
|
||||
<Left>0.44227cm</Left>
|
||||
<Height>1.12062cm</Height>
|
||||
<Width>19.07303cm</Width>
|
||||
<Width>19.13385cm</Width>
|
||||
<ZIndex>3</ZIndex>
|
||||
<Style>
|
||||
<Border>
|
||||
@@ -5381,6 +5381,9 @@
|
||||
</TablixMember>
|
||||
<TablixMember>
|
||||
<Group Name="Details" />
|
||||
<Visibility>
|
||||
<Hidden>=IIF(Fields!MaterialPeligroso.Value = "No",True,False)</Hidden>
|
||||
</Visibility>
|
||||
</TablixMember>
|
||||
</TablixMembers>
|
||||
</TablixRowHierarchy>
|
||||
@@ -5992,7 +5995,7 @@ Se ha recibido el número arriba indicado de bultos/contenedores/remolques/autot
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>=Parameters!UsuarioImprimio.Value</Value>
|
||||
<Value>=Parameters!NombreUsuario.Value</Value>
|
||||
<Style>
|
||||
<FontFamily>Myriad Pro</FontFamily>
|
||||
<FontSize>7.5pt</FontSize>
|
||||
@@ -7528,6 +7531,9 @@ Se ha recibido el número arriba indicado de bultos/contenedores/remolques/autot
|
||||
</TablixMember>
|
||||
<TablixMember>
|
||||
<Group Name="Details2" />
|
||||
<Visibility>
|
||||
<Hidden>=IIF(Fields!MaterialPeligroso.Value = "No",True,False)</Hidden>
|
||||
</Visibility>
|
||||
</TablixMember>
|
||||
</TablixMembers>
|
||||
</TablixRowHierarchy>
|
||||
@@ -7554,80 +7560,6 @@ Se ha recibido el número arriba indicado de bultos/contenedores/remolques/autot
|
||||
</Border>
|
||||
</Style>
|
||||
</Rectangle>
|
||||
<Textbox Name="SerieFolio3">
|
||||
<CanGrow>true</CanGrow>
|
||||
<KeepTogether>true</KeepTogether>
|
||||
<Paragraphs>
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>=Parameters!SerieFolio.Value</Value>
|
||||
<Style>
|
||||
<FontWeight>Bold</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style>
|
||||
<TextAlign>Right</TextAlign>
|
||||
</Style>
|
||||
</Paragraph>
|
||||
</Paragraphs>
|
||||
<rd:DefaultName>SerieFolio</rd:DefaultName>
|
||||
<Top>0.67478cm</Top>
|
||||
<Left>15.20438cm</Left>
|
||||
<Height>0.6cm</Height>
|
||||
<Width>3.97474cm</Width>
|
||||
<ZIndex>12</ZIndex>
|
||||
<Style>
|
||||
<Border>
|
||||
<Style>None</Style>
|
||||
</Border>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
</Textbox>
|
||||
<Textbox Name="SerieFolio4">
|
||||
<CanGrow>true</CanGrow>
|
||||
<KeepTogether>true</KeepTogether>
|
||||
<Paragraphs>
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value xml:space="preserve"> </Value>
|
||||
<Style>
|
||||
<FontWeight>Bold</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
<TextRun>
|
||||
<Value>=Parameters!FechaCertificacion.Value</Value>
|
||||
<Style>
|
||||
<FontWeight>Bold</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style>
|
||||
<TextAlign>Right</TextAlign>
|
||||
</Style>
|
||||
</Paragraph>
|
||||
</Paragraphs>
|
||||
<rd:DefaultName>SerieFolio</rd:DefaultName>
|
||||
<Top>1.45117cm</Top>
|
||||
<Left>15.20438cm</Left>
|
||||
<Height>0.6cm</Height>
|
||||
<Width>3.97474cm</Width>
|
||||
<ZIndex>13</ZIndex>
|
||||
<Style>
|
||||
<Border>
|
||||
<Style>None</Style>
|
||||
</Border>
|
||||
<PaddingLeft>2pt</PaddingLeft>
|
||||
<PaddingRight>2pt</PaddingRight>
|
||||
<PaddingTop>2pt</PaddingTop>
|
||||
<PaddingBottom>2pt</PaddingBottom>
|
||||
</Style>
|
||||
</Textbox>
|
||||
</ReportItems>
|
||||
<KeepTogether>true</KeepTogether>
|
||||
<Top>47.03985cm</Top>
|
||||
@@ -8183,6 +8115,12 @@ Se ha recibido el número arriba indicado de bultos/contenedores/remolques/autot
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>ReportParameter1</Prompt>
|
||||
</ReportParameter>
|
||||
<ReportParameter Name="NombreUsuario">
|
||||
<DataType>String</DataType>
|
||||
<Nullable>true</Nullable>
|
||||
<AllowBlank>true</AllowBlank>
|
||||
<Prompt>ReportParameter1</Prompt>
|
||||
</ReportParameter>
|
||||
</ReportParameters>
|
||||
<Code>Function PageNumber() As String
|
||||
Return Me.Report.Globals!OverallPageNumber
|
||||
|
||||
@@ -3790,7 +3790,7 @@ Partial Class Inventarios_RecepcionAlmacen
|
||||
End If
|
||||
|
||||
If CveTipoFechaVencimiento = 2 Then
|
||||
If Not objCompras.UpdateFechaVencimientoCompra(CveCompra, TxtFecha.Text.ToDate, UsuarioActual.CveEmpresa) Then
|
||||
If Not objCompras.UpdateFechaVencimientoCompra(CveCompra, TxtFecha.Text.ToDate, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then
|
||||
ErrorProceso = True
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -5192,18 +5192,19 @@ public partial class Nomina_Nomina2 : ClsPaginas
|
||||
|
||||
}
|
||||
iniciotipe = column;
|
||||
|
||||
int finPercepciones = iniciotipe;
|
||||
|
||||
column++;
|
||||
TitleRange(libro, "Incapacidad", filainicio + 2, column, filainicio + 2, column+2, false, false, PercborderColor);
|
||||
TitleRange(libro, "Perm. Faltas", filainicio + 3, column, filainicio + 3, column, false, false, PercborderColor);
|
||||
//column++;
|
||||
//TitleRange(libro, "Permisos", filainicio + 3, column, filainicio + 3, column, false, false, colororangeblue);
|
||||
|
||||
column++;
|
||||
TitleRange(libro, "Asistencias", filainicio + 2, column, filainicio + 2, column+2, false, false, colororangeblue);
|
||||
TitleRange(libro, "Incapacidad", filainicio + 3, column, filainicio + 3, column, false, false, colororangeblue);
|
||||
column++;
|
||||
TitleRange(libro, "Permisos", filainicio + 3, column, filainicio + 3, column, false, false, colororangeblue);
|
||||
column++;
|
||||
TitleRange(libro, "Faltas", filainicio + 3, column, filainicio + 3, column, false, false, colororangeblue);
|
||||
column++;
|
||||
Titlecell(libro, "", filainicio + 4, column, true, true, dedcborderColor);
|
||||
//column++;
|
||||
//TitleRange(libro, "Faltas", filainicio + 3, column, filainicio + 3, column, false, false, colororangeblue);
|
||||
//column++;
|
||||
//Titlecell(libro, "", filainicio + 4, column, true, true, dedcborderColor);
|
||||
libro.Column(column).Width = 15;
|
||||
if (dtConceptos.FiltraParametros("Tipo ='D'").Rows.Count > 0)
|
||||
{
|
||||
@@ -5397,12 +5398,12 @@ public partial class Nomina_Nomina2 : ClsPaginas
|
||||
}
|
||||
|
||||
|
||||
//column++;
|
||||
//Titlecell(libro, erow["DiasIncapacidad"], Fila, column, false, false, dedcborderColor);
|
||||
column++;
|
||||
Titlecell(libro, erow["DiasIncapacidad"], Fila, column, false, false, dedcborderColor);
|
||||
column++;
|
||||
Titlecell(libro, "0", Fila, column, false, false, dedcborderColor);
|
||||
column++;
|
||||
Titlecell(libro, erow["DiasFaltados"], Fila, column, false, false, dedcborderColor);
|
||||
Titlecell(libro, "", Fila, column, false, false, PercborderColor);
|
||||
//column++;
|
||||
//Titlecell(libro, erow["DiasFaltados"], Fila, column, false, false, dedcborderColor);
|
||||
|
||||
if (dtConceptos.FiltraParametros("Tipo ='D'").Rows.Count > 0)
|
||||
{
|
||||
|
||||
117
OP/OP.aspx
117
OP/OP.aspx
@@ -279,6 +279,36 @@
|
||||
padding: 5px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.quantity-control {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.quantity-input {
|
||||
width: 70px !important;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
.quantity-buttons {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.btn-quantity {
|
||||
padding: 0;
|
||||
width: 22px;
|
||||
height: 18px;
|
||||
line-height: 1;
|
||||
border: 1px solid #ddd;
|
||||
background: #f8f9fa;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
||||
</asp:Content>
|
||||
@@ -466,7 +496,8 @@
|
||||
<div class="col-md-12">
|
||||
<div class="section-title">Productos</div>
|
||||
<asp:GridView ID="GvProductos" runat="server" AutoGenerateColumns="False"
|
||||
CssClass="table table-striped table-hover" GridLines="None" Width="100%">
|
||||
CssClass="table table-striped table-hover" GridLines="None" Width="100%"
|
||||
OnRowDataBound="GvProductos_RowDataBound">
|
||||
<Columns>
|
||||
<asp:BoundField DataField="PSCodigo" HeaderText="Producto" />
|
||||
<asp:BoundField DataField="UnidadMedida" HeaderText="UM" />
|
||||
@@ -754,67 +785,115 @@
|
||||
<h4 class="modal-title">Finalizar Orden de Producción #<%= LblFolio.Text %></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Almacén de Materia Prima (Fijo) -->
|
||||
<!-- Sección de Almacenes -->
|
||||
<div class="row">
|
||||
<div class="col-md-6 form-group">
|
||||
<label>Almacén de Salida (Materia Prima):</label>
|
||||
<!-- Almacén Salida MP -->
|
||||
<div class="col-md-4 form-group">
|
||||
<label>Almacén Salida (MP):</label>
|
||||
<asp:DropDownList ID="DdlAlmacenOrigenSalidaMP" runat="server"
|
||||
DataTextField="Almacen" DataValueField="CveAlmacen"
|
||||
CssClass="form-control select2me" />
|
||||
</div>
|
||||
<!-- Almacén de Producto Terminado (Dropdown) -->
|
||||
<div class="col-md-6 form-group">
|
||||
<label>Almacén de Entrada (Producto Terminado):</label>
|
||||
|
||||
<!-- Almacén Entrada PT -->
|
||||
<div class="col-md-4 form-group">
|
||||
<label>Almacén Entrada (PT):</label>
|
||||
<asp:DropDownList ID="DdlAlmacenTerminado" runat="server"
|
||||
DataTextField="Almacen" DataValueField="CveAlmacen"
|
||||
CssClass="form-control select2me" />
|
||||
</div>
|
||||
|
||||
<!-- Almacén Devoluciones -->
|
||||
<div class="col-md-4 form-group">
|
||||
<label>Almacén Devoluciones:</label>
|
||||
<asp:DropDownList ID="DdlAlmacenDevolucion" runat="server"
|
||||
DataTextField="Almacen" DataValueField="CveAlmacen"
|
||||
CssClass="form-control select2me" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- GridViews -->
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="section-title">Producto Terminado</div>
|
||||
<asp:GridView ID="GvProductoTerminado" runat="server" AutoGenerateColumns="False"
|
||||
CssClass="table table-striped table-hover" GridLines="None" Width="100%">
|
||||
CssClass="table table-striped table-hover" GridLines="None" Width="100%"
|
||||
OnRowDataBound="GvProductoTerminado_RowDataBound">
|
||||
<Columns>
|
||||
<asp:BoundField DataField="PSCodigo" HeaderText="Producto" />
|
||||
<asp:BoundField DataField="UnidadMedida" HeaderText="UM" />
|
||||
<asp:BoundField DataField="Cantidad" HeaderText="Cantidad" DataFormatString="{0:N2}" />
|
||||
<asp:TemplateField HeaderText="Cantidad">
|
||||
<ItemTemplate>
|
||||
<asp:TextBox ID="TxtCantidadPT" runat="server"
|
||||
Text='<%# Bind("Cantidad") %>'
|
||||
CssClass="form-control"
|
||||
TextMode="Number"
|
||||
min="0"
|
||||
step="1"
|
||||
data-original='<%# Eval("Cantidad") %>'
|
||||
onchange="validarCantidad(this)" />
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
</asp:GridView>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="section-title">Materia Prima</div>
|
||||
<asp:GridView ID="GvMPUtilizada" runat="server" AutoGenerateColumns="False"
|
||||
<asp:GridView ID="GvMPUtilizada" runat="server" AutoGenerateColumns="False" DataKeyNames="CvePSMateriaPrima, CveUMMateriaPrima"
|
||||
CssClass="table table-striped table-hover" GridLines="None" Width="100%">
|
||||
<Columns>
|
||||
<asp:BoundField DataField="PSCodigo" HeaderText="Producto" />
|
||||
<asp:BoundField DataField="Cantidad" HeaderText="Cantidad" DataFormatString="{0:N2}" />
|
||||
<asp:TemplateField HeaderText="Devolución">
|
||||
<ItemTemplate>
|
||||
<asp:TextBox ID="TxtDevolucionMP" runat="server"
|
||||
Text="0"
|
||||
CssClass="form-control"
|
||||
TextMode="Number"
|
||||
min="0"
|
||||
step="1"
|
||||
data-original='<%# Eval("Cantidad") %>'
|
||||
onchange="validarCantidad(this)" />
|
||||
</ItemTemplate>
|
||||
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
</asp:GridView>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<%-- Botón Guardar --%>
|
||||
<asp:Button ID="BtnGuardarFinalizarOP" runat="server" Text="Guardar"
|
||||
CssClass="btn btn-primary" OnClick="BtnGuardarFinalizarOP_Click" />
|
||||
<%-- Botón Cerrar --%>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
|
||||
</div>
|
||||
<asp:Button ID="BtnGuardarFinalizarOP" runat="server" Text="Guardar"
|
||||
CssClass="btn btn-primary" OnClick="BtnGuardarFinalizarOP_Click" />
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
|
||||
</div>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</asp:Content>
|
||||
|
||||
|
||||
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
|
||||
<script>
|
||||
function validarCantidad(input) {
|
||||
var valor = parseFloat(input.value) || 0;
|
||||
var maximo = parseFloat(input.getAttribute('data-original')) || 0;
|
||||
|
||||
if (valor > maximo) {
|
||||
input.value = maximo.toFixed(4);
|
||||
alert("¡La cantidad no puede superar el valor original!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</asp:Content>
|
||||
|
||||
|
||||
384
OP/OP.aspx.vb
384
OP/OP.aspx.vb
@@ -41,7 +41,15 @@ Partial Class OP_OP
|
||||
|
||||
Private Property DtMO As DataTable
|
||||
Get
|
||||
Return DirectCast(ViewState("DtMO"), DataTable)
|
||||
If ViewState("DtMO") Is Nothing Then
|
||||
DtMO = New DataTable()
|
||||
DtMO.Columns.Add("CvePS", GetType(Integer)) ' Producto asociado
|
||||
DtMO.Columns.Add("CvePuesto", GetType(Integer))
|
||||
DtMO.Columns.Add("Puesto", GetType(String))
|
||||
DtMO.Columns.Add("CostoHora", GetType(Decimal))
|
||||
DtMO.Columns.Add("Total", GetType(Decimal))
|
||||
End If
|
||||
Return CType(ViewState("DtMO"), DataTable)
|
||||
End Get
|
||||
Set(value As DataTable)
|
||||
ViewState("DtMO") = value
|
||||
@@ -50,13 +58,31 @@ Partial Class OP_OP
|
||||
|
||||
Private Property DtCI As DataTable
|
||||
Get
|
||||
Return DirectCast(ViewState("DtCI"), DataTable)
|
||||
If ViewState("DtCI") Is Nothing Then
|
||||
DtCI = New DataTable()
|
||||
DtCI.Columns.Add("CvePS", GetType(Integer)) ' Producto asociado
|
||||
DtCI.Columns.Add("CvePSMateriaPrima", GetType(Integer))
|
||||
DtCI.Columns.Add("productoMateriaPrima", GetType(String))
|
||||
DtCI.Columns.Add("Cantidad", GetType(Decimal))
|
||||
DtCI.Columns.Add("PU", GetType(Decimal))
|
||||
DtCI.Columns.Add("Total", GetType(Decimal))
|
||||
End If
|
||||
Return CType(ViewState("DtCI"), DataTable)
|
||||
End Get
|
||||
Set(value As DataTable)
|
||||
ViewState("DtCI") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Property TipoEstatus As Integer
|
||||
Get
|
||||
Return ViewState("TipoEstatus").ToString.ToEntero
|
||||
End Get
|
||||
Set(value As Integer)
|
||||
ViewState("TipoEstatus") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Property DtMPAgregados As DataTable
|
||||
Get
|
||||
If ViewState("DtMPAgregados") Is Nothing Then
|
||||
@@ -74,12 +100,27 @@ Partial Class OP_OP
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Property DtDevoluciones As DataTable
|
||||
Get
|
||||
If ViewState("DtDevoluciones") Is Nothing Then
|
||||
DtDevoluciones = New DataTable()
|
||||
DtDevoluciones.Columns.Add("CvePS", GetType(Integer))
|
||||
DtDevoluciones.Columns.Add("Devolucion", GetType(Decimal))
|
||||
DtDevoluciones.Columns.Add("CveAlmacenDevolucion", GetType(Integer))
|
||||
End If
|
||||
Return CType(ViewState("DtDevoluciones"), DataTable)
|
||||
End Get
|
||||
Set(value As DataTable)
|
||||
ViewState("DtDevoluciones") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
||||
If Not IsPostBack Then
|
||||
CveOP = If(Request("CveOP") <> "", Request("CveOP").ToString.ToEntero, "-1".ToEntero)
|
||||
TipoEstatus = -1
|
||||
CreaPS()
|
||||
SetValues()
|
||||
End If
|
||||
@@ -106,6 +147,7 @@ Partial Class OP_OP
|
||||
DtMP.Columns.Add("UnidadMedida", GetType(String))
|
||||
DtMP.Columns.Add("Cantidad", GetType(Decimal))
|
||||
DtMP.Columns.Add("Surtido", GetType(Decimal))
|
||||
'DtMP.Columns.Add("CvePSProducto", GetType(Integer))
|
||||
'DtMP.Columns.Add("CveAlmacenDestino", GetType(Integer))
|
||||
|
||||
DtMO = New DataTable()
|
||||
@@ -115,15 +157,17 @@ Partial Class OP_OP
|
||||
DtMO.Columns.Add("CvePuesto", GetType(Integer))
|
||||
DtMO.Columns.Add("Puesto", GetType(String))
|
||||
DtMO.Columns.Add("Cantidad", GetType(Decimal))
|
||||
DtMO.Columns.Add("CostoHora", GetType(Decimal))
|
||||
DtMO.Columns.Add("Total", GetType(Decimal))
|
||||
|
||||
|
||||
DtCI = New DataTable()
|
||||
DtCI.Columns.Add("Tipo", GetType(String)) ' Producto, MP, MO, CI
|
||||
DtCI.Columns.Add("Clave", GetType(Integer))
|
||||
'DtCI.Columns.Add("CveUM", GetType(Integer))
|
||||
'DtCI.Columns.Add("CvePSMateriaPrima", GetType(Integer))
|
||||
'DtCI.Columns.Add("CveUMMateriaPrima", GetType(Integer))
|
||||
DtCI.Columns.Add("productoMateriaPrima", GetType(String))
|
||||
DtCI.Columns.Add("Cantidad", GetType(Decimal))
|
||||
DtCI.Columns.Add("PU", GetType(Decimal))
|
||||
DtCI.Columns.Add("Total", GetType(Decimal))
|
||||
|
||||
|
||||
End Sub
|
||||
@@ -133,24 +177,65 @@ Partial Class OP_OP
|
||||
CargarClientes()
|
||||
CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto, VisualizacionReporte:=1)
|
||||
CargarProductos()
|
||||
CargaDatos()
|
||||
|
||||
If CveOP = -1 Then
|
||||
|
||||
DdlClientes.Enabled = True
|
||||
DdlProyecto.Enabled = True
|
||||
DdlSubProyecto.Enabled = True
|
||||
DdlPS.Enabled = True
|
||||
LnkSolicitarMP.Visible = False
|
||||
BtnSimularMP.Visible = True
|
||||
BtnFinalizarOP.Visible = False
|
||||
If TipoEstatus = 3 Then
|
||||
DeshabilitarControles() ' Deshabilita todos los controles relevantes
|
||||
Else
|
||||
DdlClientes.Enabled = False
|
||||
DdlPS.Enabled = False
|
||||
LnkSolicitarMP.Visible = False
|
||||
BtnSimularMP.Visible = False
|
||||
BtnFinalizarOP.Visible = True
|
||||
CargaDatos()
|
||||
If CveOP = -1 Then ' Nueva OP
|
||||
DdlClientes.Enabled = True
|
||||
DdlProyecto.Enabled = True
|
||||
DdlSubProyecto.Enabled = True
|
||||
DdlPS.Enabled = True
|
||||
TxtEstatus.Enabled = True ' Estatus no editable
|
||||
LnkSolicitarMP.Visible = False
|
||||
BtnSimularMP.Visible = True
|
||||
BtnFinalizarOP.Visible = False
|
||||
Else ' OP existente no finalizada
|
||||
If TipoEstatus <> 3 Then
|
||||
DdlClientes.Enabled = True
|
||||
DdlProyecto.Enabled = True
|
||||
DdlSubProyecto.Enabled = True
|
||||
DdlPS.Enabled = True
|
||||
TxtDescripcion.Enabled = True
|
||||
Txtfecha.Enabled = True
|
||||
TxtEstatus.Enabled = True ' Estatus no editable
|
||||
BtnAgregarProducto.Enabled = True
|
||||
BtnSimularMP.Visible = False
|
||||
BtnGuardarOP.Enabled = True
|
||||
BtnFinalizarOP.Visible = True
|
||||
imgCalendarioF.Enabled = True
|
||||
LnkSolicitarMP.Visible = True
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
UpOP.Update()
|
||||
UpGvDatosOP.Update()
|
||||
End Sub
|
||||
|
||||
Private Sub DeshabilitarControles()
|
||||
' Deshabilitar DropDownLists
|
||||
DdlClientes.Enabled = False
|
||||
DdlProyecto.Enabled = False
|
||||
DdlSubProyecto.Enabled = False
|
||||
DdlPS.Enabled = False
|
||||
|
||||
' Deshabilitar TextBox y Date
|
||||
TxtDescripcion.Enabled = False
|
||||
Txtfecha.Enabled = False
|
||||
imgCalendarioF.Enabled = False
|
||||
TxtEstatus.Enabled = False
|
||||
|
||||
' Ocultar Botones
|
||||
BtnAgregarProducto.Visible = False
|
||||
BtnSimularMP.Visible = False
|
||||
BtnGuardarOP.Visible = False
|
||||
BtnFinalizarOP.Visible = False
|
||||
LnkSolicitarMP.Visible = False
|
||||
|
||||
UpOP.Update()
|
||||
UpGvDatosOP.Update()
|
||||
End Sub
|
||||
|
||||
Private Sub CargaDatos()
|
||||
@@ -169,6 +254,7 @@ Partial Class OP_OP
|
||||
DdlPS.txtValue.Value = dr("CvePS").ToString
|
||||
Txtfecha.Text = dr("Fecha").ToString
|
||||
TxtDescripcion.Text = dr("Descripcion").ToString
|
||||
TipoEstatus = dr("TipoEstatus").ToString.ToEntero
|
||||
|
||||
|
||||
If ObjOP.GetProductosOP(CveOP, UsuarioActual.CveEmpresa) Then
|
||||
@@ -221,7 +307,7 @@ Partial Class OP_OP
|
||||
Dim newRow As DataRow = DtCI.NewRow()
|
||||
newRow("Tipo") = "CI"
|
||||
newRow("productoMateriaPrima") = rowCI("producto").ToString
|
||||
newRow("Cantidad") = rowCI("Cantidad").ToString.ToDecimal
|
||||
newRow("Costo") = rowCI("Costo").ToString.ToDecimal
|
||||
DtCI.Rows.Add(newRow)
|
||||
|
||||
Next
|
||||
@@ -292,6 +378,7 @@ Partial Class OP_OP
|
||||
rowMP("PSCodigo") = drMP("productoMateriaPrima").ToString()
|
||||
rowMP("UnidadMedida") = drMP("UnidadMedidaMateriaPrima").ToString()
|
||||
rowMP("Cantidad") = drMP("Cantidad").ToString().ToDecimal()
|
||||
'rowMP("CvePSProducto") = CvePS
|
||||
rowMP("Surtido") = 0
|
||||
DtMP.Rows.Add(rowMP)
|
||||
Next
|
||||
@@ -306,6 +393,8 @@ Partial Class OP_OP
|
||||
rowMO("Clave") = CvePS
|
||||
rowMO("Puesto") = drMO("Puesto").ToString()
|
||||
rowMO("Cantidad") = drMO("Cantidad").ToString().ToDecimal()
|
||||
rowMO("CostoHora") = drMO("precioHora").ToString.ToDecimal()
|
||||
rowMO("Total") = drMO("Cantidad").ToString().ToDecimal() * drMO("precioHora").ToString().ToDecimal()
|
||||
DtMO.Rows.Add(rowMO)
|
||||
Next
|
||||
End If
|
||||
@@ -321,6 +410,8 @@ Partial Class OP_OP
|
||||
'rowCI("CvePSMateriaPrima") = drCI("CvePSMateriaPrima").ToString().ToEntero()
|
||||
rowCI("productoMateriaPrima") = drCI("productoMateriaPrima").ToString()
|
||||
rowCI("Cantidad") = drCI("Cantidad").ToString().ToDecimal()
|
||||
rowCI("PU") = drCI("ImporteCostoIndirecto").ToString().ToDecimal()
|
||||
rowCI("Total") = rowCI("Cantidad").ToString().ToDecimal() * rowCI("PU").ToString().ToDecimal()
|
||||
DtCI.Rows.Add(rowCI)
|
||||
Next
|
||||
End If
|
||||
@@ -329,6 +420,12 @@ Partial Class OP_OP
|
||||
End Sub
|
||||
|
||||
Protected Sub BtnEliminarProducto_Click(sender As Object, e As EventArgs)
|
||||
|
||||
' Verificar si la OP está finalizada
|
||||
If TxtEstatus.Text = "Finalizada" Then
|
||||
Alert("No se pueden eliminar productos de una OP finalizada.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
Dim btnEliminar As LinkButton = DirectCast(sender, LinkButton)
|
||||
Dim CveProducto As Integer = btnEliminar.CommandArgument.ToEntero()
|
||||
|
||||
@@ -361,6 +458,13 @@ Partial Class OP_OP
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Protected Sub GvProductos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvProductos.RowDataBound
|
||||
If e.Row.RowType = DataControlRowType.DataRow Then
|
||||
Dim btnEliminar As LinkButton = DirectCast(e.Row.FindControl("BtnEliminar"), LinkButton)
|
||||
btnEliminar.Visible = (TipoEstatus <> 3)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Sub LnkSolicitarMP_Click(sender As Object, e As EventArgs)
|
||||
' Cargar almacenes
|
||||
DdlAlmacenOrigenMP.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 1")
|
||||
@@ -560,16 +664,16 @@ Partial Class OP_OP
|
||||
Dim MensajeExistencia As New StringBuilder
|
||||
MensajeExistencia.Append("No hay la existencia suficiente de los siguientes productos:<br/>")
|
||||
|
||||
'✅ 1. Validar existencias de MP
|
||||
|
||||
For Each row As GridViewRow In GvMPAgregados.Rows
|
||||
'✅ Obtener claves CORRECTAS de la materia prima
|
||||
|
||||
Dim CveMP As Integer = GvMPAgregados.DataKeys(row.RowIndex)("CvePSMateriaPrima").ToString().ToEntero()
|
||||
Dim CveUMMP As Integer = GvMPAgregados.DataKeys(row.RowIndex)("CveUMMateriaPrima").ToString().ToEntero()
|
||||
Dim CantidadSolicitada As Decimal = DtMP.Rows(row.RowIndex)("Cantidad").ToString().ToDecimal()
|
||||
|
||||
'DtMP.Rows(row.RowIndex)("CveAlmacenDestino") = DdlAlmacenDestinoMP.SelectedValue.ToEntero()
|
||||
|
||||
'✅ Verificar existencias
|
||||
|
||||
|
||||
Dim Existencia As Decimal = ObjInventario.GetExistenciasPS(
|
||||
CvePS:=CveMP,
|
||||
CveUnidadMedida:=CveUMMP,
|
||||
@@ -596,7 +700,7 @@ Partial Class OP_OP
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
'✅ 2. Crear traspaso si todo está correcto
|
||||
|
||||
ObjInventario.IniciaTransacSQL()
|
||||
Dim TieneError As Boolean = False
|
||||
|
||||
@@ -618,10 +722,10 @@ Partial Class OP_OP
|
||||
TieneError = True
|
||||
End If
|
||||
|
||||
'✅ 3. Agregar detalles del traspaso
|
||||
|
||||
If Not TieneError Then
|
||||
For Each row As GridViewRow In GvMPAgregados.Rows
|
||||
'✅ Usar claves de MATERIA PRIMA (CvePSMateriaPrima y CveUMMateriaPrima)
|
||||
|
||||
Dim CveMP As Integer = GvMPAgregados.DataKeys(row.RowIndex)("CvePSMateriaPrima").ToString().ToEntero()
|
||||
Dim CveUMMP As Integer = GvMPAgregados.DataKeys(row.RowIndex)("CveUMMateriaPrima").ToString().ToEntero()
|
||||
Dim Cantidad As Decimal = DtMP.Rows(row.RowIndex)("Cantidad").ToString().ToDecimal()
|
||||
@@ -629,8 +733,8 @@ Partial Class OP_OP
|
||||
If Not ObjInventario.AddTrasladoSolicitudDetalle(
|
||||
CveTraspasoSolicitud,
|
||||
Cantidad,
|
||||
CveUMMP, '✅ Unidad de medida de la MP
|
||||
CveMP, '✅ Clave de la MP
|
||||
CveUMMP,
|
||||
CveMP,
|
||||
0, "", -1, "-1", "-1", MinFecha
|
||||
) Then
|
||||
TieneError = True
|
||||
@@ -639,7 +743,7 @@ Partial Class OP_OP
|
||||
Next
|
||||
End If
|
||||
|
||||
'✅ 4. Confirmar o cancelar transacción
|
||||
|
||||
If Not TieneError Then
|
||||
ObjInventario.Commit()
|
||||
Alert($"Solicitud de Traspaso guardada. Folio: <b>{FolioSolicitud}</b>", TipoMensaje.MsgInformacion)
|
||||
@@ -786,18 +890,35 @@ Partial Class OP_OP
|
||||
End Sub
|
||||
|
||||
Protected Sub DdlAlmacenOrigenMP_SelectedIndexChanged(sender As Object, e As EventArgs)
|
||||
' ✅ Mantener siempre el almacén de producción (tipo 28) en destino
|
||||
|
||||
DdlAlmacenDestinoMP.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 28")
|
||||
DdlAlmacenDestinoMP.DataBind()
|
||||
|
||||
' ✅ Opcional: Seleccionar el primer almacén de producción por defecto
|
||||
|
||||
If DdlAlmacenDestinoMP.Items.Count > 0 Then
|
||||
DdlAlmacenDestinoMP.SelectedIndex = 0
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#Region "Eventos de Botones"
|
||||
Protected Sub GvProductoTerminado_RowDataBound(sender As Object, e As GridViewRowEventArgs)
|
||||
If e.Row.RowType = DataControlRowType.DataRow Then
|
||||
Dim originalQty As Decimal = Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Cantidad"))
|
||||
Dim txtCantidad As TextBox = DirectCast(e.Row.FindControl("TxtCantidadPT"), TextBox)
|
||||
txtCantidad.Attributes("data-original") = originalQty.ToString("0")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Sub GvMPUtilizada_RowDataBound(sender As Object, e As GridViewRowEventArgs)
|
||||
If e.Row.RowType = DataControlRowType.DataRow Then
|
||||
Dim originalQty As Decimal = Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Cantidad"))
|
||||
Dim txtDevolucion As TextBox = DirectCast(e.Row.FindControl("TxtDevolucionMP"), TextBox)
|
||||
txtDevolucion.Attributes("data-original") = originalQty.ToString("0")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
#Region "Finalizar"
|
||||
Protected Sub BtnFinalizarOP_Click(sender As Object, e As EventArgs)
|
||||
If CveOP = -1 Then Exit Sub
|
||||
|
||||
@@ -811,6 +932,11 @@ Partial Class OP_OP
|
||||
DdlAlmacenTerminado.DataBind()
|
||||
DdlAlmacenTerminado.Items.Insert(0, New ListItem("Seleccionar almacén", "-1"))
|
||||
|
||||
' Almacén de Devoluciones (Tipo 1)
|
||||
DdlAlmacenDevolucion.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 1")
|
||||
DdlAlmacenDevolucion.DataBind()
|
||||
DdlAlmacenDevolucion.Items.Insert(0, New ListItem("Seleccionar almacén", "-1"))
|
||||
|
||||
' 3. Cargar GridViews
|
||||
GvProductoTerminado.DataSource = DtPS.FiltraParametros("Tipo = 'Producto'")
|
||||
GvProductoTerminado.DataBind()
|
||||
@@ -823,15 +949,42 @@ Partial Class OP_OP
|
||||
End Sub
|
||||
|
||||
Protected Sub BtnGuardarFinalizarOP_Click(sender As Object, e As EventArgs)
|
||||
Dim EstatusFinalizar As String = GlobalDTOPEstatus(UsuarioActual.CveEmpresa).FiltroPrimeroValor("EstatusOP", "TipoEstatus=3")
|
||||
Dim CveEstatusFinalizar As Integer = GlobalDTOPEstatus(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOP", "TipoEstatus=3").ToEntero()
|
||||
If Not CveEstatusFinalizar > 0 Then
|
||||
Alert("No se encontró el estatus de finalización de la OP.", TipoMensaje.MsgError)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If DdlAlmacenOrigenSalidaMP.SelectedValue = "-1" OrElse DdlAlmacenTerminado.SelectedValue = "-1" Then
|
||||
Alert("Selecciona ambos almacenes.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' Dim TotalCantidad As Decimal = DtMovimientos.SUMD("Cantidad")
|
||||
'Inicia la transacción
|
||||
For Each row As GridViewRow In GvProductoTerminado.Rows
|
||||
Dim txtCantidad As TextBox = DirectCast(row.FindControl("TxtCantidadPT"), TextBox)
|
||||
Dim cantidadIngresada As Decimal = txtCantidad.Text.ToDecimal()
|
||||
Dim cantidadOriginal As Decimal = txtCantidad.Attributes("data-original").ToDecimal()
|
||||
|
||||
Dim CveMovimientoSalida As Integer = 0
|
||||
If cantidadIngresada > cantidadOriginal Then
|
||||
Alert("La cantidad del producto terminado no puede superar lo solicitado.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
Next
|
||||
|
||||
|
||||
For Each row As GridViewRow In GvMPUtilizada.Rows
|
||||
Dim txtDevolucion As TextBox = DirectCast(row.FindControl("TxtDevolucionMP"), TextBox)
|
||||
Dim devolucionIngresada As Decimal = txtDevolucion.Text.ToDecimal()
|
||||
Dim cantidadOriginal As Decimal = txtDevolucion.Attributes("data-original").ToDecimal()
|
||||
|
||||
If devolucionIngresada > cantidadOriginal Then
|
||||
Alert("La devolución no puede superar la cantidad de materia prima solicitada.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
Next
|
||||
|
||||
Dim CveMovimientoSalida As Integer = 1
|
||||
Dim CveMovimientoEntrada As Integer = 0
|
||||
Dim IDPoliza As Integer = 0
|
||||
Dim FolioSalida As Integer = 0
|
||||
@@ -844,8 +997,13 @@ Partial Class OP_OP
|
||||
Dim ErrorMovInv As Boolean = False
|
||||
Dim TextoError As String = ""
|
||||
Dim TipoMovimientoSalida As Integer = 8
|
||||
Dim TipoMovimientoDev As Integer = 33
|
||||
Dim CveConceptoEntrada As Integer = 9
|
||||
Dim TotalCostoMP As Decimal = 0
|
||||
'Dim TotalDevoluciones As Decimal = 0
|
||||
Dim CveMovimientoDev As Integer = 0
|
||||
Dim CostoDevoluciones As Decimal = 0
|
||||
|
||||
|
||||
Dim ObjInventario As New ClsInventarios()
|
||||
|
||||
@@ -855,16 +1013,102 @@ Partial Class OP_OP
|
||||
Try
|
||||
|
||||
CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacenOrigenSalidaMP.SelectedValue.ToEntero(), TipoMovimientoSalida, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:="Finalización OP #" & LblFolio.Text, Modulo:="OP/FinalizarOPSalida")
|
||||
|
||||
FolioEntrada = ObjInventario.Folio
|
||||
Dim DtMPAlmacen As DataTable = Nothing
|
||||
If CveMovimientoSalida > 0 Then
|
||||
For Each rowMP As DataRow In DtMP.Select("Tipo = 'MP'")
|
||||
|
||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, rowMP("Cantidad").ToString.ToDecimal(), rowMP("CveUMMateriaPrima").ToString.ToEntero(), rowMP("CvePSMateriaPrima").ToString.ToEntero(), 1) Then
|
||||
ErrorMovInv = True : TextoError = "x" : Exit For
|
||||
For Each rowMP As DataRow In DtMP.Select("Tipo = 'MP'")
|
||||
Dim CvePS As Integer = rowMP("CvePSMateriaPrima").ToString.ToEntero
|
||||
Dim CveUM As Integer = rowMP("CveUMMateriaPrima").ToString.ToEntero
|
||||
Dim Cantidad As Decimal = rowMP("Cantidad").ToString.ToDecimal
|
||||
|
||||
' Registrar detalle
|
||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Cantidad, CveUM, CvePS, 0) Then
|
||||
ErrorMovInv = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
||||
TotalCostoMP = ObjInventario.DtResultados.SUMD("Total")
|
||||
|
||||
If Not ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
||||
Throw New Exception("Error al cargar detalles del inventario")
|
||||
End If
|
||||
DtMPAlmacen = ObjInventario.DtResultados.Copy()
|
||||
|
||||
' 5. Calcular TotalCostoMP (ya está actualizado)
|
||||
TotalCostoMP = ObjInventario.DtResultados.SUMD("Total")
|
||||
|
||||
Dim CostosPorProducto As New Dictionary(Of Integer, Decimal)
|
||||
|
||||
' 1. Recorrer cada Producto Terminado en la OP
|
||||
For Each rowProducto As DataRow In DtPS.Select("Tipo = 'Producto'")
|
||||
Dim CvePSProducto As Integer = rowProducto("Clave").ToString.ToEntero()
|
||||
Dim CantidadProducto As Decimal = rowProducto("Cantidad").ToString.ToDecimal()
|
||||
Dim TotalMPProducto As Decimal = 0
|
||||
Dim TotalMOProducto As Decimal = 0
|
||||
Dim TotalCIProducto As Decimal = 0
|
||||
|
||||
' 2. Calcular Costo de Materias Primas por Producto
|
||||
For Each rowMP As DataRow In DtMP.Select($"Clave = {CvePSProducto}")
|
||||
Dim CvePSMP As Integer = rowMP("CvePSMateriaPrima").ToString.ToEntero()
|
||||
Dim CveUMMP As Integer = rowMP("CveUMMateriaPrima").ToString.ToEntero()
|
||||
Dim PU As Decimal = DtMPAlmacen.FiltroPrimeroValor("PU", $"CvePS = {CvePSMP} AND CveUM = {CveUMMP}").ToDecimal()
|
||||
TotalMPProducto += rowMP("Cantidad").ToString().ToDecimal() * PU
|
||||
Next
|
||||
|
||||
' 3. Calcular Mano de Obra por Producto
|
||||
For Each rowMO As DataRow In DtMO.Select($"Clave = {CvePSProducto}")
|
||||
TotalMOProducto += rowMO("Total").ToString.ToDecimal()
|
||||
Next
|
||||
|
||||
' 4. Calcular Costos Indirectos por Producto
|
||||
For Each rowCI As DataRow In DtCI.Select($"Clave = {CvePSProducto}")
|
||||
TotalCIProducto += rowCI("Total").ToString.ToDecimal()
|
||||
Next
|
||||
|
||||
' 5. Sumar Total por Producto (MP + MO + CI)
|
||||
Dim TotalProducto As Decimal = TotalMPProducto + TotalMOProducto + TotalCIProducto
|
||||
CostosPorProducto.Add(CvePSProducto, TotalProducto)
|
||||
Next
|
||||
|
||||
' 2. PROCESAR DEVOLUCIONES SI EXISTEN
|
||||
If Not ErrorMovInv Then
|
||||
Dim TotalDevoluciones As Decimal = GvMPUtilizada.Rows.Cast(Of GridViewRow)().Sum(Function(row) DirectCast(row.FindControl("TxtDevolucionMP"), TextBox).Text.ToDecimal())
|
||||
|
||||
If TotalDevoluciones > 0 Then
|
||||
If DdlAlmacenDevolucion.SelectedValue = "-1" Then
|
||||
Alert("Seleccione almacén para devoluciones", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
CveMovimientoDev = ObjInventario.AddMovimiento(DdlAlmacenDevolucion.SelectedValue.ToEntero(), TipoMovimientoDev, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=$"Devolución OP #{LblFolio.Text}", Modulo:="OP/Devoluciones", CveMovimientoRelacionado:=CveMovimientoSalida)
|
||||
|
||||
|
||||
If CveMovimientoDev > 0 Then
|
||||
For Each row As GridViewRow In GvMPUtilizada.Rows
|
||||
Dim Devolucion As Decimal = row.FCTextBox("TxtDevolucionMP").Text.ToDecimal()
|
||||
If Devolucion > 0 Then
|
||||
Dim CvePS As Integer = row.DataKey("CvePSMateriaPrima").ToEntero 'GvMPUtilizada.DataKeys(row.RowIndex)("CvePSMateriaPrima").ToString.ToEntero()
|
||||
Dim CveUM As Integer = row.DataKey("CveUMMateriaPrima").ToEntero 'GvMPUtilizada.DataKeys(row.RowIndex)("CveUMMateriaPrima").ToString.ToEntero()
|
||||
|
||||
|
||||
Dim PU As Decimal = DtMPAlmacen.FiltroPrimeroValor("PU", $"CvePS = {CvePS} AND CveUM = {CveUM}").ToDecimal()
|
||||
|
||||
If Not ObjInventario.AddMovimientoDetalle(
|
||||
CveMovimientoDev,
|
||||
Devolucion,
|
||||
CveUM,
|
||||
CvePS,
|
||||
PU
|
||||
) Then
|
||||
ErrorMovInv = True
|
||||
End If
|
||||
|
||||
CostoDevoluciones += Devolucion * PU
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
If Not ErrorMovInv Then
|
||||
@@ -872,8 +1116,9 @@ Partial Class OP_OP
|
||||
End If
|
||||
|
||||
If CveMovimientoEntrada > 0 AndAlso Not ErrorMovInv Then
|
||||
Dim CantidadPT As Decimal = DtPS.AsEnumerable().Sum(Function(row) Convert.ToDecimal(row("Cantidad")))
|
||||
Dim PU_PT As Decimal = If(CantidadPT > 0, TotalCostoMP / CantidadPT, 1)
|
||||
Dim CostoPTAjustado As Decimal = TotalCostoMP - CostoDevoluciones
|
||||
Dim CantidadPT As Decimal = DtPS.AsEnumerable().Sum(Function(r) r.Field(Of Decimal)("Cantidad"))
|
||||
Dim PU_PT As Decimal = If(CantidadPT > 0, CostoPTAjustado / CantidadPT, 0)
|
||||
|
||||
For Each rowPT As DataRow In DtPS.Select("Tipo = 'Producto'")
|
||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, rowPT("Cantidad").ToString.ToDecimal(), rowPT("CveUM").ToString.ToEntero(), rowPT("Clave").ToString.ToEntero(), PU_PT) Then
|
||||
@@ -889,24 +1134,24 @@ Partial Class OP_OP
|
||||
ErrorMovInv = True
|
||||
End If
|
||||
|
||||
If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCostoMP, TotalCostoMP, 68, "Producción PT OP #" & LblFolio.Text, "Producción PT OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoEntrada) Then
|
||||
If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, CostoPTAjustado, CostoPTAjustado, 68, "Producción PT OP #" & LblFolio.Text, "Producción PT OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoEntrada) Then
|
||||
ErrorMovInv = True
|
||||
End If
|
||||
|
||||
If Not ErrorMovInv Then
|
||||
|
||||
If Not ObjOP.UpdateEstatusOP(CveOP, 3, UsuarioActual.CveEmpresa) Then
|
||||
ErrorMovInv = True : TextoError = "Error al actualizar estatus de la OP"
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, CostoDevoluciones, CostoDevoluciones, 95, "", $"OP #{LblFolio.Text}", CveMovimientoAlmacen:=CveMovimientoDev)
|
||||
|
||||
|
||||
|
||||
|
||||
'If Not ErrorMovInv Then
|
||||
' If Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then
|
||||
' ErrorMovInv = True : TextoError = "Error en validación de póliza"
|
||||
' ElseIf ObjConta.ValorPolizaDescuadre > 0 Then
|
||||
' ErrorMovInv = True : TextoError = "Descuadre en póliza contable"
|
||||
' End If
|
||||
'If Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then
|
||||
'ErrorMovInv = True : TextoError = "Error en validación de póliza"
|
||||
'ElseIf ObjConta.ValorPolizaDescuadre > 0 Then
|
||||
' ErrorMovInv = True : TextoError = "Descuadre en póliza contable"
|
||||
'End If
|
||||
'End If
|
||||
End If
|
||||
End If
|
||||
@@ -914,16 +1159,32 @@ Partial Class OP_OP
|
||||
|
||||
|
||||
If Not ErrorMovInv Then
|
||||
ObjInventario.Commit()
|
||||
Alert($"Orden de producción finalizada.
|
||||
<br/><a class='Texto' href='/Inventarios/EntradasSalidas.aspx?CveMovimiento= {CveMovimientoEntrada}'>{ObjInventario.Folio}</a> ", TipoMensaje.MsgInformacion)
|
||||
If ObjOP.UpdateEstatusOP(CveOP, CveEstatusFinalizar, UsuarioActual.CveEmpresa) Then
|
||||
ObjInventario.Commit()
|
||||
TxtEstatus.Text = EstatusFinalizar
|
||||
DeshabilitarControles()
|
||||
UpOP.Update()
|
||||
UpGvDatosOP.Update()
|
||||
Alert("Orden de producción finalizada.<br/>" & "<a class='Texto' href='/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & CveMovimientoEntrada & "'>" & FolioEntrada & "</a>",
|
||||
TipoMensaje.MsgInformacion)
|
||||
|
||||
|
||||
|
||||
RegistraScript("$('#DVModalFinalizarOP').modal('hide');")
|
||||
|
||||
|
||||
Else
|
||||
ObjInventario.RollBack()
|
||||
Alert("Error al actualizar el estatus.", TipoMensaje.MsgError)
|
||||
End If
|
||||
|
||||
Else
|
||||
ObjInventario.RollBack()
|
||||
Alert($"Error contable: {TextoError}", TipoMensaje.MsgError)
|
||||
End If
|
||||
|
||||
RegistraScript("$('#DVModalFinalizarOP').modal('hide');")
|
||||
CargaDatos()
|
||||
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
ObjInventario.RollBack()
|
||||
@@ -933,7 +1194,6 @@ Partial Class OP_OP
|
||||
ObjConta.Dispose()
|
||||
End Try
|
||||
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
@@ -2601,16 +2601,27 @@ Partial Class Clientes
|
||||
If tPagare = 0 Then InformacionCompleta = False
|
||||
|
||||
End If
|
||||
If TxtContacto.Text.Trim() = "" Then InformacionCompleta = False
|
||||
|
||||
If TxtTelefono.Text.Trim() = "" Then InformacionCompleta = False
|
||||
If TxtEmail.Text.Trim() = "" Then InformacionCompleta = False
|
||||
If TxtRepresentanteLegal.Text.Trim() = "" Then InformacionCompleta = False
|
||||
|
||||
tPagare = 0 'valida que cuando menos tenga una cuenta
|
||||
For Each dRow As GridViewRow In GvBancosCuentas.Rows
|
||||
tPagare = 1
|
||||
Next
|
||||
If tPagare = 0 Then InformacionCompleta = False
|
||||
'SOLO VALIDA EN CLIENTES FRENCUENTE
|
||||
If DdlTipoCliente.SelectedValue = "1" Then
|
||||
If TxtContacto.Text.Trim() = "" Then InformacionCompleta = False
|
||||
If TxtRepresentanteLegal.Text.Trim() = "" Then InformacionCompleta = False
|
||||
'si es el concepto de pagaré
|
||||
Dim tPagare As Integer = 0
|
||||
For Each dRow As GridViewRow In GvDocumentosCliente.Rows
|
||||
Dim CveDocumentacion As Integer = dRow.DataKey("CveDocumentacion").ToEntero()
|
||||
If CveDocumentacion = 265 Then tPagare = 1
|
||||
Next
|
||||
If tPagare = 0 Then InformacionCompleta = False
|
||||
tPagare = 0 'valida que cuando menos tenga una cuenta
|
||||
For Each dRow As GridViewRow In GvBancosCuentas.Rows
|
||||
tPagare = 1
|
||||
Next
|
||||
If tPagare = 0 Then InformacionCompleta = False
|
||||
End If
|
||||
|
||||
'If DivInfoCompleta.Visible Then
|
||||
' InformacionCompleta = ChkInformacionCompleta.Checked
|
||||
|
||||
@@ -706,7 +706,7 @@
|
||||
<asp:CheckBox ID="ChkSobFaltante" runat="server" ClientIDMode="Static" />
|
||||
<div class="input-icon" style="margin-left: 20px;">
|
||||
<i style="margin: 0px;">$</i>
|
||||
<asp:TextBox ID="TxtFaltante" CssClass="form-control input-sm " runat="server" MaxLength="12" Width="100px" ClientIDMode="Static" Style="text-align: right; font-size: 14px;"></asp:TextBox>
|
||||
<asp:TextBox ID="TxtFaltante" CssClass="form-control input-sm" onkeyup="ValidaSobranteFaltante()" runat="server" MaxLength="12" Width="100px" ClientIDMode="Static" Style="text-align: right; font-size: 14px;"></asp:TextBox>
|
||||
<ajax:FilteredTextBoxExtender ID="FilteredTextBoxExtender4" runat="server" TargetControlID="TxtCambio" FilterType="Custom, Numbers" ValidChars=".," />
|
||||
</div>
|
||||
</div>
|
||||
@@ -1591,7 +1591,7 @@
|
||||
} else {
|
||||
$get("TxtFaltante").value = FormatoNumero(cambio);
|
||||
$get("ChkSobFaltante").checked = true;
|
||||
$get("TxtCambio").value = FormatoNumero(cambio);
|
||||
$get("TxtCambio").value = "";
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -1617,15 +1617,26 @@
|
||||
$('#C_LblDiferenciaCajaBloqueo').val(FormatoNumero(total));
|
||||
}
|
||||
|
||||
function ValidaSobranteFaltante() {
|
||||
if (ToDouble($get("TxtFaltante").value) > 1) {
|
||||
alert("El sobrante/faltante no debe ser mayor a 1");
|
||||
$get("TxtFaltante").value = "";
|
||||
$get("ChkSobFaltante").checked = false;
|
||||
} else {
|
||||
$get("ChkSobFaltante").checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
function CargaSobranteFaltante() {
|
||||
$('#ChkSobFaltante').change(function () {
|
||||
if (this.checked == true) {
|
||||
if (ToDouble($get("TxtCambio").value) > 1) {
|
||||
alert("El sobrante/faltante no debe ser mayor a 1")
|
||||
$get("ChkSobFaltante").checked = false;
|
||||
} else {
|
||||
$get("TxtFaltante").value = $get("TxtCambio").value;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
$get("TxtFaltante").value = "";
|
||||
|
||||
@@ -607,6 +607,11 @@ Partial Class Ventas_PVCobranza
|
||||
Alert("No hay importe para sobrante/faltante", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
Else
|
||||
If TxtFaltante.Text.ToDecimal() <> 0 Then
|
||||
Alert("No debe especificar sobrante/faltante", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
End If
|
||||
|
||||
'validaciones
|
||||
@@ -1024,12 +1029,12 @@ Partial Class Ventas_PVCobranza
|
||||
|
||||
If respFactura IsNot Nothing AndAlso respFactura.Factura IsNot Nothing AndAlso respFactura.Factura.DtAnticiposAplicados IsNot Nothing Then
|
||||
For Each dr As DataRow In respFactura.Factura.DtAnticiposAplicados.Rows
|
||||
msBuild.AppendLine($"<br><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=AMORTIZACIONHIS&CVEIE={0}&CVEVENTA={1}&CVECLIENTE={2}&CVEVENTAAMORTIZADA={3}&MONTO={4}",
|
||||
msBuild.AppendLine($"<br><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=AMORTIZACIONHIS&CVEIE={0}&CVEVENTA={1}&CVECLIENTE={2}&CVEVENTAAMORTIZADA={3}&MONTO={4}&TIPO={5}",
|
||||
dr("CveIE").ToString,
|
||||
dr("CveVenta").ToString,
|
||||
respFactura.Factura.CveCliente,
|
||||
respFactura.CveVenta,
|
||||
respFactura.Factura.Total))}"">Imprimir Saldo Aplicado {dr("Folio").ToString}</a><br/>")
|
||||
respFactura.Factura.Total, dr("Tipo")))}"">Imprimir Saldo Aplicado {dr("Folio").ToString}</a><br/>")
|
||||
Next
|
||||
End If
|
||||
|
||||
@@ -1064,12 +1069,12 @@ Partial Class Ventas_PVCobranza
|
||||
|
||||
If respNC IsNot Nothing AndAlso respNC.Factura IsNot Nothing AndAlso respNC.Factura.DtAnticiposAplicados IsNot Nothing Then
|
||||
For Each dr As DataRow In respNC.Factura.DtAnticiposAplicados.Rows
|
||||
msBuild.AppendLine($"<br><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=AMORTIZACIONHIS&CVEIE={0}&CVEVENTA={1}&CVECLIENTE={2}&CVEVENTAAMORTIZADA={3}&MONTO={4}",
|
||||
msBuild.AppendLine($"<br><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=AMORTIZACIONHIS&CVEIE={0}&CVEVENTA={1}&CVECLIENTE={2}&CVEVENTAAMORTIZADA={3}&MONTO={4}&Tipo={5}",
|
||||
dr("CveIE").ToString,
|
||||
dr("CveVenta").ToString,
|
||||
respNC.Factura.CveCliente,
|
||||
respNC.CveVenta,
|
||||
respNC.Factura.Total))}"">Imprimir Saldo Aplicado {dr("Folio").ToString}</a><br/>")
|
||||
respNC.Factura.Total, dr("Tipo")))}"">Imprimir Saldo Aplicado {dr("Folio").ToString}</a><br/>")
|
||||
Next
|
||||
End If
|
||||
|
||||
@@ -1444,22 +1449,6 @@ Partial Class Ventas_PVCobranza
|
||||
For Each msg In Retorno.Mensajes
|
||||
SbAlert.AppendFormat("{0} <br/>", msg)
|
||||
Next
|
||||
|
||||
SbAlert.AppendFormat("<ul><li><a class=""Texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"">Descargar PDF Factura</a></li></ul><br/>", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1", Retorno.CveVenta)))
|
||||
|
||||
For Each dr As DataRow In DtAnticipos.Rows
|
||||
SBAmortizaciones.AppendLine($"<br><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=AMORTIZACIONHIS&CVEIE={0}&CVEVENTA={1}&CVECLIENTE={2}&CVEVENTAAMORTIZADA={3}&MONTO={4}&SALDO={5}",
|
||||
dr("CveIE").ToString,
|
||||
dr("CveVenta").ToString,
|
||||
Retorno.Factura.CveCliente,
|
||||
Retorno.CveVenta,
|
||||
Retorno.Factura.Total,
|
||||
(Retorno.Factura.Total - Retorno.Factura.DtAnticiposAplicados.SUM("Importe"))))}"">Imprimir historial {dr("Folio").ToString}</a><br/>")
|
||||
Next
|
||||
|
||||
|
||||
SbAlert.Append(SBAmortizaciones.ToString)
|
||||
|
||||
Else
|
||||
SbAlert.Append("Ocurrió un error al generar la factura")
|
||||
End If
|
||||
@@ -1601,7 +1590,6 @@ Partial Class Ventas_PVCobranza
|
||||
Dim Importe = GvRowAnticipo.FCTextBox(String.Format("TxtAnticipo{0}", GvRowAnticipo.RowIndex)).Text.ToDecimal()
|
||||
Dim CveConceptoContable = GvRowAnticipo.DataKey("CveConceptoContable").ToEntero()
|
||||
|
||||
|
||||
Dim FolioFiscal = GvRowAnticipo.DataKey("FolioFiscal")
|
||||
Dim Descuentos As Decimal = GvRowAnticipo.DataKey("Descuentos").ToDecimal()
|
||||
Dim TotalAnticipo As Decimal = GvRowAnticipo.DataKey("TotalAnticipo").ToDecimal()
|
||||
@@ -1612,8 +1600,10 @@ Partial Class Ventas_PVCobranza
|
||||
Dim Folio = GvRowAnticipo.DataKey("Folio")
|
||||
Dim Tipo = GvRowAnticipo.DataKey("Tipo")
|
||||
|
||||
|
||||
DtAnticipos.Rows.Add(CveVenta, Importe, CveConceptoContable, CveIE, FolioFiscal, Descuentos, TotalAnticipo, SubTotalAnticipo, CveMoneda, Fecha, TipoCambioPago, Folio, Tipo)
|
||||
|
||||
ObjNC.Observaciones = $"Folio: {GvRowAnticipo.DataKey("Folio")}"
|
||||
|
||||
End If
|
||||
|
||||
ObjNC.EsNCAmortizacion = True
|
||||
@@ -1708,12 +1698,14 @@ Partial Class Ventas_PVCobranza
|
||||
'METER LO QUE FALTA COMO GASTO
|
||||
If (ImporteBancos.RoundSQL(2) + Math.Abs(SobranteFaltante)) = ImporteAbonoVenta.RoundSQL(2) Then
|
||||
Pago.OtroGastoIngreso = SobranteFaltante.ToString().ToDecimal()
|
||||
'LIMPIAR SOBRANTE/FALTANTE
|
||||
SobranteFaltante = 0
|
||||
|
||||
'SUMAR AL PAGO
|
||||
If ImporteBancos < ImporteAbonoVenta Then
|
||||
ImporteBancos += Math.Abs(SobranteFaltante)
|
||||
End If
|
||||
|
||||
'LIMPIAR SOBRANTE/FALTANTE
|
||||
SobranteFaltante = 0
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -2469,9 +2461,9 @@ Partial Class Ventas_PVCobranza
|
||||
|
||||
Dim AnticipoAutorizado = CBool(e.Row.DBCampo("AnticipoAutorizado"))
|
||||
|
||||
'If Not EsProduccion AndAlso UsuarioActual.CveRol = 1 Then
|
||||
' AnticipoAutorizado = True
|
||||
'End If
|
||||
If Not EsProduccion AndAlso UsuarioActual.CveRol = 1 Then
|
||||
AnticipoAutorizado = True
|
||||
End If
|
||||
|
||||
If UsuarioActual.Empresa.Funcionalidad(185) = "1" Then
|
||||
If e.Row.DBCampo("Tipo").ToString().Contiene("NC", "Ant", "IxC") AndAlso Not AnticipoAutorizado Then
|
||||
|
||||
@@ -5255,7 +5255,7 @@ Partial Class Ventas
|
||||
If TienePermiso <> "" Then ' si tiene acceso en el subproyecto
|
||||
'LkNotaCredito.Visible = UsuarioActual.TienePermisoProceso(175)
|
||||
If UsuarioActual.TienePermisoProceso(264) Then
|
||||
InicializaAplicaDevolucion(TmpDT)
|
||||
InicializaAplicaDevolucion(TmpDT, DbRowVenta("Fecha").ToString().ToDateTime())
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -32863,7 +32863,7 @@ Partial Class Ventas
|
||||
#End Region
|
||||
|
||||
#Region " APLICA DEVOLUCION "
|
||||
Private Sub InicializaAplicaDevolucion(DtDetalle As DataTable)
|
||||
Private Sub InicializaAplicaDevolucion(DtDetalle As DataTable, FechaVenta As DateTime)
|
||||
'If Not UsuarioActual.CveUsuario = 100 Then
|
||||
' If Not UsuarioActual.CveEmpresa.Contiene(72, 80, 119, 140, 141, 146) Then
|
||||
' Exit Sub
|
||||
@@ -32875,7 +32875,17 @@ Partial Class Ventas
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
LBAplicaDevolucion.Visible = True
|
||||
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
|
||||
If FechaVenta.ToShortDateString.ToDate < Now.ToShortDateString.ToDate Then
|
||||
LBAplicaDevolucion.Visible = True
|
||||
Else
|
||||
LBAplicaDevolucion.Visible = False
|
||||
End If
|
||||
Else
|
||||
LBAplicaDevolucion.Visible = True
|
||||
End If
|
||||
|
||||
|
||||
|
||||
'SOLO APLICA DEVOLUCION SI TIENE MOVIMIENTOS DE ALMACEN
|
||||
'If VentaSaldoAlmacen < 0 Then
|
||||
|
||||
Reference in New Issue
Block a user