diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 68274613d..4917e8d32 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -6426,6 +6426,26 @@ Public Class ClsInventarios Return Retorno End Function + + Public Function GetVentasRemisionesInventario(Ventas As String, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Inv_VentasRemisionesInventarioGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@Ventas", SqlDbType.VarChar).Value = Ventas + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener el inventario de las remisiones.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + #Region " IDisposable Support " ' IDisposable Protected Overridable Sub Dispose(ByVal disposing As Boolean) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 38cec4aa4..2a408ff3c 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -7742,6 +7742,8 @@ Public Class ClsPaginas 'Dim urlHost As String = "http://localhost:2202/" If EsProduccion Then urlHost = "http://192.200.113.178:6599/" + Else + urlHost = "http://localhost:2202/" End If 'SITIO DE PRUEBA EN IIS Dim Url As Uri = New Uri(String.Format("{0}{1}", urlHost, Opcion)) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index b71c4f47d..ef33bccdd 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -3548,32 +3548,35 @@ Namespace Modelos If Not ErrorPrepoliza AndAlso ObjFactura.CveTipoAmortizacionAnticipo = 2 AndAlso ObjFactura.EsNCAmortizacion AndAlso ObjFactura.TipoDocto.Contiene("Egs") AndAlso ObjFactura.DtAnticiposAplicados IsNot Nothing Then - For Each row2 As DataRow In ObjFactura.DtAnticiposAplicados.Rows - If row2("CveConceptoContable").ToString().ToEntero() = 3 Then - CveIEAnticipo = row2("CveIE").ToString().ToEntero() + For Each RowAnticipo As DataRow In ObjFactura.DtAnticiposAplicados.Rows + If RowAnticipo("Tipo").ToString() = "Ant" AndAlso RowAnticipo("CveConceptoContable").ToString().ToEntero().Contiene(3, 295) Then - importeMovimiento = row2("Importe").ToString().ToDecimal() '- ((row2.FCTextBox("TxtAnticipo" & row2.RowIndex).Text.ToDecimal / row2.DataKey("TotalAnticipo").ToDecimal) * row2.DataKey("IVAAnticipo").ToDecimal) + importeMovimiento = RowAnticipo("Importe").ToString().ToDecimal() Dim ImporteAnticipo As Decimal = importeMovimiento - Dim CveMonedaAnticipo As Integer = row2("CveMoneda").ToString().ToEntero() - - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + Dim CveMonedaAnticipo As Integer = RowAnticipo("CveMoneda").ToString().ToEntero() If ObjFactura.CveTipoAmortizacionAnticipo = 2 Then - Dim DescuentosAnticipos As Decimal = row2("Descuentos").ToString().ToDecimal - ImporteAnticipo = ImporteAnticipo / (row2("TotalAnticipo").ToString().ToDecimal - DescuentosAnticipos) * row2("SubTotalAnticipo").ToString().ToDecimal + Dim DescuentosAnticipos As Decimal = RowAnticipo("Descuentos").ToString().ToDecimal + ImporteAnticipo = ImporteAnticipo / (RowAnticipo("TotalAnticipo").ToString().ToDecimal - DescuentosAnticipos) * RowAnticipo("SubTotalAnticipo").ToString().ToDecimal ImporteAnticipo = ImporteAnticipo.RoundSQL(2) End If - Dim Importe11MX As Decimal = ImporteAnticipo - CveSubProyectoContabilizar = CveSubProyectoVenta + Dim PagoAnt As New ClsPaginas.VentaPago + PagoAnt.ImportePagoVenta = 0 'DEBE SER 0 PORQUE EL PAGO A LA FACTURA YA FUE APLICADO PREVIAMENTE + PagoAnt.ImportePago = ImporteAnticipo + PagoAnt.CveIE = RowAnticipo("CveIE").ToString().ToEntero() + PagoAnt.CveMonedaPago = CveMonedaAnticipo + PagoAnt.TipoPago = "A" + PagoAnt.Fecha = ObjFactura.Fecha + PagoAnt.CveVentaAmortizacion = RowAnticipo("CveVenta").ToString().ToEntero() + PagoAnt.TCPago = RowAnticipo("TipoCambioPago").ToString().ToDecimal() + PagoAnt.AplicaTraslado = False + PagoAnt.Referencia = Referencia + PagoAnt.AplicaConceptoImpuestoPendiente = False + + ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(ventaRef, PagoAnt, ObjFactura.CvePrePoliza, ObjConta) - If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, Importe11MX, Importe11MX, 11, Referencia, Concepto, CveVenta:=row2("CveVenta").ToString().ToEntero(), CveVentaAmortizacion:=ObjFactura.CveVenta, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEAnticipo, CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - Exit For - End If - End If End If Next @@ -4518,7 +4521,7 @@ Namespace Modelos Private Function GuardarVentaInventarios(ByRef Resp As MMensajeFactura, ByRef factura As Modelos.Factura, ObjInventario As ClsInventarios, ObjConta As ClsContabilidad, ObjVentas As ClsVentas, ObjAcum As ClsAcumuladores) As Boolean Dim OcurrioError As Boolean = False - If UsuarioActual.Empresa.UsaInventarios AndAlso factura.TipoDocto.Contiene("Ing", "Egs", "Rem") Then + If UsuarioActual.Empresa.UsaInventarios AndAlso factura.TipoDocto.Contiene("Ing", "Rem") Then If factura.GenerarSalidaAlmacen AndAlso factura.CveAlmacen > 0 AndAlso DtInventario.Rows.Count > 0 Then Dim CveMovimientoInventario As Integer = GenerarMovimientoAlmacenServicioDomicilio(ObjInventario, factura, factura.DtInventario, factura.CveAlmacen, 3, factura.CveMoneda, factura.CveVenta, "Modelos/SA", MovimientoPrePoliza:=True, ObjConta:=ObjConta) @@ -4546,13 +4549,38 @@ Namespace Modelos 'End If If RemisionesLista IsNot Nothing AndAlso factura.TipoDocto = "Ing" AndAlso RemisionesLista.Count > 0 Then - For Each CveRemision As Integer In RemisionesLista - 'El almacen general es el Primer Almacen de Material en la Sucursal - If Not TraspasoAlmacen(ObjInventario, ObjVentas, CveRemision, ObjConta, True, 9, factura.EsFacturaGlobal) Then - OcurrioError = True - Exit For + + If factura.EsFacturaGlobal Then + Dim DtMovimientosRemisiones As DataTable = Nothing + + Dim SbRemisiones As New StringBuilder() + + For Each CveRem In RemisionesLista + SbRemisiones.AppendFormat("{0},", CveRem) + Next + + SbRemisiones.Remove(SbRemisiones.Length - 1, 1) + + If ObjInventario.GetVentasRemisionesInventario(SbRemisiones.ToString(), UsuarioActual.CveEmpresa) Then + DtMovimientosRemisiones = ObjInventario.DtResultados.Copy() End If - Next + + If DtMovimientosRemisiones IsNot Nothing Then + If Not TraspasoAlmacenFacturaGlobal(DtMovimientosRemisiones, ObjInventario, ObjConta) Then + OcurrioError = True + End If + End If + + Else + For Each CveRemision As Integer In RemisionesLista + 'El almacen general es el Primer Almacen de Material en la Sucursal + If Not TraspasoAlmacen(ObjInventario, ObjVentas, CveRemision, ObjConta, True, 9, factura.EsFacturaGlobal) Then + OcurrioError = True + Exit For + End If + Next + End If + End If If factura.TipoDocto = "Rem" AndAlso factura.ServicioDomicilio Then @@ -4905,6 +4933,37 @@ Namespace Modelos End Try Return Not OcurrioError End Function + + + Private Function TraspasoAlmacenFacturaGlobal(DtMovimientosRemisiones As DataTable, ByRef ObjInventario As ClsInventarios, ByRef ObjConta As ClsContabilidad) As Boolean + Dim OcurrioError As Boolean = False + Try + Dim DtMovimientos As DataTable = DtMovimientosRemisiones.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveAlmacen"}) + + For Each RowMovto As DataRow In DtMovimientos.Rows + Dim CveAlmacenParaSalida As Integer = RowMovto("CveAlmacen").ToString().ToEntero() + Dim CveConceptoSalidaAlmacen As Integer = 40 + + Dim MovDetalle As DataTable = DtMovimientosRemisiones.FiltraParametros($"CveMovimiento = {RowMovto("CveMovimiento")}") + + Dim CveMovimientoSalidaAlmacen As Integer = GenerarMovimientoAlmacen(ObjInventario, MovDetalle, CveAlmacenParaSalida, CveConceptoSalidaAlmacen, Me.CveMoneda, Me.CveVenta, AplicaMovimientoDetalleEntrada:=True, MovimientoPrePoliza:=True, ObjConta:=ObjConta) + Dim GeneroMovimientoAlmacen = CveMovimientoSalidaAlmacen > 0 + + If Not GeneroMovimientoAlmacen Then + OcurrioError = True + Exit For + End If + + Next + + Catch ex As Exception + OcurrioError = True + OnError("Ocurrió un error al realizar el traspaso", ex) + End Try + Return Not OcurrioError + End Function + + Private Function GenerarMovimientoAlmacen(ByRef ObjInventario As ClsInventarios, DtMovDetalle As DataTable, CveAlmacen As Integer, ConceptoEntrada As Integer, CveMoneda As Integer, CveVenta As Integer, Optional MovimientoPrePoliza As Boolean = True, Optional ByRef ObjConta As ClsContabilidad = Nothing, Optional CveMovimientoRelacionado As Integer = -1, Optional AplicaMovimientoDetalleEntrada As Boolean = False, Optional CveAlmacenDestino As Integer = -1) As Integer diff --git a/Compras/eFacturas.aspx b/Compras/eFacturas.aspx index 0e84a3b80..0e1e68e12 100644 --- a/Compras/eFacturas.aspx +++ b/Compras/eFacturas.aspx @@ -265,10 +265,10 @@