diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index f6730e5d0..8737fc436 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -505,7 +505,7 @@ Public Class ClsCompras Public Function UpdateCompraDetalle(CvePS As Integer, Cantidad As Double, PU As Double, IVA As Double, Total As Double, Descuento As Double, Observaciones As String, CveSubProyecto As Integer, CvePresupuestoEgreso As Integer, CveActivoFijo As Integer, CveCompraDetalle As Integer, Optional AplicaCostoIndirecto As Integer = -1, Optional CvePersonal As Integer = -1, Optional CveTipoGasto As Integer = -1, Optional AF_Medida As Integer = -1, Optional AF_TipoMantenimiento As Integer = -1, Optional Referencia As String = "", Optional RetIVA As Double = 0, Optional RetISR As Double = 0, Optional IEPSPS As Double = 0, Optional IEPSPSIVA As Double = 0, - Optional IVAPorcentaje As Double = 0, Optional RetIVAPorcentaje As Double = 0, Optional RetISRPorcentaje As Double = 0, Optional IEPSPSPorcentaje As Double = 0, Optional IEPSPSIVAPorcentaje As Double = 0, Optional NoDeducible As Boolean = False) As Boolean + Optional IVAPorcentaje As Double = 0, Optional RetIVAPorcentaje As Double = 0, Optional RetISRPorcentaje As Double = 0, Optional IEPSPSPorcentaje As Double = 0, Optional IEPSPSIVAPorcentaje As Double = 0, Optional NoDeducible As Boolean = False, Optional CveContratoDetalle As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -540,6 +540,8 @@ Public Class ClsCompras .Add("@IEPSPSPorcentaje", SqlDbType.Float).Value = IEPSPSPorcentaje .Add("@IEPSPSIVAPorcentaje", SqlDbType.Float).Value = IEPSPSIVAPorcentaje .Add("@NoDeducible", SqlDbType.Bit).Value = NoDeducible + .Add("@CveContratoDetalle", SqlDbType.Int).Value = CveContratoDetalle + End With diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index da0dd286a..a389a2184 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6741,13 +6741,6 @@ Partial Class Compras_Compras End If Next - 'Dim Valor = (From dr1 In GlobalDTAcumTamaños().FiltraParametros("CveEmpresa = 140").AsEnumerable() - ' Join dr2 In TmpDT.AsEnumerable On dr1.Field(Of Integer)("CvePSCargo") Equals dr2.Field(Of Integer)("CvePS") - ' Select New With - ' { - ' .Total = dr2.Field(Of Double)("Total") - ' }).Sum(Function(item) item.Total) - importeMovimiento += Valor importeMN = importeMovimiento * tipoCambioActual * Multiplicador End If @@ -6771,6 +6764,7 @@ Partial Class Compras_Compras If importeMovimiento > 0 Or TxtTotal.Text.ToDecimal = 0 Then RegistroCuentaPuente = True + Dim ImporteTransito As Decimal = 0 'Conta ContPAQ If IdCtaContable = 0 Then CuentasContablesInvalidas.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) @@ -6783,10 +6777,58 @@ Partial Class Compras_Compras IdCtaContable = 0 End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContabilizacionNC, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, CveMovimientoAlmacen:=CveMovimientoDevolucion, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True + 'se lleva saldo de Mercancía en tránsito + + If ChkNCInvNC.Checked Then + For Each Gvr As GridViewRow In GVNCInv.Rows + If Gvr.FCTextBox("TxtCantidadNCInv").Text.ToDouble > 0 Then + If Not ObjCompras.ComprasDetalleDevolucionesAdd(Gvr.DataKey("CveCompraDetalle").ToEntero, CveCompra, Gvr.FCTextBox("TxtCantidadNCInv").Text.ToDouble, UsuarioActual.CveEmpresa) Then + ErrorMovInv = True + Exit For + End If + + End If + Next + + For Each Gvr As GridViewRow In GVNCInvAlmacen.Rows + If Gvr.FCTextBox("TxtCantidadNCInv").Text.ToDouble > 0 Then + Dim importeMNTemp As Decimal = 0 + If Not ObjCompras.ComprasDetalleDevolucionesAdd(Gvr.DataKey("CveCompraDetalle").ToEntero, CveCompra, Gvr.FCTextBox("TxtCantidadNCInv").Text.ToDouble, UsuarioActual.CveEmpresa) Then + ErrorMovInv = True + Exit For + End If + importeMNTemp = (Gvr.DataKey("PU").ToDecimal * Gvr.FCTextBox("TxtCantidadNCInv").Text.ToDecimal * Gvr.DataKey("TipoCambio").ToDecimal).RoundSQL + ImporteTransito += importeMNTemp + 'se registra por cada compra relacionada + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMNTemp, Referencia, ConceptoContabilizacionNC, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMNTemp, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=Gvr.DataKey("TipoCambio").ToDecimal, CveMovimientoAlmacen:=CveMovimientoDevolucion, Contabilizable:=SeContabiliza) Then + ErrorPrepoliza = True + End If + End If + Next + + 'si hay diferencia + + Dim diferenciaTransito As Decimal = ImporteTransito - importeMN.RoundSQL + + If diferenciaTransito <> 0 Then + Dim tCveCon As Integer = 65 + If diferenciaTransito < 0 Then + tCveCon = 64 + End If + diferenciaTransito = diferenciaTransito.Abs + IdCtaContable = 0 + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, If(tCveCon = 64, True, False), diferenciaTransito, Referencia, tCveCon, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=diferenciaTransito, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=1, CveMovimientoAlmacen:=CveMovimientoDevolucion, Contabilizable:=SeContabiliza) Then + ErrorPrepoliza = True + End If + End If + + End If + 'If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContabilizacionNC, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, CveMovimientoAlmacen:=CveMovimientoDevolucion, Contabilizable:=SeContabiliza) Then + ' ErrorPrepoliza = True + 'End If + End If @@ -6931,7 +6973,7 @@ Partial Class Compras_Compras tidctacon = ViewState("CtaProveedorAnticiposExtranjera").ToString.ToEntero End If - ElseIf DdlTipoComprobante.SelectedValue = "NC" Then + ElseIf DdlTipoComprobante.SelectedValue = "NC" AndAlso UsuarioActual.Empresa.Funcionalidad(405).ToEntero > 0 Then tcvecon = 259 tidctacon = UsuarioActual.Empresa.Funcionalidad(405).ToEntero @@ -7151,7 +7193,7 @@ Partial Class Compras_Compras End If ' FLUCTUACION CAMBIARIA - If tipoCambioActual <> TipoCambioFactura Then + If tipoCambioActual <> TipoCambioFactura AndAlso Not ChkNCInvNC.Checked Then ' que no se esté afectando mercancía en tránsto importeMovimiento = (importeMovimientoNC * TipoCambioFactura) - (importeMovimientoNC * tipoCambioActual) If importeMovimiento > 0 Then @@ -10167,7 +10209,7 @@ Partial Class Compras_Compras If Not ObjCompra.UpdateCompraDetalle(Row("CvePS").ToString.ToEntero, Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, Row("IVA").ToString.ToDouble, Row("Total").ToString.ToDouble, Row("Descuento").ToString.ToDouble, Row("Obs").ToString, Row("CveSubProyecto").ToString.ToEntero, Row("CvePresupuestoEgreso").ToString.ToEntero, CveAF, Row("CveCompraDetalle").ToString.ToEntero, CvePersonal:=CvePersonal, CveTipoGasto:=Row("CveTipoGasto").ToString.ToEntero, AF_Medida:=Row("AFMedida").ToString.ToEntero, AF_TipoMantenimiento:=Row("AFTipoMantenimiento").ToString.ToEntero, Referencia:=Referencia, RetIVA:=Row("RetIVA").ToString.ToDouble, RetISR:=Row("RetISR").ToString.ToDouble, IEPSPS:=Row("IEPSPS").ToString.ToDouble, IEPSPSIVA:=Row("IEPSPSIVA").ToString.ToDouble, - IVAPorcentaje:=Row("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=Row("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=Row("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=Row("IEPSPSPorcentaje").ToString.ToDouble, IEPSPSIVAPorcentaje:=Row("IEPSPSIVAPorcentaje").ToString.ToDouble, NoDeducible:=If((Row("NoDeducible").ToString().ToUpper().Contiene("TRUE", "1")) AndAlso EsNoDeducible, True, False)) Then + IVAPorcentaje:=Row("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=Row("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=Row("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=Row("IEPSPSPorcentaje").ToString.ToDouble, IEPSPSIVAPorcentaje:=Row("IEPSPSIVAPorcentaje").ToString.ToDouble, NoDeducible:=If((Row("NoDeducible").ToString().ToUpper().Contiene("TRUE", "1")) AndAlso EsNoDeducible, True, False), CveContratoDetalle:=Row("CveContratoDetalle").ToString.ToEntero) Then Retorno = False Exit For @@ -10216,9 +10258,10 @@ Partial Class Compras_Compras Next For Each item As String In ClavesBorradas - Dim ObjCompras As New ClsCompras - If Not ObjCompras.DeleteCompraDetalle(item.ToEntero) Then - Retorno = False + If item.ToEntero > 0 Then + If Not ObjCompra.DeleteCompraDetalle(item.ToEntero) Then + Retorno = False + End If End If Next @@ -20107,14 +20150,6 @@ Partial Class Compras_Compras Dim IDPoliza As Integer = 0 - 'EMPIEZA OBJETOS Y TRANSACCIONES - 'Dim OC As New ClsOC - 'Dim OCBitacora As New ClsOIEventos(OC.IniciaTransacSQL()) - 'Dim ObjInventarios As New ClsInventarios(OC.IniciaTransacSQL()) - 'Dim ObjConta As New ClsContabilidad(OC.IniciaTransacSQL()) - - - Dim DtInvOC As New DataTable Dim DtInvOCDiferencias As New DataTable 'Actualizado con diferencia DtInvOCDiferencias.Columns.Add("CveOrdenCompra", GetType(Integer)) @@ -20142,7 +20177,7 @@ Partial Class Compras_Compras Dim diferencia As Decimal = (dr2("PU").ToString.ToDecimal - gvr.FCTextBox("TxtPU").Text.ToDecimal) * gvr.FCTextBox("TxtCantidad").Text.ToDecimal Dim DrInvOCDiferencias As DataRow - If diferencia <> 0 Then 'And DtInvOC.Rows.Count > 0 + If diferencia <> 0 Then DrInvOCDiferencias = DtInvOCDiferencias.NewRow DrInvOCDiferencias("CveOrdenCompra") = dr2("CveOrdenCompra").ToString.ToEntero DrInvOCDiferencias("CveOrdenCompraDetalle") = dr2("CveOrdenCompraDetalle").ToString.ToEntero @@ -20201,7 +20236,7 @@ Partial Class Compras_Compras If DtInvOCDiferencias.Rows.Count > 0 Then 'VARIABLES - Dim CveOrdenCompra = -1 + Dim CveOrdenCompra As Integer = -1 Dim DiferenciaInvOC = 0.0D Dim CveMovimientoAlmacen = -1 Dim CveOCDetalle = -1 @@ -20284,15 +20319,14 @@ Partial Class Compras_Compras If DiferenciaInvOC.RoundSQL() <> 0 Then If CveSubProyecto <= 0 Then - Alert("Debe de asignar un sub proyecto o centro de constos.", TipoMensaje.MsgAdvertencia) + Alert("Debe de asignar un sub proyecto o centro de costos.", TipoMensaje.MsgAdvertencia) Retorno = False End If - CvePrePoliza = ObjConta.AddPrePolizas("Compras/OC-(OCAlmacen)", 74, DiferenciaInvOC, DiferenciaInvOC, 1, Fecha, ConceptoPartida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePoliza > 0 Then - If CveMoneda = 2 And UsuarioActual.CveEmpresa.Contiene(119) Then + If CveMoneda = 2 Then ImporteME = (DiferenciaInvOC / TCInvOC).RoundAD() ImporteMEComp = ((ImporteME * TCInvOC) - ImporteME).RoundAD()