Files
SIG/Compras/Compras.aspx.vb
2019-08-21 18:56:28 -07:00

18763 lines
1.1 MiB
Raw Blame History

Option Explicit On
Option Strict On
Imports Extensiones
Imports System.Data
Imports System.Xml
Imports System.Globalization
Imports System.Linq
Imports System
Imports System.IO
Imports ADServerControl
Imports System.Threading.Tasks
Partial Class Compras_Compras
Inherits ClsPaginas
#Region "Propiedades"
'Local
Private Property RequiereEvaluacion() As Boolean
Get
Return If(IsNothing(ViewState("RequiereEvaluacion")), False, CBool(ViewState("RequiereEvaluacion")))
End Get
Set
ViewState("RequiereEvaluacion") = Value
End Set
End Property
Private Property CveUsuarioEvaluador() As Integer
Get
Return If(IsNothing(ViewState("CveUsuarioEvaluador")), -1, CInt(ViewState("CveUsuarioEvaluador")))
End Get
Set
ViewState("CveUsuarioEvaluador") = Value
End Set
End Property
Private Property TmpDT As DataTable
Get
Return CType(ViewState("TmpDT"), DataTable)
End Get
Set(value As DataTable)
ViewState("TmpDT") = value
End Set
End Property
Private Property TmpDTOriginal As DataTable
Get
Return CType(ViewState("TmpDTOriginal"), DataTable)
End Get
Set(value As DataTable)
ViewState("TmpDTOriginal") = value
End Set
End Property
Private Property TmpCXP As DataTable
Get
Return CType(ViewState("TmpCXP"), DataTable)
End Get
Set(value As DataTable)
ViewState("TmpCXP") = value
End Set
End Property
'Private Property PSDTRemplazo As DataTable
' Get
' Return CType(ViewState("PSDTRemplazo"), DataTable)
' End Get
' Set(value As DataTable)
' ViewState("PSDTRemplazo") = value
' End Set
'End Property
Private Property DtCheques As DataTable
Get
Return CType(ViewState("DtCheques"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtCheques") = value
End Set
End Property
Private Property Modalidad As String
Get
Return ViewState("Modalidad").ToString
End Get
Set(value As String)
ViewState("Modalidad") = value
End Set
End Property
Public Property IdVale As List(Of Integer)
Get
IdVale = DirectCast(ViewState("IdVale"), List(Of Integer))
End Get
Set(ByVal value As List(Of Integer))
ViewState("IdVale") = value
End Set
End Property
Public Property ListaDocumentos As List(Of String)
Get
ListaDocumentos = DirectCast(ViewState("ListaDocumentos"), List(Of String))
End Get
Set(ByVal value As List(Of String))
ViewState("ListaDocumentos") = value
End Set
End Property
Private Property DTOCTemp As DataTable
Get
Return CType(ViewState("DTOCTemp"), DataTable)
End Get
Set(value As DataTable)
ViewState("DTOCTemp") = value
End Set
End Property
Private Property DTOCGV As DataTable
Get
Return CType(ViewState("DTOCGV"), DataTable)
End Get
Set(value As DataTable)
ViewState("DTOCGV") = value
End Set
End Property
Private Property DtConsignaciones As DataTable
Get
Return CType(ViewState("DtConsignaciones"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtConsignaciones") = value
End Set
End Property
'Private Property DtCuentas As DataTable
' Get
' Return CType(ViewState("DtCuentas"), DataTable)
' End Get
' Set(value As DataTable)
' ViewState("DtCuentas") = value
' End Set
'End Property
'Private Property CargoFactura As Boolean
' Get
' Return CType(ViewState("CargoFactura"), Boolean)
' End Get
' Set(value As Boolean)
' ViewState("CargoFactura") = value
' End Set
'End Property
Private Property tDTAcarreos As DataTable
Get
Return If(IsNothing(ViewState("tDTAcarreos")), Nothing, CType(ViewState("tDTAcarreos"), DataTable))
End Get
Set(value As DataTable)
ViewState("tDTAcarreos") = value
End Set
End Property
Private Property DtDeudores As DataTable
Get
Return CType(ViewState("DtDeudores"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtDeudores") = value
End Set
End Property
Private Property DtDeudoresDetalle As DataTable
Get
Return CType(ViewState("DtDeudoresDetalle"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtDeudoresDetalle") = value
End Set
End Property
Private Property DtAcreedores As DataTable
Get
Return CType(ViewState("DtAcreedores"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtAcreedores") = value
End Set
End Property
Private Property DTUM As DataTable
Get
Return CType(ViewState("DTUM"), DataTable)
End Get
Set(value As DataTable)
ViewState("DTUM") = value
End Set
End Property
Private Property TmpDTTiposAF As DataTable
Get
Return CType(ViewState("TmpDTTiposAF"), DataTable)
End Get
Set(value As DataTable)
ViewState("TmpDTTiposAF") = value
End Set
End Property
Private Property DtFacturas As DataTable
Get
Return CType(ViewState("DtFacturas"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtFacturas") = value
End Set
End Property
Private Property DtServicios As DataTable
Get
Return CType(ViewState("DtServicios"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtServicios") = value
End Set
End Property
Private ReadOnly Property CveProveedor As Integer
Get
Return ViewState("CveProveedor").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveTipoProveedor As Integer
Get
Return ViewState("CveTipoProveedor").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedor As Integer
Get
Return ViewState("CtaProveedor").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedor As Integer
Get
Return ViewState("CveCuentaProveedor").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorDeudores As Integer
Get
Return ViewState("CtaProveedorDeudores").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorDeudores As Integer
Get
Return ViewState("CveCuentaProveedorDeudores").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorAcreedores As Integer
Get
Return ViewState("CveCuentaProveedorAcreedores").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorAcreedores As Integer
Get
Return ViewState("CtaProveedorAcreedores").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorAnticipos As Integer
Get
Return ViewState("CtaProveedorAnticipos").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorAnticipos As Integer
Get
Return ViewState("CveCuentaProveedorAnticipos").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorAnticiposExtranjera As Integer
Get
Return ViewState("CtaProveedorAnticiposExtranjera").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorAnticiposExtranjera As Integer
Get
Return ViewState("CveCuentaProveedorAnticiposExtranjera").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorAnticiposComplementaria As Integer
Get
Return ViewState("CtaProveedorAnticiposComplementaria").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorAnticiposComplementaria As Integer
Get
Return ViewState("CveCuentaProveedorAnticiposComplementaria").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorRetIVA As Integer
Get
Return ViewState("CtaProveedorRetIVA").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorRetIVA As Integer
Get
Return ViewState("CveCuentaProveedorRetIVA").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorRetISR As Integer
Get
Return ViewState("CtaProveedorRetISR").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorRetISR As Integer
Get
Return ViewState("CveCuentaProveedorRetISR").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaIEPS As Integer
Get
Return ViewState("CveCuentaIEPS").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorExtranjera As Integer
Get
Return ViewState("CtaProveedorExtranjera").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorExtranjera As Integer
Get
Return ViewState("CveCuentaProveedorExtranjera").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CtaProveedorComplementaria As Integer
Get
Return ViewState("CtaProveedorComplementaria").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveCuentaProveedorComplementaria As Integer
Get
Return ViewState("CveCuentaProveedorComplementaria").ToString.ToEntero
End Get
End Property
Private ReadOnly Property NombreProveedor As String
Get
Return ViewState("NombreProveedor").ToString
End Get
End Property
Private Property IdPoliza As Integer
Get
Return ViewState("IdPoliza").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("IdPoliza") = value
End Set
End Property
Private Property CveOrdenCorte As Integer
Get
Return ViewState("CveOrdenCorte").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveOrdenCorte") = value
End Set
End Property
Private Property CvePrePoliza As Integer
Get
Return ViewState("CvePrePoliza").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CvePrePoliza") = value
End Set
End Property
Private ReadOnly Property CveCompra As Integer
Get
Return ViewState("CveCompra").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CveFactura As Integer
Get
Return ViewState("CveFactura").ToString.ToEntero
End Get
End Property
Private Property CveMovimientoAlmacen As Integer
Get
Return ViewState("CveMovimientoAlmacen").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveMovimientoAlmacen") = value
End Set
End Property
Private Property CveConsignacion As Integer
Get
Return ViewState("CveConsignacion").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveConsignacion") = value
End Set
End Property
Private Property PermisoEdicionManual As Boolean
Get
Return CType(ViewState("PermisoEdicionManual"), Boolean)
End Get
Set(value As Boolean)
ViewState("PermisoEdicionManual") = value
End Set
End Property
Private Property NuevaValidacionXML As Integer
Get
Return ViewState("NuevaValidacionXML").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("NuevaValidacionXML") = value
End Set
End Property
Private Property IdCuentaBancaria As Integer
Get
Return ViewState("IdCuentaBancaria").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("IdCuentaBancaria") = value
End Set
End Property
Private Property CveCuentaBancaria As Integer
Get
Return ViewState("CveCuentaBancaria").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveCuentaBancaria") = value
End Set
End Property
Private Property IvaAcumulado As Double
Get
Return ViewState("IvaAcumulado").ToString.ToDouble
End Get
Set(value As Double)
ViewState("IvaAcumulado") = value
End Set
End Property
Private Property EsContado As Boolean
Get
Return CType(ViewState("EsContado"), Boolean)
End Get
Set(value As Boolean)
ViewState("EsContado") = value
End Set
End Property
'Private ReadOnly Property CompraFolio As String
' Get
' Return ViewState("CompraFolio").ToString
' End Get
'End Property
'Private ReadOnly Property FolioFiscal As String
' Get
' Return ViewState("FolioFiscal").ToString
' End Get
'End Property
'Private ReadOnly Property IdCtaContProveedores As Integer
' Get
' Return ViewState("IdCtaContProveedores").ToString.ToEntero
' End Get
'End Property
'Private ReadOnly Property IdCtaContAnticipos As Integer
' Get
' Return ViewState("IdCtaContAnticipos").ToString.ToEntero
' End Get
'End Property
'Private ReadOnly Property IdCtaContRetIVA As Integer
' Get
' Return ViewState("IdCtaContRetIVA").ToString.ToEntero
' End Get
'End Property
'Private ReadOnly Property IdCtaContRetISR As Integer
' Get
' Return ViewState("IdCtaContRetISR").ToString.ToEntero
' End Get
'End Property
'Private ReadOnly Property IVAPS As Double
' Get
' Return ViewState("IVAPS").ToString.ToDouble
' End Get
'End Property
'Private ReadOnly Property RetIVA As Double
' Get
' Return ViewState("RetIVA").ToString.ToDouble
' End Get
'End Property
'Private ReadOnly Property RetISR As Double
' Get
' Return ViewState("RetISR").ToString.ToDouble
' End Get
'End Property
'Private ReadOnly Property IEPSPS As Double
' Get
' Return ViewState("IEPSPS").ToString.ToDouble
' End Get
'End Property
'Private ReadOnly Property IEPSPSIVA As Double
' Get
' Return ViewState("IEPSPSIVA").ToString.ToDouble
' End Get
'End Property
Private Property TotalGeneral As Double
Get
Return ViewState("TotalGeneral").ToString.ToDouble
End Get
Set(value As Double)
ViewState("TotalGeneral") = value
End Set
End Property
Private Property CompraSaldo As Double
Get
Return ViewState("CompraSaldo").ToString.ToDouble
End Get
Set(value As Double)
ViewState("CompraSaldo") = value
End Set
End Property
Private Property Saldo As Double
Get
Return ViewState("Saldo").ToString.ToDouble
End Get
Set(value As Double)
ViewState("Saldo") = value
End Set
End Property
Private Property CveMoneda As Integer
Get
Return ViewState("CveMoneda").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveMoneda") = value
End Set
End Property
Private Property CveAlmacenConsignacion As Integer
Get
Return ViewState("CveAlmacenConsignacion").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveAlmacenConsignacion") = value
End Set
End Property
Private Property DtFuncionarios As DataTable
Get
Return CType(ViewState("DtFuncionarios"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtFuncionarios") = value
End Set
End Property
Private Property DtDatosDetalle As DataTable
Get
Return CType(ViewState("DtDatosDetalle"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtDatosDetalle") = value
End Set
End Property
Private Property CvePSSerieLote As Integer
Get
Return CType(ViewState("CvePSSerieLote"), Integer)
End Get
Set(value As Integer)
ViewState("CvePSSerieLote") = value
End Set
End Property
Private Property CveUMSerieLote As Integer
Get
Return CType(ViewState("CveUMSerieLote"), Integer)
End Get
Set(value As Integer)
ViewState("CveUMSerieLote") = value
End Set
End Property
Private Property PUSerieLote As Decimal
Get
Return CType(ViewState("PUSerieLote"), Decimal)
End Get
Set(value As Decimal)
ViewState("PUSerieLote") = value
End Set
End Property
Private Property TotAcarreos As Double
Get
Return CType(ViewState("TotAcarreos"), Double)
End Get
Set(value As Double)
ViewState("TotAcarreos") = value
End Set
End Property
'Private ReadOnly Property Ruta As String
' Get
' Return AppDomain.CurrentDomain.BaseDirectory & "Empresas\" & UsuarioActual.CveEmpresa & "\"
' End Get
'End Property
<Serializable>
Public Class Anticipos
Public Property TipoMovto As String
Public Property CveIE As Integer
Public Property Importe As Decimal
Public Property TCCompra As Decimal
Public Property CvePersonal As Integer
Public Property CveCompra As Integer
Public Property CvePrePoliza As Integer
End Class
Private Property ArrAnticipos As ArrayList
Get
Return CType(ViewState("ArrAnticipos"), ArrayList)
End Get
Set(value As ArrayList)
ViewState("ArrAnticipos") = value
End Set
End Property
Private Property ArrIE As ArrayList
Get
Return CType(ViewState("ArrIE"), ArrayList)
End Get
Set(value As ArrayList)
ViewState("ArrIE") = value
End Set
End Property
Private Property ArrIEFuncionariosEmpleados As ArrayList
Get
Return CType(ViewState("ArrIEFuncionariosEmpleados"), ArrayList)
End Get
Set(value As ArrayList)
ViewState("ArrIEFuncionariosEmpleados") = value
End Set
End Property
'Inventarios
Private Property DtInv As DataTable
Get
Return CType(ViewState("DtInv"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtInv") = value
End Set
End Property
Private Property DtAC As DataTable
Get
DtAC = DirectCast(ViewState("DtAC"), DataTable)
End Get
Set(ByVal value As DataTable)
ViewState("DtAC") = value
End Set
End Property
'Caja Chica, Funcionario/Empleado
Private ReadOnly Property CveCajaChica As Integer
Get
Return ViewState("CveCajaChica").ToString.ToEntero
End Get
End Property
Private ReadOnly Property CvePersonal As Integer
Get
Return ViewState("CvePersonal").ToString.ToEntero
End Get
End Property
Private Property OCsVinculadas As String
Get
Return ViewState("OCsVinculadas").ToString
End Get
Set(value As String)
ViewState("OCsVinculadas") = value
End Set
End Property
Private Property DdlOC As DropDownList
Get
Return CType(ViewState("OCsVinculadas"), DropDownList)
End Get
Set(value As DropDownList)
ViewState("OCsVinculadas") = value
End Set
End Property
Private Property TieneOC As Boolean
Get
Return CType(ViewState("TieneOC"), Boolean)
End Get
Set(value As Boolean)
ViewState("TieneOC") = value
End Set
End Property
Private Property OCVinculada As Boolean
Get
Return CType(ViewState("OCVinculada"), Boolean)
End Get
Set(value As Boolean)
ViewState("OCVinculada") = value
End Set
End Property
Private Property CierrePeriodo As Boolean
Get
Return CType(ViewState("CierrePeriodo"), Boolean)
End Get
Set(value As Boolean)
ViewState("CierrePeriodo") = value
End Set
End Property
Private Property NCDevolucion As Boolean
Get
Return CType(ViewState("NCDevolucion"), Boolean)
End Get
Set(value As Boolean)
ViewState("NCDevolucion") = value
End Set
End Property
Private Property CompraCargada As Boolean
Get
Return CType(ViewState("CompraCargada"), Boolean)
End Get
Set(value As Boolean)
ViewState("CompraCargada") = value
End Set
End Property
Private Property ModalidadUMAlias As Integer
Get
Return ViewState("EjercicioAC").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("EjercicioAC") = value
End Set
End Property
Private Property CveConceptoContableAlmacen As Integer
Get
Return ViewState("CveConceptoContableAlmacen").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveConceptoContableAlmacen") = value
End Set
End Property
Private Property EsNoDeducible As Boolean
Get
Return CType(ViewState("EsNoDeducible"), Boolean)
End Get
Set(value As Boolean)
ViewState("EsNoDeducible") = value
End Set
End Property
#End Region
#Region "PROPIEDADES - AC NEW"
Private Property DtPresupuestos As DataTable
Get
Return CType(ViewState("DtPresupuestos"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtPresupuestos") = value
End Set
End Property
Private Property EjercicioAC As Integer
Get
Return ViewState("EjercicioAC").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("EjercicioAC") = value
End Set
End Property
#End Region
#Region " PROPIEDADES REFACTURACION "
Private Property DtRefacturacion As DataTable
Get
Return CType(ViewState("DtRefacturacion"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtRefacturacion") = value
End Set
End Property
Private Property CveCompraRefacturacion As Integer
Get
Return ViewState("CveCompraRefacturacion").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveCompraRefacturacion") = value
End Set
End Property
Private Property EmpresaPrueba As Boolean
Get
Return CBool(ViewState("EmpresaPrueba"))
End Get
Set(value As Boolean)
ViewState("EmpresaPrueba") = value
End Set
End Property
Private Property StringProrrateo As String
Get
Return ViewState("StringProrrateo").ToString
End Get
Set(value As String)
ViewState("StringProrrateo") = value
End Set
End Property
Private Property ClavesBorradas As ArrayList
Get
Return CType(ViewState("ClavesBorradas"), ArrayList)
End Get
Set(value As ArrayList)
ViewState("ClavesBorradas") = value
End Set
End Property
#End Region
#Region " PROPIEDADES OC "
Private Property TipoCambioOC As Decimal
Get
Return ViewState("TipoCambioOC").ToString.ToDecimal
End Get
Set(value As Decimal)
ViewState("TipoCambioOC") = value
End Set
End Property
Private Property PopUpOC As Boolean
Get
Return CBool(ViewState("PopUpOC"))
End Get
Set(value As Boolean)
ViewState("PopUpOC") = value
End Set
End Property
#End Region
#Region "PROPIEDADES ALMACEN" 'Charlie
Private Property TotalAlmacen As Decimal
Get
Return ViewState("TotalAlmacen").ToString.ToDecimal
End Get
Set(value As Decimal)
ViewState("TotalAlmacen") = value
End Set
End Property
Private Property TotalFlete As Decimal
Get
Return ViewState("TotalFlete").ToString.ToDecimal
End Get
Set(value As Decimal)
ViewState("TotalFlete") = value
End Set
End Property
#End Region
#Region "Propiedades"
'CFDi
Private Property Serie As String
Private Property Folio As String
Private Property Fecha As String
Private Property SubTotal As Decimal
Private Property Total As Decimal = 0
Private Property Descuentos As Decimal = 0
Private Property EmisorRFC As String
Private Property ReceptorRFC As String
Private Property TrasladoIVA As Decimal = 0
Private Property RetencionIVA As Decimal = 0
Private Property RetencionISR As Decimal = 0
Private Property TrasladoIEPS As Decimal = 0
Private Property TFDUUID As String = ""
Private Property Moneda As String = ""
Private Property TipoComprobante As String = ""
Private Property MetodoPago As String = ""
Private Property CveMetodoPago As Integer
Get
Return ViewState("CveMetodoPago").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveMetodoPago") = value
End Set
End Property
Private Property TipoCambio As Double
Get
Return ViewState("TipoCambio").ToString.ToDouble
End Get
Set(value As Double)
ViewState("TipoCambio") = value
End Set
End Property
'Private Property TipoCambio As Double = 0
Private Property OtrosImpuestos As Decimal = 0
Private Property OtrosImpuestosRetenciones As Decimal = 0
Private Property TotalRetenciones As Decimal = 0
Private Property SumaTotalRetenciones As Decimal = 0
Private Property TotalTraslados As Decimal = 0
Private Property SumaTotalTraslados As Decimal = 0
Private Property SubTotalConceptos As Decimal = 0
Private Property Redondeo As Decimal = 0
Private Property IEPSGasto As Boolean = False
Private Property OtrosImpuestosGasto As Boolean = False
Private Property Version As String
Get
Return ViewState("Version").ToString
End Get
Set(value As String)
ViewState("Version") = value
End Set
End Property
Private Property Index As Integer
Get
Return ViewState("Index").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("Index") = value
End Set
End Property
Private Property Con As Integer
Get
Return ViewState("Con").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("Con") = value
End Set
End Property
Private Property IvaTotalGv As Double
Get
Return DirectCast(ViewState("IvaTotalGv"), Double)
End Get
Set(value As Double)
ViewState("IvaTotalGv") = value
End Set
End Property
Private Property SerieVieja As String
Get
Return DirectCast(ViewState("SerieVieja"), String)
End Get
Set(value As String)
ViewState("SerieVieja") = value
End Set
End Property
Private Property EstatusAlmacen As Integer
Get
Return ViewState("EstatusAlmacen").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("EstatusAlmacen") = value
End Set
End Property
Private Property DtTemporalGuardados As DataTable
Get
Return CType(ViewState("DtTemporalGuardados"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtTemporalGuardados") = value
End Set
End Property
Private Property RFCProv As String
Get
Return IfNull(ViewState("RFCProv"), "").ToString
End Get
Set(value As String)
ViewState("RFCProv") = value
End Set
End Property
Private Property CveImportacion As Integer
Get
Return IfNull(ViewState("CveImportacion"), -1).ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveImportacion") = value
End Set
End Property
Private Property CveFlete As Integer
Get
Return IfNull(ViewState("CveFlete"), -1).ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveFlete") = value
End Set
End Property
Private Property FleteImportacionOpcion As Integer
Get
Return IfNull(ViewState("FleteImportacionOpcion"), -1).ToString.ToEntero
End Get
Set(value As Integer)
ViewState("FleteImportacionOpcion") = value
End Set
End Property
#End Region
#Region " PROPIEDADES DE TOTALES "
Private Property SubTotalOriginal As Double
Get
Return ViewState("SubTotalOriginal").ToString.ToDouble
End Get
Set(value As Double)
ViewState("SubTotalOriginal") = value
End Set
End Property
Private Property SubTotal2Original As Double
Get
Return ViewState("SubTotal2Original").ToString.ToDouble
End Get
Set(value As Double)
ViewState("SubTotal2Original") = value
End Set
End Property
Private Property IVAOriginal As Double
Get
Return ViewState("IVAOriginal").ToString.ToDouble
End Get
Set(value As Double)
ViewState("IVAOriginal") = value
End Set
End Property
Private Property RetIVAOriginal As Double
Get
Return ViewState("RetIVAOriginal").ToString.ToDouble
End Get
Set(value As Double)
ViewState("RetIVAOriginal") = value
End Set
End Property
Private Property RetISROriginal As Double
Get
Return ViewState("RetISROriginal").ToString.ToDouble
End Get
Set(value As Double)
ViewState("RetISROriginal") = value
End Set
End Property
Private Property TotalOriginal As Double
Get
Return ViewState("TotalOriginal").ToString.ToDouble
End Get
Set(value As Double)
ViewState("TotalOriginal") = value
End Set
End Property
Private Property ActualizaTotales As Boolean
Get
Return CBool(ViewState("ActualizaTotales"))
End Get
Set(value As Boolean)
ViewState("ActualizaTotales") = value
End Set
End Property
#End Region
Dim DTConceptos As DataTable
Private Property EmpresasOC As List(Of Integer)
Get
EmpresasOC = DirectCast(ViewState("EmpresasOC"), List(Of Integer))
End Get
Set(ByVal value As List(Of Integer))
ViewState("EmpresasOC") = value
End Set
End Property
Private Property DtPendientesAlmacen As DataTable
Get
DtPendientesAlmacen = DirectCast(ViewState("DtPendientesAlmacen"), DataTable)
End Get
Set(ByVal value As DataTable)
ViewState("DtPendientesAlmacen") = value
End Set
End Property
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
'ImgBtnBuscarOC.Attributes.Add("data-toggle", "tooltip")
'ImgBtnBuscarOC.Attributes.Add("data-placement", "top")
CargaDatosAgregarPS()
Modalidad = ""
Version = ""
CveMetodoPago = -1
RFCProv = ""
CargaDdlTipoGasto()
CreaTmpAcarreos()
EsContado = False
CierrePeriodo = False
NCDevolucion = False
CompraCargada = False
Saldo = 0
SubTotalOriginal = 0
CveConceptoContableAlmacen = 0
EsNoDeducible = False
'******** Prorrateo ********************************************
If UsuarioActual.Empresa.Funcionalidad(117) <> "" Then
btnProrateo.Visible = True
End If
If UsuarioActual.Empresa.Funcionalidad(303) <> "" Then
btnProrateo2.Visible = True
End If
'****************************************************************
'If UsuarioActual.CveEmpresa = 72 Then
' LiRecepcion.Visible = True
' DdlRecepcion.SelectedValue = "2"
'End If
TipoCambio = 1
IvaAcumulado = 0
TotalAlmacen = 0
TotalFlete = 0
CveOrdenCorte = -1
'VALIDACION DE XML
NuevaValidacionXML = IfNull(Request("NuevaValidacionXML"), 0).ToString.ToEntero
IdVale = New List(Of Integer)
ListaDocumentos = New List(Of String)
'If UsuarioActual.Empresa.Funcionalidad(207) = "1" Then 'Esquema nuevo PrePolizas
If Not UsuarioActual.Empresa.UsaAC Then
EmpresaPrueba = True
TotalGeneral = 0
CompraSaldo = 0
ViewState("CvePersonal") = -1
IdCuentaBancaria = 0
CveCuentaBancaria = 0
End If
If UsuarioActual.TienePermisoProceso(259) Then
DivEsNoDeducible.Visible = True
End If
If UsuarioActual.Empresa.Funcionalidad(125) = "1" Then 'Seleccionar a quien se abona la Prepoliza
'ddlCargoPrePoliza.Visible = True
'lblProveedor.Visible = False
End If
If isAlmacenistaGluyas() Then
GvInv.Columns(10).Visible = True
'Dim productos As New ClsProductosServicios
'If productos.GetPS(-1, -1, UsuarioActual.CveEmpresa) Then
' PSDTRemplazo = productos.DtResultados.FiltraParametros("PendienteEnOC=1", "PS")
'End If
'productos.Dispose()
End If
PermisoEdicionManual = False
CveMovimientoAlmacen = 0
SetValues()
ArrAnticipos = New ArrayList()
ArrIE = New ArrayList()
ArrIEFuncionariosEmpleados = New ArrayList()
ClavesBorradas = New ArrayList()
TxtFecha.Text = Now.ToShortDateString
TxtFechaEjecucion.Text = Now.ToShortDateString
ViewState("CveCompra") = "0"
ViewState("CveFactura") = "0"
ViewState("IdPoliza") = "0"
ViewState("CveCompra") = -1
ViewState("EjercicioAC") = -1
ViewState("CveTipoProveedor") = -1
CveCompraRefacturacion = -1
ModalidadUMAlias = -1
CvePrePoliza = -1
TabActivosFijos.Enabled = UsuarioActual.Empresa.UsaAF
TieneOC = False
CveMoneda = -1
'[IPP] Eliminar 22Junio2018
'If UsuarioActual.Empresa.UsaInventarios Then
' TabAlmacen.Enabled = Not UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0
'End If
ImgAnticiposPendientes.Attributes.Add("OnClick", "MuestraAnticipos();")
'ImgCerrar.Attributes.Add("OnClick", "$('#DivAnticipos').hide(200);")
'BtnCancelar.Attributes.Add("OnClick", "$('#DivAddEq').hide();")
' ImageButton1.Attributes.Add("OnClick", "$('#DivAlmacen').hide();")
ImgClose.Attributes.Add("OnClick", "$('#DivAlmacen').hide();")
ImgAdd.Attributes.Add("OnClick", "$('#DivAlmacen').hide();")
'LbTotalPorDevengar.Attributes.Add("OnInnerTextChanged", "TotalDevendar();")
'Mensaje temporalca
RBLPago.Visible = True
If UsuarioActual.Empresa.UsaAC Then RBLPago.Items.RemoveAt(2) 'Elimina Reembolso cuando es AC
If UsuarioActual.Empresa.UsaAC Then
TrReembolso.Visible = True
GvPS.Columns(1).Visible = True
TxtFecha.Attributes.Add("onblur", "CambiaFecha();")
End If
TxtOC.Attributes.Add("onkeypress", "fncBuscaOC(event);")
'If UsuarioActual.Empresa.GralSoloProyecto Then
' LitHProyecto.Text = "Sucursal"
' DdlSubProyecto.Items.Clear()
' DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
' DdlSubProyecto.DataBind()
' DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
' DdlAsignaSubProyecto.Items.Clear()
' DdlAsignaSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
' DdlAsignaSubProyecto.DataBind()
' DdlAsignaSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
' divproyecto.Visible = False
' divasignaproyecto.Visible = False
' DdlProyecto.Visible = False
' DdlProyecto.Items(0).Text = ""
'End If
If UsuarioActual.CveEmpresa = 66 And UsuarioActual.TienePermisoProceso(96) Then
ChkProgramarPago.Visible = True
End If
'CARGA PERSONAL
Dim ObjPersonal As New ClsRH
ObjPersonal.GetPersonal(-1, UsuarioActual.CveEmpresa)
DdlPersonal.DataSource = ObjPersonal.DtResultados
DdlPersonalReembolso.DataSource = ObjPersonal.DtResultados
ObjPersonal.Dispose()
DdlPersonal.DataBind()
DdlPersonalReembolso.DataBind()
ObjPersonal.Dispose()
'Carga Proveedor
If Request("CveProveedor") IsNot Nothing AndAlso IsNumeric(Request("CveProveedor")) AndAlso Request("CveProveedor").ToEntero > 0 Then
ViewState("CveProveedor") = Request("CveProveedor")
HdnCveProveedor.Value = Request("CveProveedor")
CargaProveedor(CveProveedor, "-1")
GvInv.Visible = True
ElseIf Request("CveFactura") IsNot Nothing AndAlso IsNumeric(Request("CveFactura")) AndAlso Request("CveFactura").ToEntero > 0 Then
ViewState("CveFactura") = Request("CveFactura").ToEntero
Dim RFC As String = CargaFactura(CveFactura)
DdlProveedor.Visible = False
HplProveedor.Visible = True
GvInv.Visible = True
CargaProveedor(-1, RFC)
If Not DdlTipoComprobante.SelectedValue = "NC" Then
If UsuarioActual.Empresa.Funcionalidad(128) = "1" And Not UsuarioActual.TienePermisoProceso(213) Then
If TmpDT.MAX("CvePS").ToEntero > 0 Then
BtnGuardar.Enabled = False
RegistraScript("$('#ImgBtnBuscarOC').click()")
End If
End If
End If
If DdlTipoComprobante.SelectedValue = "NC" Then
paneldevolucion.Visible = True
Pnlalmaceninventarios.Visible = False
cargaddldevoluciones(CveProveedor, TxtSubTotal.Text.ToDouble)
InicializaAplicaNCFact()
DivReembolso.Visible = False
RBLPago.Items(2).Enabled = False
End If
If UsuarioActual.Empresa.UsaAC Then
CambiaEjercicioAC()
End If
' ''Fecha limite para ingreso de facturas
''Dim DtEmpresa As DataTable = GlobalDTEmpresas(UsuarioActual.CveEmpresa)
''If DtEmpresa.Rows.Count > 0 Then
'' Dim FechaLimite = DateSerial(DtEmpresa.Rows(0)("EjercicioActual").ToString.ToEntero, DtEmpresa.Rows(0)("PeriodoActual").ToString.ToEntero, DtEmpresa.Rows(0)("DiasPermitidos").ToString.ToEntero)
'' If Month(TxtFecha.Text.ToDate) < (Month(FechaLimite) - 1) Or (Month(TxtFecha.Text.ToDate) = (Month(FechaLimite) - 1) And Day(Date.Now) > Day(FechaLimite)) Then
'' Alert("La factura actual ya no aplica para ingresarse al sístema.", TipoMensaje.MsgAdvertencia)
'' BtnGuardar.Enabled = False
'' Else
'' Alert("En tiempo")
'' End If
''Else
'' Alert("No se pudieron cargar los datos de la empresa", TipoMensaje.MsgAdvertencia)
''End If
'Carga Compra
If UsuarioActual.Empresa.Funcionalidad(123).ToEntero > 0 And Not UsuarioActual.TienePermisoProceso(156) Then
If Not ValidaCierrePeriodo() Then
Alert("El periodo de la compra actual ya se encuentra cerrado. No podra registrar la compra.", TipoMensaje.MsgAdvertencia)
BtnGuardar.Visible = False
TxtOC.Enabled = False
ImgBtnBuscarOC.Enabled = False
CierrePeriodo = True
DivRestriccionAdvertencia.Visible = True
LtRestriccionAdvertencia.Text = "El periodo de la compra actual ya se encuentra cerrado."
End If
End If
Dim HayDifIEPS As Boolean = False
For Each Gvr As GridViewRow In GvPS.Rows
If Gvr.DataKey("CvePS").ToEntero > 0 AndAlso Gvr.DataKey("IEPSPSPorcentaje").ToDouble > 0 Then
If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=Gvr.DataKey("CvePS").ToEntero).Rows.Count > 0 Then
Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=Gvr.DataKey("CvePS").ToEntero).Rows(0)
If DrPS IsNot Nothing Then
If DrPS("IEPSPorcentaje").ToString.ToDouble <> Gvr.DataKey("IEPSPSPorcentaje").ToDouble Then
HayDifIEPS = True
End If
End If
End If
End If
Next
If HayDifIEPS Then Alert("El porcentaje de IEPS del producto no coincide con el especificado.", TipoMensaje.MsgAdvertencia)
If UsuarioActual.Empresa.Funcionalidad(562).ToEntero > 0 Then CargaGastosServicios(UsuarioActual.Empresa.Funcionalidad(562).ToEntero)
ElseIf Request("CveCompra") IsNot Nothing AndAlso IsNumeric(Request("CveCompra")) AndAlso Request("CveCompra").ToEntero > 0 Then
ViewState("CveCompra") = Request("CveCompra")
CargaCompra()
BtnGuardar.Enabled = False
'TdIVA.Visible = True
'DdlIVA.Enabled = False
CargaGvBitacora()
InventarioMov()
HabilitaNCInv()
DivConsignaciones.Visible = False
' 2018/05/25 - Muestra Boton Agregar Guia
LnkAgregarGuia.Visible = True
UpLnkPaqueteriaGuias.Update()
DivEsNoDeducible.Visible = True
DivActualizarVincular.Visible = True
Else
ViewState("CveProveedor") = -1
HdnCveProveedor.Value = "-1"
DdlProveedor.Items.Insert(0, New ListItem("Seleccione el Proveedor", "-1"))
GvInv.Visible = True
'TdIVA.Visible = True
'cuando es nuevo
TxtSubTotal2.Attributes.Add("onkeyup", "ActIVA();")
TxtIVA.Attributes.Add("onkeyup", "ActTotal();")
If UsuarioActual.Empresa.UsaAC Then ChkACGeneral.Checked = False ' codigo que se usa para que al agregar una compra manual, al cambiar el filtro del presupuestos afecte a lo capturado
If UsuarioActual.Empresa.UsaAC Then
CambiaEjercicioAC()
End If
UpConsignaciones.Update()
UpINV.Update()
'DdlIVA.Visible = True ' cuando es compra manual
If UsuarioActual.CveEmpresa = 126 Then
CargaOrdenCorte()
LnkAddOtrosGastos.Visible = True
UpnTools.Update()
End If
LnkAgregarGuia.Visible = False
UpLnkPaqueteriaGuias.Update()
End If
'SI ES UNA COMPRA NUEVA SE PONE EL TOTAL, SI NO EL SALDO
LblSaldoFactura.Text = If(CveCompra > 0, Saldo.FormatoNumero, TxtTotal.Text.FormatoNumero)
If UsuarioActual.CveEmpresa = 126 And CveCompra > 0 Then
LnkExportaGv.Visible = True
End If
'Condiciones de la Compra
Dim dt As DataTable = GlobalDTBancosCuentas(UsuarioActual.CveUsuario)
dt = dt.FiltraParametros(String.Format("CveTipoCuenta = 1"))
DdlCajaChica.DataSource = dt
DdlCajaChica.DataBind()
DdlCuentaCajaChicaReembolso.DataSource = dt
DdlCuentaCajaChicaReembolso.DataBind()
ViewState("CveCajaChica") = -1
ViewState("CvePersonal") = -1
CargaTipoTransaccion()
CargaCuentas()
'If CveFactura > 0 AndAlso UsuarioActual.Empresa.UsaAC Then
' CompruebaAgregar()
'End If
'VALIDA REQUIERE CENTRO COSTOS
If UsuarioActual.Empresa.RequiereCentroCostos Then
'RFVSubProyecto.Enabled = True
End If
'VALIDA Usuario TIPO REMESA
If UsuarioActual.TienePermisoProceso(108) Then
RBLPago.Enabled = False
'VALIDA FECHAPAGO PARA USUARIO TIPO REMESA
If UsuarioActual.TienePermisoProceso(109) Then
TxtFechaPago.Enabled = False
End If
End If
'Valida Proceso 115 para ALMACENISTA
If UsuarioActual.TienePermisoProceso(115) Then
TxtFechaPago.Enabled = False
ChkAplicaNotaCredito.Enabled = False
RBLPago.Enabled = False
BtnGuardar.Enabled = False
End If
'Valida Proceso 119 para ROL Administrador de obra - Bloquea Contado
If UsuarioActual.TienePermisoProceso(119) Then
RBLPago.Items(1).Enabled = False
End If
'VALIDA REFACTURACION
ValidaRefacturacion()
If UsuarioActual.TienePermisoProceso(118) Then
RBLPago.Enabled = True
RBLPago.Items(1).Enabled = False
End If
'Cargamos los Fletes
ValidaFletesServicios()
If CveCompra > 0 Then
CargaFletesAgregados()
End If
InicializaOC()
'Valida si el IVA del XML es está bien calculado
ValidaIVA()
If UsuarioActual.TienePermisoProceso(196) Then
BtnRegenerarPrePolizaAlmacen.Visible = True
UpFacturar.Update()
End If
If CompraCargada AndAlso Request("ADRegenerarPPD") IsNot Nothing AndAlso IsNumeric(Request("ADRegenerarPPD")) AndAlso Request("ADRegenerarPPD").ToEntero = 15062017 Then
RegeneraPrePoliza()
End If
CargaFletes()
If UsuarioActual.Empresa.CvePlataforma = 2 Then
TabActivosFijos.Visible = False
VerRefacturacion.Visible = False
liServicios.Visible = False
DivConsignaciones.Visible = False
End If
If UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then
LitHProyecto.Text = "Proyecto"
LthProyectoP.Text = "Proyecto"
LblSubProyectoHeader.Text = ""
LblSubProyectoPHeader.Text = ""
LblSubProyecto.InnerText = "Proyecto"
'LblSubProyectoDivAplica.InnerText = "Proyecto"
DdlSubProyecto.Items.Clear()
'DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1)
DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
DdlSubProyecto.DataBind()
DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
'DdlAsignaSubProyecto.Items.Clear()
'DdlAsignaSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
'DdlAsignaSubProyecto.DataBind()
'DdlAsignaSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
divproyecto.Visible = False
'divasignaproyecto.Visible = False
DdlProyecto.Visible = False
DdlProyecto.Items(0).Text = ""
ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 1 Then
LitHProyecto.Text = "Sucursal"
LthProyectoP.Text = "Sucursal"
LblSubProyectoHeader.Text = ""
LblSubProyectoPHeader.Text = ""
LblSubProyecto.InnerText = "Sucursal"
'LblSubProyectoDivAplica.InnerText = "Sucursal"
DdlSubProyecto.Items.Clear()
'DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1)
DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
DdlSubProyecto.DataBind()
DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
'DdlAsignaSubProyecto.Items.Clear()
'DdlAsignaSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
'DdlAsignaSubProyecto.DataBind()
'DdlAsignaSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
divproyecto.Visible = False
'divasignaproyecto.Visible = False
DdlProyecto.Visible = False
DdlProyecto.Items(0).Text = ""
ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 4 Then
LitHProyecto.Text = "Sucursal"
LthProyectoP.Text = "Sucursal"
LblSubProyectoHeader.Text = "Proyecto"
LblSubProyectoPHeader.Text = "Proyecto"
'LblSubProyectoDivAplica.InnerText = "Sucursal"
'LblProyectoDivAplica.InnerText = "Proyecto"
LblSubProyecto.InnerText = "Sucursal"
LblProyecto.InnerText = "Proyecto"
ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 5 Then
LitHProyecto.Text = "Proyecto"
LthProyectoP.Text = "Proyecto"
LblSubProyectoHeader.Text = "Sucursal"
LblSubProyectoPHeader.Text = "Sucursal"
'LblSubProyectoDivAplica.InnerText = "Proyecto"
'LblProyectoDivAplica.InnerText = "Sucursal"
LblSubProyecto.InnerText = "Proyecto"
LblProyecto.InnerText = "Sucursal"
End If
CargaGvPersonal()
CargaDdlPersonal()
InicializaDevolucionAlmacen()
HabilitaEdicionManualAgregar()
InicializaActualizarTC()
End If
'SE OCUPAN AFUERA DEL POSTBACK ??
cargaddlVinculacionServcios()
If UsuarioActual.TienePermisoProceso(117) Then
HplAddClasificacion.Visible = False
ImgClasificacion.Visible = False
End If
'If CargoFactura Then
' 'If UsuarioActual.Empresa.Funcionalidad(128) = "1" Then
' ' If TmpDT.MAX("CvePS").ToEntero > 0 Then
' ' BtnGuardar.Enabled = False
' ' RegistraScript($"AbrirVentana('/OC/PopUpBuscarReq.aspx?V=VOCCOMP&P={CveProveedor}&Masterimpoup=true',1000,600,'S'); return false;")
' ' End If
' 'End If
'End If
'RegistraScript("ScrollVentanaAddProducto();")
End Sub
#Region "C A R G A S"
Private Sub CargaOrdenCorte()
Dim ObjCGame As New ClsCGame()
If ObjCGame.GetOrdenCorte(UsuarioActual.CveEmpresa) Then
DdlOrdenCorte.DataSource = ObjCGame.DtResultados.FiltraParametros("Disponible = 1")
DdlOrdenCorte.Items.Insert(0, New ListItem("No vincular", "-1"))
End If
ObjCGame.Dispose()
DdlOrdenCorte.DataBind()
UpOtrosGastos.Update()
End Sub
Private Sub CargaDdlTipoGasto()
DdlTipoGasto.DataSource = GlobalDTTiposGastos(UsuarioActual.CveEmpresa)
DdlTipoGasto.DataBind()
DdlTipoGastoAsignar.DataSource = GlobalDTTiposGastos(UsuarioActual.CveEmpresa)
DdlTipoGastoAsignar.DataBind()
UpParametros.Update()
End Sub
Private Sub CargaGvAcarreos(tCveProveedor As Integer)
Dim ObjAcar As New ClsAcarreos
If ObjAcar.GetPreEstimacion(tCveProveedor, UsuarioActual.CveEmpresa, -1) Then
GvAcarreo.DataSource = ObjAcar.DtResultados
If ObjAcar.DtResultados.Rows.Count > 0 Then
LnkAcarreo.Visible = True
End If
End If
ObjAcar.Dispose()
UpAddAcarreo.Update()
GvAcarreo.DataBind()
End Sub
Private Sub ValidaIVA()
If Version <> "3.3" And CveCompra <= 0 Then
Dim ImporteIVAXML As Double = (TxtSubTotal.Text.Trim.ToDouble - TxtDescuento.Text.Trim.ToDouble - TxtIEPS.Text.Trim.ToDouble) * 0.16
If Math.Abs(TxtIVA.Text.Trim.ToDouble - ImporteIVAXML) >= 1 Then
Alert("El <b>IVA</b> del <b>CFDi</b> no tiene un comportamiento normal, por favor verifique que sea correcto. <br /><br /> <b>NOTA:</b> Esta advertencia no aplica en casos de conceptos(alimentos, combustibles o servicios de comunicación) exentos de IVA o causantes de IEPS.", TipoMensaje.MsgAdvertencia)
End If
End If
End Sub
Private Function isAlmacenistaGluyas() As Boolean
'Return (UsuarioActual.CveRol = 1052 And UsuarioActual.CveEmpresa = 66)
Return False
End Function
Private Function CargaFactura(CveFactura As Integer) As String
Dim ObjeFacturas As New ClsCompras
Dim RFC As String = ""
If ObjeFacturas.GetFacturas(CveFactura, "-1", Now.AddYears(-3), Now, "-1", "-1", -1, -1, -1, -1, "-1", UsuarioActual.CveEmpresa) AndAlso ObjeFacturas.DtResultados.Rows.Count > 0 Then
Dim dr As DataRow = ObjeFacturas.DtResultados.Rows(0) ' no toma la cero, porque es el totalizador
Dim XMLDoc As New XmlDocument
Dim Archivo As String = String.Format("{0}Empresas\{1}\Compras\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, dr("RFCDe"), dr("XML"))
If IO.File.Exists(Archivo) Then
Dim Validada As Boolean = True
If Not UsuarioActual.Empresa.Funcionalidad(529) = "1" Then
'verificacion doble, si no la han cancelado, ya tiene una validaci[on para que llegue aqui
Dim Valida As New ClsValidaCFDi(dr("UUID").ToString(), dr("RFCDe").ToString, dr("RFCPara").ToString(), dr("Total").ToString.ToDecimal)
If UsuarioActual.CveEmpresa < 2 Then
Valida.EsValida = 1
End If
If Valida.EsValida > 0 Then
If Valida.EsValida = 2 Then
Validada = False
If ObjeFacturas.UpdateEstatus(Valida.EsValida, CveFactura) Then
End If
Alert("La factura está cancelada ante el SAT.", TipoMensaje.MsgError)
Else ' cuando es valor =1, es vigente
Validada = True
'solicitud de activacion de facturas
'If UsuarioActual.CveEmpresa = 66 Then Alert("Se deshabilitado la validación ante el SAT.<br/> Pero el Sistema validación del SAT esta funcionando. ")
End If
Else
'no se pudo validar, pero ya tuvo la primera vuelta de validacion
Validada = True
End If
'Valida.Dispose()
End If
UpPSS.Update()
If Validada Then
Try
XMLDoc.Load(Archivo)
Catch ex As Exception
Dim oReader = New StreamReader(Archivo, Encoding.GetEncoding("ISO-8859-1"))
XMLDoc.Load(oReader)
oReader.Dispose()
End Try
CreaDTConceptos()
CargaComprobanteXML(XMLDoc)
If NuevaValidacionXML = 1 Or Version = "3.3" Then
Dim Xml As New StringBuilder
Dim nodo As XmlNode = XMLDoc.DocumentElement
Dim Version = ValorXML(nodo, "version")
Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2"
namespaces.AddNamespace(Prefijo, cfdVer)
namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
Dim nodeconceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces)
Xml.Append(Replace(Replace(Replace(nodeconceptos.OuterXml, "<cfdi:", "<"), "</cfdi:", "</"), "xmlns:cfdi=""http://www.sat.gob.mx/cfd/3""", ""))
If ObjeFacturas.GetFacturasComparacionXML(Version, Xml.ToString, UsuarioActual.CveEmpresa) Then
TmpDT = ObjeFacturas.DtResultados
'TmpDT.Columns.Add("IVAPorcentaje")
'TmpDT.Columns.Add("RetIVAPorcentaje")
'TmpDT.Columns.Add("RetISRPorcentaje")
'TmpDT.Columns.Add("IEPSPSPorcentaje")
'TmpDT.Columns.Add("IEPSPSIVAPorcentaje")
SubTotalConceptos = Math.Round(TmpDT.SUM("Total"), 2).ToDecimal
AddPS2(False)
End If
Else
CargaConceptosXML(XMLDoc)
End If
Select Case TipoComprobante
Case "ingreso" : DdlTipoComprobante.SelectedValue = "Fac" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
Case "egreso" : DdlTipoComprobante.SelectedValue = "NC" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) : ChkAplicaNotaCredito.Enabled = False
Case "I" : DdlTipoComprobante.SelectedValue = "Fac" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
Case "E" : DdlTipoComprobante.SelectedValue = "NC" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) : ChkAplicaNotaCredito.Enabled = False
End Select
'DIV ALIAS
CargaPSAlias()
RFC = dr("RFCDe").ToString
RFCProv = RFC
TxtFecha.Text = dr("FechaFactura").ToString.ToDate.ToShortDateString
TxtSerie.Text = dr("Serie").ToString
TxtFolio.Text = dr("Folio").ToString
DdlValidadaSAT.SelectedValue = If(dr("FueValidado").ToString.Contiene("Si", "1"), "Si", "No")
DdlValidadaSAT.Enabled = False
LblTipoFact.Text = dr("TipoFactura").ToString
SerieVieja = dr("Serie").ToString
LblMetodoPago.Text = MetodoPago
Dim SubTotal2, IVA, IEPS As Decimal
IVA = TrasladoIVA
If Not UsuarioActual.TienePermisoProceso(130) Then
TxtFolio.Enabled = False
TxtSerie.Enabled = False
End If
'DdlTipoComprobante.Enabled = False
'PERMISO PARA MODIFICACIÓN DE FECHA AUN CON FACTURA
TxtFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
ImgFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
TxtSubTotal.Enabled = False
TxtDescuento.Enabled = False
TxtSubTotal2.Enabled = False
TxtIVA.Enabled = False
TxtTotal.Enabled = False
DdlProveedor.Enabled = False
If TxtFolio.Text.Trim = "" Then TxtFolio.Enabled = True : TxtSerie.Enabled = True
If UsuarioActual.TienePermisoProceso(112) Then
PermisoEdicionManual = True
TxtSubTotal.Enabled = True
TxtDescuento.Enabled = True
TxtSubTotal2.Enabled = True
TxtIVA.Enabled = True
TxtTotal.Enabled = True
End If
If UsuarioActual.Empresa.Funcionalidad(118) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Fac" Then
VerVales.Visible = True
End If
Dim Msg As String = ""
If Version = "3.3" Then
ValidacionesTotalesXml()
Else
'PRUEBA
'http://rm/Compras/Compras.aspx?CveFactura=122518 Emp: 48
'tTotal = Math.Round(SubTotal2 + IVA - RetencionIVA - RetencionISR + IEPS + OtrosImpuestos, 2)
HdnCompraSaldo.Value = Total.ToString
CompraSaldo = Total
Dim AjustaUltimoConcepto = False
'AGREGA IEPS COMO CONCEPTO
If TrasladoIEPS > 0 And UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero > 0 Then
AgregarConceptoIEPS(TrasladoIEPS, UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero)
' TrasladoIEPS = 0
End If
'AGREGA IEPS COMO IMPORTE GENERAL
'If TrasladoIEPS > 0 And Not UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero > 0 Then
' IEPS = TrasladoIEPS
'End If
'en otro impuesto lo esta registrando en ajuste en automatico
If OtrosImpuestos > 0 Then
AjustaUltimoConcepto = True
End If
If RFC = "CFE370814QI0" Then ' RFC de CFE, se hace un ajuste por diferencia para sacar el DAP
'OtrosImpuestos = Total - (SubTotal2 + IVA)
'este importe lo vamos a meter al gasto
'AjustaImporteUltimoConcepto(OtrosImpuestos)
OtrosImpuestos = 1
AjustaUltimoConcepto = True
'SubTotal2 = SubTotal
End If
Dim SubTotalReal As Decimal = 0
SubTotalReal = Math.Round(Total + RetencionISR + RetencionIVA - IVA + Descuentos - TrasladoIEPS, 2) ' NO se incluye otros impuestos para ajustar esa cifra
Dim DiferenciaTotales As Decimal = SubTotalReal - Math.Round(SubTotalConceptos, 2)
If DiferenciaTotales <> 0 Then
'Verificamos IEPS y Otros Impuestos
'restricccion general, que si el subtotal de los conceptos no cuadra con Total + RetISR + RetIVA - IVA <> SubTotalConeptos, ajuste al final
If TrasladoIEPS > 0 OrElse OtrosImpuestos > 0 OrElse Math.Abs(DiferenciaTotales) < 1 Then
'Condicion necesaria cuando hay IVA pero no hay diferencia
If DiferenciaTotales <> 0 Then
If DiferenciaTotales < 50 OrElse AjustaUltimoConcepto = True Then
Dim IA As Decimal = Total + RetencionISR + RetencionIVA - IVA - SubTotalConceptos - TrasladoIEPS + Descuentos
AjustaImporteUltimoConcepto(IA, True)
ElseIf DiferenciaTotales > 50 Then
PnlAjusteProductos.Visible = True
Dim Porcentaje As Double = Math.Round((SubTotalConceptos - SubTotalReal) / SubTotalConceptos * 100, 2)
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
For Each Row As GridViewRow In GvPS.Rows
Row.FCLinkButton("imgE").Visible = False
Row.FCLinkButton("imgD").Visible = False
Next
End If
End If
TrasladoIEPS = 0 : OtrosImpuestos = 0 : SubTotal2 = SubTotal
Else
PnlAjusteProductos.Visible = True
Dim Porcentaje As Double = If(SubTotalConceptos > 0, Math.Round((SubTotalConceptos - SubTotalReal) / SubTotalConceptos * 100, 2), 0)
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
For Each Row As GridViewRow In GvPS.Rows
Row.FCLinkButton("imgE").Visible = False
Row.FCLinkButton("imgD").Visible = False
Next
End If
End If
'Si no hay diferencias pero tenemos descuento, se ofrece la opcion para ajustar el gasto
If Descuentos > 0 Then
'[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018
If CveFactura = 286290 Then
Else
PnlAjusteProductos.Visible = True
Dim Porcentaje As Double = Math.Round((Descuentos) / (SubTotalConceptos) * 100, 4)
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero(4)
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
For Each Row As GridViewRow In GvPS.Rows
Row.FCLinkButton("imgE").Visible = False
Row.FCLinkButton("imgD").Visible = False
Next
End If
End If
SubTotal2 = SubTotalReal - Descuentos
If Descuentos > 0 Then
TrDescuento.Visible = True
End If
If Msg <> "" Then
Alert(Msg, TipoMensaje.MsgAdvertencia)
BtnGuardar.Enabled = False
End If
'AJUSTAMOS SUBTOTAL EN CASO DE SER DIFERENTE AL SUBTOTAL2 DEL XML (TOTAL - IVA)
If SubTotal2 <> SubTotal Then
SubTotal = SubTotalConceptos
End If
TxtSubTotal.Text = SubTotal.FormatoNumero
TxtDescuento.Text = Descuentos.FormatoNumero
TxtSubTotal2.Text = SubTotal2.FormatoNumero
TxtIVA.Text = IVA.FormatoNumero
TxtTotal.Text = Total.ToString.FormatoNumero
HfTotalCompra.Value = Total.ToString
CompraSaldo = Total
CalculaTotalPorDevengar()
TxtDocumentoImporteFE.Text = Total.ToString
RVDocumentoImporte.MaximumValue = Math.Round(Total, 2).ToString
RVDocumentoImporteFE.MaximumValue = RVDocumentoImporte.MaximumValue
RVDocumentoImporteCaja.MaximumValue = RVDocumentoImporte.MaximumValue
TxtDocumentoImporte.Text = Total.FormatoNumero
TxtDocumentoImporteCaja.Text = Total.FormatoNumero
TxtRetIVA.Text = RetencionIVA.FormatoNumero
TxtRetISR.Text = RetencionISR.FormatoNumero
TxtIEPS.Text = IEPS.FormatoNumero
If IEPS > 0 Then TrIEPS.Visible = True
If RetencionIVA > 0 Then TrRetIVA.Visible = True
If RetencionISR > 0 Then TrRetISR.Visible = True
TxtOtrosImpuestos.Text = OtrosImpuestos.FormatoNumero
If OtrosImpuestos > 0 Then TrOtrosImpuestos.Visible = True
HFDiferenciaCompra.Value = TxtTotal.Text
LblRetIVA.Text = (If(SubTotal2 > 0, (RetencionIVA / SubTotal2), 0) * 100).FormatoNumero(3) + "%"
LblRetISR.Text = (If(SubTotal2 > 0, (RetencionISR / SubTotal2), 0) * 100).FormatoNumero(3)
'ASIGNA VALORES ORIGINALES PARA GUARDAR
AsignaValoresOriginales(SubTotal, SubTotal2, IVA, RetencionIVA, RetencionISR, Total)
End If
TxtFechaPago.Text = (TxtFecha.Text.ToDate.AddDays(LblDiasCredito.Text.ToEntero)).ToShortDateString
Dim drMon As DataRow = GlobalDTMonedas.FiltroPrimero(String.Format(" (Abreviatura LIKE '%{0}%' OR Moneda LIKE '%{0}%' )", Moneda))
If drMon IsNot Nothing Then
DdlMoneda.SelectedValue = drMon("CveMoneda").ToString
Else
'sino busco en la tabla de alias
drMon = GlobalDTMonedasAlias.FiltroPrimero(String.Format("MonedaAlias LIKE '%{0}%' ", Moneda))
If drMon IsNot Nothing Then
DdlMoneda.SelectedValue = drMon("CveMoneda").ToString
Else
LblMoneda.Text = Moneda
LblMoneda.ForeColor = Drawing.Color.Red
End If
End If
If DdlMoneda.SelectedValue.ToEntero > 1 Then
If TipoCambio <= 10 Then
TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate)
End If
TxtFecha.Attributes.Remove("onblur")
If UsuarioActual.Empresa.UsaAC Then
TxtFecha.Attributes.Add("onblur", "CambiaFecha();CambiaFechaTC();")
Else
TxtFecha.Attributes.Add("onblur", "CambiaFechaTC();")
End If
End If
If TipoCambio > 0 And DdlMoneda.SelectedValue.ToEntero > 1 Then LblTC.Text = String.Format("TC: {0}", TipoCambio.ToString("N4"))
'DF - 10-04-17
If UsuarioActual.TienePermisoProceso(187) Then
TxtSerie.Enabled = True
End If
End If
Else
Alert("No se Encontró la Factura", TipoMensaje.MsgAdvertencia)
BtnGuardar.Visible = False
End If
'GvPS.DataSource = 'DTConceptos
'GvPS.DataBind()
End If
ObjeFacturas.Dispose()
Dim ObjSAT As New ClsSAT
Dim RFCRequest As String = Request("RFC").ToString
If ObjSAT.GetListado69B(2, UsuarioActual.CveEmpresa, RFCRequest) Then
If ObjSAT.DtResultados.Rows.Count > 0 Then
Dim Estatus As String = ObjSAT.DtResultados.Rows(0)("Situacion").ToString
BtnGuardar.Enabled = False
UpParametros.Update()
Alert($"El RFC del proveedor se encuentra en estado <b>{Estatus}</b> en el Listado EFOS (69B) del SAT", TipoMensaje.MsgAdvertencia)
System.Threading.Thread.Sleep(5)
End If
End If
ObjSAT.Dispose()
Return RFC
End Function
Private Sub CargaRetIVAConcepto(Optional Cambio As Boolean = False)
If TrRetIVA.Visible Then
TdRetIVAConcepto.Visible = True
End If
If Cambio Then
DdlRetIVAConcepto.Items.Clear()
If RFCProv.Length = 13 Then
DdlRetIVAConcepto.Items.Insert(0, New ListItem("Honorarios/Serv. Prof.", "1"))
DdlRetIVAConcepto.Items.Insert(1, New ListItem("Fletes P.F.", "2"))
ElseIf RFCProv.Length = 12 Then
DdlRetIVAConcepto.Items.Insert(0, New ListItem("Fletes P.M.", "3"))
End If
DdlRetIVAConcepto.Items.Add(New ListItem("Arrendamiento", "4"))
End If
UpPS.Update()
End Sub
Private Sub CargaRetISRConcepto(Optional Cambio As Boolean = False)
If TrRetISR.Visible Then
TdRetISRConcepto.Visible = True
End If
If Cambio Then
DdlRetISRConcepto.Items.Clear()
DdlRetISRConcepto.Items.Insert(0, New ListItem("Honorarios", "1"))
DdlRetISRConcepto.Items.Insert(1, New ListItem("Arrendamiento", "2"))
End If
UpPS.Update()
End Sub
Private Sub ValidacionesTotalesXml()
Dim Msg As String = ""
Dim SubtotalTemp = TmpDT.SUM("Total") + Math.Round(TmpDT.SUM("Descuento"), 2)
Dim DescuentosTemp = TmpDT.SUM("Descuento")
Dim Subtotal2Temp = TmpDT.SUM("Total")
Dim IVATemp = TmpDT.SUM("IVA")
Dim IEPSTemp = TmpDT.SUM("IEPSPS")
Dim RetIVATemp = TmpDT.SUM("RetIVA")
Dim RetISRTemp = TmpDT.SUM("RetISR")
Dim TotalTemp As Decimal = (Subtotal2Temp - RetIVATemp - RetISRTemp + Math.Round(IVATemp, 6) + IEPSTemp + OtrosImpuestos - OtrosImpuestosRetenciones).ToDecimal
If Math.Abs(Math.Round(DescuentosTemp, 6) - Math.Round(Descuentos, 6)) > 0.01 Then
Msg &= String.Format("- Los descuentos del detalle no coinciden con el descuento general <br>")
End If
If Math.Abs(Math.Round(IVATemp, 6) - Math.Round(TrasladoIVA, 6)) > 0.01 Then
Msg &= String.Format("- Los IVAS del detalle no coinciden con el IVA general <br>")
End If
If Math.Abs(Math.Round(IEPSTemp, 6) - Math.Round(TrasladoIEPS, 6)) > 0.01 Then
Msg &= String.Format("- Los IEPS del detalle no coinciden con el IEPS general <br>")
End If
If Math.Abs(Math.Round(RetIVATemp, 6) - Math.Round(RetencionIVA, 6)) > 0.01 Then
Msg &= String.Format("- Los RetIVA del detalle no coinciden con el RetIVA general <br>")
End If
If Math.Abs(Math.Round(RetISRTemp, 6) - Math.Round(RetencionISR, 6)) > 0.01 Then
Msg &= String.Format("- Las RetISR del detalle no coinciden con el RetIVA general <br>")
End If
If Math.Abs(Math.Round(TotalTemp, 2) - Math.Round(Total, 2)) > 0.01 Then
Msg &= String.Format("- El total generado por los detalles no coincide con el total general <br> ({0}-{1})", Math.Round(TotalTemp, 2), Math.Round(Total, 2))
End If
If Msg <> "" Then
Alert($"<b>El comprobante XML presenta las siguientes inconsistencias:</b> <br><br> {Msg}", TipoMensaje.MsgAdvertencia)
Tab.ActiveTabIndex = 0
''''BLOQUEA ACCIONES''''
BtnGuardar.Enabled = False
'BLOQUEA OC
TxtOC.Enabled = False
ImgBtnBuscarOC.Visible = False
Else
'[IPP] IGUALAMOS VALORES PARA RESPETAR LOS DEL XML EN CASO DE DIF DE 0.01
DescuentosTemp = Descuentos
IVATemp = TrasladoIVA
TotalTemp = Total
RetIVATemp = RetencionIVA
RetISRTemp = RetencionISR
IEPSTemp = TrasladoIEPS
End If
If TrasladoIEPS > 0 Or OtrosImpuestos > 0 Then
RegistraScript("$('#ModalIEPS').modal('show');")
If TrasladoIEPS > 0 Then
ChkIEPS.Visible = True
ChkIEPS.Checked = True
DdlConceptoIEPS.Visible = True
CargaProductos(DdlConceptoIEPS, If(UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero > 0, UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero, -1))
LbImporte.Text = "$" + TrasladoIEPS.ToString
End If
If OtrosImpuestos > 0 Then
ChkOtrosI.Visible = True
ChkOtrosI.Checked = True
DdlConceptoOI.Visible = True
CargaProductos(DdlConceptoOI, If(UsuarioActual.Empresa.Funcionalidad(305).ToString.ToEntero > 0, UsuarioActual.Empresa.Funcionalidad(305).ToString.ToEntero, -1))
LbImporte2.Text = "$" + OtrosImpuestos.ToString
End If
End If
TxtSubTotal.Text = SubtotalTemp.FormatoNumero
TxtDescuento.Text = DescuentosTemp.FormatoNumero
TxtSubTotal2.Text = Subtotal2Temp.FormatoNumero
TxtIVA.Text = IVATemp.FormatoNumero
TxtTotal.Text = TotalTemp.FormatoNumero
TxtRetIVA.Text = RetIVATemp.FormatoNumero
TxtRetISR.Text = RetISRTemp.FormatoNumero
TxtIEPS.Text = IEPSTemp.FormatoNumero
TrDescuento.Visible = DescuentosTemp > 0
TrIEPS.Visible = IEPSTemp > 0
TrRetIVA.Visible = RetIVATemp > 0
TrRetISR.Visible = RetISRTemp > 0
TxtSubTotal.Enabled = False
TxtDescuento.Enabled = False
TxtSubTotal2.Enabled = False
TxtIVA.Enabled = False
TxtTotal.Enabled = False
TxtRetIVA.Enabled = False
TxtRetISR.Enabled = False
TxtIEPS.Enabled = False
HfTotalCompra.Value = TotalTemp.ToString
CompraSaldo = TotalTemp
CalculaTotalPorDevengar()
TxtDocumentoImporteFE.Text = TotalTemp.ToString
RVDocumentoImporte.MaximumValue = Math.Round(TotalTemp, 2).ToString
RVDocumentoImporteFE.MaximumValue = RVDocumentoImporte.MaximumValue
RVDocumentoImporteCaja.MaximumValue = RVDocumentoImporte.MaximumValue
TxtDocumentoImporte.Text = TotalTemp.FormatoNumero
TxtDocumentoImporteCaja.Text = TotalTemp.FormatoNumero
TxtOtrosImpuestos.Text = OtrosImpuestos.FormatoNumero
If OtrosImpuestos > 0 Then TrOtrosImpuestos.Visible = True
If OtrosImpuestosRetenciones > 0 Then TrOtrosImpuestos.Visible = True : TxtOtrosImpuestos.Text = OtrosImpuestosRetenciones.FormatoNumero
HFDiferenciaCompra.Value = TxtTotal.Text
HdnCompraSaldo.Value = TotalTemp.ToString
CompraSaldo = TotalTemp
LblRetIVA.Text = (If(Subtotal2Temp > 0, (RetIVATemp / Subtotal2Temp), 0) * 100).FormatoNumero(3) + "%"
LblRetISR.Text = (If(Subtotal2Temp > 0, (RetISRTemp / Subtotal2Temp), 0) * 100).FormatoNumero(3)
'ASIGNA VALORES ORIGINALES PARA GUARDAR
AsignaValoresOriginales(SubtotalTemp, Subtotal2Temp, IVATemp, RetIVATemp, RetISRTemp, Total)
End Sub
''' <summary>
''' Método que convierte el IEPS en un concepto para no ajustar totales
''' </summary>
Private Sub AgregarConceptoIEPS(IEPS As Decimal, CvePS1 As Integer)
Dim SubTotalR As Decimal = TmpDT.SUM("Total").ToString.ToDecimal
Dim PSS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS = {0} ", CvePS1), "PS")
Dim PSS2 As DataTable = TmpDT.FiltraParametros(String.Format("CvePS = {0} ", CvePS1), "PS")
If PSS.Rows.Count > 0 Or PSS2.Rows.Count > 0 Then
Dim CveUM As Integer = 0
Dim UM As String = ""
Dim CveClasificacion As Integer = 0
Dim Clasificacion As String = ""
Dim CvePS As Integer = 0
Dim PS As String = ""
Dim CveTipoPS As Integer = 0
If PSS.Rows.Count > 0 Then
CveUM = PSS.Rows(0)("CveUM").ToString.ToEntero
UM = PSS.Rows(0)("UnidadMedida").ToString
CveClasificacion = PSS.Rows(0)("CveClasificacion").ToString.ToEntero
Clasificacion = PSS.Rows(0)("Clasificacion").ToString
CvePS = PSS.Rows(0)("CvePS").ToString.ToEntero
PS = PSS.Rows(0)("PS").ToString
CveTipoPS = PSS.Rows(0)("CveTipoPS").ToString.ToEntero
End If
Dim Cantidad As Double = 1
Dim CveSubProyectoContrato As String = "-1"
Dim CveProyecto As String = "-1"
Dim SubProyecto As String = "SE"
Dim Proyecto As String = "SE"
Dim Obs As String = ""
Dim PU As Double = IEPS
Dim Total As Double = Cantidad * PU
Dim IVA As Double = 0
Dim Descuento As Double = 0
If PSS2.Rows.Count > 0 Then
CveUM = PSS2.Rows(0)("CveUM").ToString.ToEntero
UM = PSS2.Rows(0)("UM").ToString
CveClasificacion = PSS2.Rows(0)("CveClasificacion").ToString.ToEntero
Clasificacion = PSS2.Rows(0)("Clasificacion").ToString
CvePS = PSS2.Rows(0)("CvePS").ToString.ToEntero
PS = PSS2.Rows(0)("PS").ToString
CveTipoPS = PSS2.Rows(0)("CveTipoPS").ToString.ToEntero
CveSubProyectoContrato = PSS2.Rows(0)("CveSubProyecto").ToString
CveProyecto = PSS2.Rows(0)("CveProyecto").ToString
SubProyecto = PSS2.Rows(0)("SubProyecto").ToString
Proyecto = PSS2.Rows(0)("Proyecto").ToString
Obs = PSS2.Rows(0)("Obs").ToString
Dim CveTipoGasto As Integer = PSS2.Rows(0)("CveTipoGasto").ToString.ToEntero
Dim TipoGasto As String = PSS2.Rows(0)("TipoGasto").ToString
AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, TCalculaTotales:=False, CveTipoGasto:=CveTipoGasto, TipoGasto:=TipoGasto)
AddPS2()
Else
AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, TCalculaTotales:=False)
AddPS2()
End If
End If
Dim SubTotalIEPS = TmpDT.SUM("Total").ToString.ToDecimal
SubTotal = Math.Round(SubTotalIEPS, 2)
SubTotalConceptos = Math.Round(SubTotalIEPS, 2)
'If SubTotalR <> SubTotalIEPS Then
' Dim IA As Decimal = SubTotalR - SubTotalIEPS
' AjustaImporteUltimoConcepto(IA)
'End If
PSS.Dispose()
End Sub
Private Sub CargaCompra()
Dim ObjCompra As New ClsCompras()
Dim ObjOC As New ClsOC()
If ObjCompra.GetCompras(CveCompra, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
If ObjCompra.DtResultados IsNot Nothing AndAlso ObjCompra.DtResultados.Rows.Count > 0 Then
CompraCargada = True
'data-toggle="tooltip" data-placement="left" title="Agregar Escolaridad ."
If ObjCompra.DtResultados.Rows(0)("FolioREQ").ToString <> "" Then
lblOCLabel.Attributes.Add("data-toggle", "tooltip")
lblOCLabel.Attributes.Add("data-placement", "top")
lblOCLabel.Attributes.Add("title", "REQ: " & ObjCompra.DtResultados.Rows(0)("FolioREQ").ToString)
End If
'CargaProveedor
Dim dr As DataRow = ObjCompra.DtResultados.Rows(0)
Saldo = dr("Saldo").ToString.ToDecimal
RBLPago.Visible = False
Dim CveProveedor As Integer = dr("CveProveedor").ToString.ToEntero
HdnCveProveedor.Value = CveProveedor.ToString
ViewState("CveProveedor") = CveProveedor
ImgBtnBuscarOC.OnClientClick = String.Format("AbrirVentana('/OC/PopUpBuscarReq.aspx?V=VOCCOMP&P={0}&T={1}&Masterimpoup=true',1000,600,'S'); return false;", CveProveedor, DdlTipoComprobante.SelectedValue)
Dim ObjBancos As New ClsBancos()
If ObjBancos.GetCreditosCompra(CveCompra) And ObjBancos.DtResultados.Rows.Count > 0 Then
GvCreditosRelacionados.DataSource = ObjBancos.DtResultados
GvCreditosRelacionados.Visible = True
GvCreditosRelacionados.DataBind()
romCreditosTabla.Visible = True
GvCreditos.Visible = False
GvCreditosRelacionados.Visible = True
PnlContadoCreditos.Visible = True
Else
GvCreditosRelacionados.DataSource = Nothing
GvCreditosRelacionados.Visible = False
GvCreditosRelacionados.DataBind()
End If
UpGvCreditos.Update()
LblImporteCreditos.Visible = True
ObjBancos.Dispose()
'RegistraScript("CargaProveedor(""" & CveProveedor & """);")
'CargaEncabezado
'ViewState("FolioFiscal") = ObjCompra.DtResultados.Rows(0)("FolioFiscal").ToString
TxtSerie.Text = dr("Serie").ToString
TxtFolio.Text = dr("Folio").ToString
TxtFolioSecundario.Text = dr("FolioSecundario").ToString
TxtFecha.Text = dr("Fecha").ToString.ToDate.ToShortDateString
TxtDescripcion.Text = dr("Descripcion").ToString
CvePrePoliza = dr("CvePrePoliza").ToString.ToEntero
EstatusAlmacen = dr("EstatusAlmacen").ToString.ToEntero
DdlTipoCompra.SelectedValueExist(dr("CveTipoCompra"))
'Select Case dr("PorcentajeIVA").ToString.ToDouble
' Case 0
' DdlIVA.SelectedValue = "1"
' Case 0.16
' DdlIVA.SelectedValue = "1.16"
' Case 0.08
' DdlIVA.SelectedValue = "1.08"
'End Select
'If dr("PorcentajeIVA").ToString.ToDouble = 0 Then DdlIVA.SelectedValue = "1" Else DdlIVA.SelectedValue = "1.16"
LblMetodoPago.Text = dr("MetodoPagoSAT").ToString
If UsuarioActual.Empresa.UsaAC Then
CambiaEjercicioAC(False)
End If
If GlobalDTProveedorSucursales(CveProveedor).Rows.Count > 0 Then
RowProveedorSucursal.Visible = True
DdlProveedorSucursal.Items.Clear()
DdlProveedorSucursal.DataSource = GlobalDTProveedorSucursales(CveProveedor)
DdlProveedorSucursal.DataBind()
DdlProveedorSucursal.Items.Insert(0, New ListItem("Matriz", "0"))
DdlProveedorSucursal.SelectedValueExist(dr("CveProveedorSucursal").ToString.ToEntero)
End If
''SE AJUSTO EL SUBTOTAL POR LA COMPRA # 52433 DE LA EMPRESA 48 PARA QUE CUADREN LOS TOTALES CUANDO VIENE CON DESCUENTOS
'TxtSubTotal.Text = (dr("SubTotal").ToString.ToDouble + dr("Descuentos").ToString.ToDouble).FormatoNumero(2)
TxtSubTotal.Text = (dr("SubTotal").ToString.ToDouble).FormatoNumero
'TxtSubTotal2.Text = (dr("SubTotal").ToString.ToDouble).FormatoNumero
TxtSubTotal2.Text = (dr("SubTotal").ToString.ToDouble - dr("Descuentos").ToString.ToDouble).FormatoNumero(2)
TxtDescuento.Text = dr("Descuentos").ToString.FormatoNumero(2)
LblAmortizacion.Text = dr("Amortizacion").ToString.FormatoNumero(2)
TxtIVA.Text = dr("IVA").ToString.FormatoNumero(2)
TxtRetIVA.Text = dr("RetIVA").ToString.FormatoNumero(2)
TxtRetISR.Text = dr("RetISR").ToString.FormatoNumero(2)
TxtIEPS.Text = dr("IEPS").ToString.FormatoNumero(2)
If dr("IEPS").ToString.ToDouble > 0 Then TrIEPS.Visible = True
If dr("RetIVA").ToString.ToDouble > 0 Then TrRetIVA.Visible = True
If dr("RetISR").ToString.ToDouble > 0 Then TrRetISR.Visible = True
If Math.Abs(dr("Redondeo").ToString.ToDouble) > 0 Then TrRedondeo.Visible = True
TxtRedondeo.Text = dr("Redondeo").ToString.FormatoNumero(2)
TxtOtrosImpuestos.Text = dr("OtrosImpuestos").ToString.FormatoNumero(2)
If dr("OtrosImpuestos").ToString.ToDouble > 0 Then TrOtrosImpuestos.Visible = True
TxtTotal.Text = dr("Total").ToString.FormatoNumero(2)
HfTotalCompra.Value = TxtTotal.Text
CompraSaldo = TxtTotal.Text.ToDouble
TipoCambio = dr("TipoCambio").ToString.ToDouble
If TipoCambio > 1 Then LblTC.Text = String.Format("TC: {0}", TipoCambio.ToString("N4"))
AsignaValoresOriginales(TxtSubTotal.Text.ToDouble, TxtSubTotal2.Text.ToDouble, TxtIVA.Text.ToDouble, TxtRetIVA.Text.ToDouble, TxtRetISR.Text.ToDouble, TxtTotal.Text.ToDouble)
CalculaTotalPorDevengar()
TxtDocumentoImporteFE.Text = dr("Total").ToString
RVDocumentoImporte.MaximumValue = dr("Total").ToString.FormatoNumero(2)
RVDocumentoImporteFE.MaximumValue = RVDocumentoImporte.MaximumValue
RVDocumentoImporteCaja.MaximumValue = RVDocumentoImporte.MaximumValue
HFDiferenciaCompra.Value = TxtTotal.Text
TotalGeneral = dr("Total").ToString.ToDouble
CveMoneda = dr("CveMoneda").ToString.ToEntero
DdlValidadaSAT.SelectedValue = "Si"
TxtObsFact.Text = dr("Observaciones").ToString
LblUsuarioCaptura.Text = dr("Usuario").ToString
LitFechCaptura.Text = dr("FechaIng").ToString.ToDate.ToShortDateString
LblRetIVA.Text = Math.Round((dr("RetIVA").ToString.ToDouble / TxtSubTotal2.Text.ToDouble) * 100, 4).FormatoNumero(3) + "%"
LblRetISR.Text = Math.Round((dr("RetISR").ToString.ToDouble / TxtSubTotal2.Text.ToDouble) * 100, 4).FormatoNumero(3)
If dr("TipoFactura").ToString <> "CFDi" Then LblTipoFact.Text = dr("TipoFactura").ToString : divTipoFactura.Visible = True
ViewState("CveFactura") = dr("CveFactura").ToString.ToEntero
ViewState("IdPoliza") = dr("IdPoliza").ToString.ToEntero
DdlMoneda.SelectedValue = dr("CveMoneda").ToString
'primero se asigna la moneda, para que dentro del proveedor carge los anticipos solo de esa moneda
DdlProveedor.Visible = False
HplProveedor.Visible = True
CargaProveedor(CveProveedor, "-1")
DdlRetIVAConcepto.SelectedValueExist(dr("CveRetIVAConcepto").ToString)
DdlRetISRConcepto.SelectedValueExist(dr("CveRetISRConcepto").ToString)
HdnCveEstatusFactura.Value = dr("CveEstatusFactura").ToString
LblCompraEstatus.Text = dr("EstatusFactura").ToString
If dr("CveEstatusFactura").ToString = "2" Then ChkProgramarPago.Checked = True
TrRembolsoUpdate.Visible = True
TrRembolsoNumero.Visible = True
Dim DtPersonal = GlobalDTRHPersonal(UsuarioActual.CveEmpresa).FiltraParametros("", "NombreCompleto")
DdlRembolsoPersonal.DataSource = DtPersonal
DdlRembolsoPersonal.Items.Insert(0, New ListItem("Sin Seleccionar", "-1"))
DdlRembolsoPersonal.DataBind()
If dr("CvePersonal").ToString.ToEntero > 0 Then
DdlRembolsoPersonal.SelectedValueExist(dr("CvePersonal").ToString)
TxtRembolsoNumero.Text = dr("NumeroReembolso").ToString
RblRembolso.SelectedValuesIfExist("1")
TrRembolsoPersonal.Visible = True
End If
Dim DtCajaChica As DataTable = GlobalDTBancosCuentas(UsuarioActual.CveUsuario)
DtCajaChica = DtCajaChica.FiltraParametros(String.Format("CveTipoCuenta = 1"))
DdlRembolsoCajaChica.DataSource = DtCajaChica
DdlRembolsoCajaChica.Items.Insert(0, New ListItem("Sin Seleccionar", "-1"))
DdlRembolsoCajaChica.DataBind()
If dr("CveCajaChica").ToString.ToEntero > 0 Then
DdlRembolsoCajaChica.SelectedValueExist(dr("CveCajaChica").ToString)
TxtRembolsoNumero.Text = dr("NumeroReembolso").ToString
RblRembolso.SelectedValuesIfExist("2")
TrRembolsoCajaChica.Visible = True
End If
VisualizaEstatusCompraSaldo(dr("TipoDocto").ToString, dr("Saldo").ToString.ToDecimal, dr("Total").ToString.ToDecimal)
If dr("IdPoliza").ToString.ToEntero > 0 Then
HplCompraContabilizada.Text = "Si"
HplCompraContabilizada.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", dr("IdPoliza"))
LblCompraEstatus.ForeColor = Drawing.Color.Navy
trContabilizada.Visible = True
If UsuarioActual.TienePermisoProceso(107) Then BtnDescontabilizar.Visible = True
Else
BtnDescontabilizar.Visible = False
HplCompraContabilizada.Text = "No"
trContabilizada.Visible = True
If UsuarioActual.Empresa.UsaAC Then
LBContabilizarAC.Visible = True
End If
End If
UPPDescontablizar.Update()
TxtFechaPago.Text = dr("FechaVencimiento").ToString.ToDate.ToShortDateString
RowBitacora.Visible = True
CargaEventoBitacora()
'ImgAddObs.Attributes.Add("onclick", "javascript: PosicionaObjeto(this.id,'DivEventoBitacora',null,-250,-250); $('#DivEventoBitacora').show(1000); ")
ImgAddObs.Visible = True
ChkAplicaNotaCredito.Checked = CBool(dr("AplicaNotaCredito").ToString)
'RBLPago.Enabled = False
'If dr("CveIE").ToString.ToEntero > 0 Then
' RBLPago.SelectedValue = "2"
' 'cargo los datos del pago
' 'PnlPago.Visible = True
' 'PnlChkFuncionariosEmpleados.Visible = True
' Dim ObjIE As New ClsBancos()
' If ObjIE.GetBancosIE(dr("CveIE").ToString.ToEntero, UsuarioActual.CveEmpresa) Then
' If ObjIE.DtResultados.Rows.Count > 0 Then
' DdlTipoTransaccion.SelectedValue = ObjIE.CveTipoTransaccion.ToString
' DdlCuenta.SelectedValue = ObjIE.CveCuenta.ToString
' TxtDocumentoFolio.Text = ObjIE.Folio
' TxtDocumentoImporte.Text = ObjIE.Importe.FormatoNumero
' TxtDocumentoObservaciones.Text = ObjIE.Observaciones
' End If
' End If
' ObjIE.Dispose()
'End If
CompraSaldo = TotalGeneral - LblAmortizacion.Text.ToDouble
If EmpresaPrueba Then
CompraSaldo = dr("Saldo").ToString.ToDouble
End If
If CompraSaldo > dr("Saldo").ToString.ToDouble Then
CompraSaldo = dr("Saldo").ToString.ToDouble
End If
HdnCompraSaldo.Value = CompraSaldo.ToString
If CompraSaldo > 0 And UsuarioActual.TienePermisoProceso(100) Then
HLPagar.Visible = True
HLPagar.NavigateUrl = $"/Bancos/PopIECompras.aspx?CveCompra={CveCompra}&TB_iframe=true&height=520&width=700"
End If
If dr("CveFactura").ToString.ToEntero > 0 Then
ImgDownXML.Visible = True : ImgDownXML.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Fact&EXT=xml&CveFactura={0}&RFC={1}", dr("CveFactura"), dr("RFC").ToString.Replace("&", "%26%"))))
ImgDownPDF.Visible = True : ImgDownPDF.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Fact&EXT=pdf&CveFactura={0}&RFC={1}", dr("CveFactura"), dr("RFC").ToString.Replace("&", "%26%"))))
End If
'CargaDetalle
If ObjCompra.GetCompraDetalle(CveCompra) Then
TmpDT = ObjCompra.DtResultados
TmpDTOriginal = ObjCompra.DtResultados.Copy
TmpDT.Columns.Add("CveClasificacionActualizar", GetType(Integer))
'TmpDT.Columns.Add("CveEq", GetType(Integer))
TmpDT.Columns.Add("CveAlmacen", GetType(Integer))
'TmpDT.Columns.Add("CvePersonal", GetType(Integer))
TmpDT.Columns.Add("IdCuentaComprometido", GetType(Integer))
TmpDT.Columns.Add("IdCuentaPorEjercer", GetType(Integer))
TmpDT.Columns.Add("IdCuentaDevengado", GetType(Integer))
TmpDT.Columns.Add("IdCuentaMatriz", GetType(Integer))
TmpDT.Columns.Add("PSDescripcion", GetType(String))
TmpDT.Columns.Add("ProductoOC", GetType(String))
TmpDT.Columns.Add("CantidadF", GetType(Double))
'Consignaciones
TmpDT.Columns.Add("CveAlmacenConsignacion", GetType(Integer))
TmpDT.Columns.Add("NoConsignacion", GetType(Integer))
TmpDT.Columns.Add("CveConsignacion", GetType(Integer))
TmpDT.Columns.Add("HdnPS", GetType(String))
TmpDT.Columns.Add("HdnCvePS", GetType(String))
TmpDT.Columns.Add("HdnClasificacion", GetType(String))
TmpDT.Columns.Add("HdnCveClasificacion", GetType(String))
TmpDT.Columns.Add("HdnCveAlmacen", GetType(String))
'INVENTARIO SERIE/LOTE
TmpDT.Columns.Add("CveMetodoInventario", GetType(Integer))
'Fletes y Servicios
'TmpDT.Columns.Add("AplicaCostoIndirecto", GetType(Integer)) 'Ya traemos el estatus flete
TmpDT.Columns.Add("CostoIndirectoAlmacen", GetType(Decimal))
TmpDT.Columns.Add("EntregaDirecta", GetType(Integer))
TmpDT.Columns.Add("CveContrato", GetType(Integer))
GvPS.DataSource = TmpDT
GvPS.DataBind()
If UsuarioActual.Empresa.UsaAC Then
CargaHidendsAC()
End If
CalculaTotales(True)
If UsuarioActual.Empresa.UsaInventarios Then
DtInv = TmpDT.FiltraParametros(String.Format("CveTipoPS = 2")).Copy
If dr("Inventario").ToString = "1" Then
CveMovimientoAlmacen = dr("CveMovimiento").ToString.ToEntero
Dim Inv As New ClsInventarios
If Inv.GetMovimientosDetalle(dr("CveMovimiento").ToString.ToEntero, UsuarioActual.CveEmpresa) Then
'Dim TempParametros = Encripta(String.Format("OP=Alm&CveMovimiento={0}", dr("CveMovimiento")))
'ImgImprimirAlmacen.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", TempParametros)
ImgImprimirAlmacen.Visible = True
ImgImprimirAlmacen.NavigateUrl = String.Format("/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}", dr("CveMovimiento"))
Dim drt As DataRow
'actualizo el almacen
For Each dri As DataRow In DtInv.Rows
drt = Inv.DtResultados.FiltroPrimero(String.Format("CvePS = {0} AND Cantidad = {1}", dri("CvePS"), dri("Cantidad")))
If drt IsNot Nothing Then
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dri("Consec").ToString.ToEntero}")(0) 'Charlie
TmpDr("CveAlmacen") = drt("CveAlmacen") 'Charlie
dri("CveAlmacen") = drt("CveAlmacen")
End If
Next
End If
'Proceso Super Tramposo de Charlie
If Inv.GetMovimientosDetalle(dr("CveMovimiento").ToString.ToEntero, UsuarioActual.CveEmpresa, CveCompra:=-123) Then
Dim drt As DataRow
For Each dri As DataRow In DtInv.Rows
drt = Inv.DtResultados.FiltroPrimero(String.Format("CvePS = {0} AND Cantidad = {1}", dri("CvePS"), dri("Cantidad")))
If drt IsNot Nothing Then
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dri("Consec").ToString.ToEntero}")(0)
TmpDr("CveAlmacen") = drt("CveAlmacen")
End If
Next
End If
Inv.Dispose()
End If
CargaGvInv()
'Ocultamos "Recibir Aqui"
GvInv.Columns(6).Visible = False
GvInv.Columns(7).Visible = False
End If
End If
DdlTipoComprobante.Enabled = False
DdlTipoComprobante.SelectedValue = dr("TipoDocto").ToString
If dr("TipoDocto").ToString = "Fac" Then
ChkAplicaNotaCredito.Enabled = True
ImgAnticiposPendientes.Visible = True
Else
ImgAnticiposPendientes.Visible = False
ChkAplicaNotaCredito.Enabled = False
End If
HlProveedor.HRef = ""
TxtCodigo.ReadOnly = True
'IPP Usuario Sistema No Bloquea, se cambió al proceso
If UsuarioActual.TienePermisoProceso(79) Then
TxtCantidad.Enabled = True
TxtPrecio.Enabled = True
Else
TxtCantidad.Enabled = False
TxtPrecio.Enabled = False
End If
DdlPS.Enabled = False
TxtObsPS.Enabled = False
'ImgAmort.Attributes.Clear()
LbAgregar.Enabled = False
TxtSerie.Enabled = False
TxtFolio.Enabled = False
TxtFecha.Enabled = False
DdlProveedor.Enabled = False
DdlProveedorSucursal.Enabled = False
DdlEstatus.Enabled = False
DdlMoneda.Enabled = False
DdlRetIVAConcepto.Enabled = False
DdlRetISRConcepto.Enabled = False
If UsuarioActual.TienePermisoProceso(79) Then
BtnActualizar.Visible = True
DdlProveedorSucursal.Enabled = True
DdlPS.Enabled = True
TxtObsPS.Enabled = True
LbAgregar.Enabled = True
End If
BtnGuardar.Visible = False
BtnGuardar.Enabled = False
UpPSS.Update()
'GvLeyendasFiscales.Enabled = False
TxtSubTotal.ReadOnly = True
TxtIVA.ReadOnly = True
TxtRetIVA.ReadOnly = True
TxtRetISR.ReadOnly = True
TxtIEPS.ReadOnly = True
TxtOtrosImpuestos.ReadOnly = True
TxtTotal.ReadOnly = True
'CargaLeyendasFiscales
ViewState("CompraFolio") = TxtFolio.Text.Trim
Dim dtnc As DataTable = Nothing
If dr("TipoDocto").ToString = "Fac" Then
'carga as notas de credito vinculadas
If ObjCompra.GetComprasNotasCredito(CveCompra, -1) Then
dtnc = ObjCompra.DtResultados
End If
ElseIf dr("TipoDocto").ToString.Contiene("NC", "DEV", "Ant") Then
If dr("TipoDocto").ToString = "NC" Then
DivReembolso.Visible = False
RBLPago.Items(2).Enabled = False
End If
If ObjCompra.GetComprasNotasCredito(-1, CveCompra) Then
dtnc = ObjCompra.DtResultados
GvAnticiposSel.Caption = "<table width='100%'><tr><td style='text-align:center'>Compras Aplicadas</td></tr></table>"
End If
End If
'VINCULACIÓN OC - NUEVA DICIEMBRE 2015
If dr("OCVinculada").ToString() <> "" Then
Dim DtOCs As New DataTable
Dim OCS = "", CveOCS = ""
DtOCs.Columns.Add("FolioOC", GetType(Integer))
DtOCs.Columns.Add("CveOrdenCompra", GetType(Integer))
For Each drt As DataRow In TmpDT.Rows
If drt("FolioOC").ToString <> "" Then
Dim DrOC = DtOCs.NewRow
DrOC("FolioOC") = drt("FolioOC").ToString
DrOC("CveOrdenCompra") = drt("CveOrdenCompra").ToString
DtOCs.Rows.Add(DrOC)
End If
Next
DtOCs = DtOCs.FiltraParametros("", "", {"FolioOC", "CveOrdenCompra"})
DtOCs.Columns.Add("Fecha", GetType(Date))
DtOCs.Columns.Add("Descripcion", GetType(String))
If DtOCs.Rows.Count > 0 Then
For Each drt As DataRow In DtOCs.Rows
If ObjOC.GetOrdenesCompraRep("OC", -1, -1, -1, -1, MinFecha, MaxFecha, drt("CveOrdenCompra").ToString.ToEntero, CveProveedor, -1, -1, -1, UsuarioActual.CveEmpresa, -1) Then
If ObjOC.DtResultados.Rows.Count = 1 Then
OCS += If(OCS <> "", String.Format(",{0}", drt("FolioOC").ToString), drt("FolioOC").ToString)
CveOCS += If(CveOCS <> "", String.Format(",{0}", drt("CveOrdenCompra").ToString), drt("CveOrdenCompra").ToString)
drt("Fecha") = ObjOC.DtResultados.FiltroPrimeroValor("FechaIng")
drt("Descripcion") = ObjOC.DtResultados.FiltroPrimeroValor("Descripcion")
End If
End If
Next
End If
TxtOC.Text = OCS
TieneOC = True
If DtOCs.Rows.Count > 1 Then
HLOCsVinculadas.Visible = True
GvOCsVinculadas.DataSource = DtOCs
GvOCsVinculadas.DataBind()
UpOCsVinculadas.Update()
ElseIf DtOCs.Rows.Count = 1 Then
HLOCsVinculadas.Visible = True
HLOCsVinculadas.Attributes.Remove("data-toggle")
HLOCsVinculadas.Attributes.Remove("data-target")
HLOCsVinculadas.Attributes.Add("data-toggle", "tooltip")
HLOCsVinculadas.NavigateUrl = $"/OC/OC.aspx?OC={DtOCs.FiltroPrimeroValor("CveOrdenCompra")}"
HLOCsVinculadas.Target = "_blank"
End If
End If
'BLOQUEA OC
TxtOC.Enabled = False
ImgBtnBuscarOC.Visible = False
Tab.ActiveTabIndex = 0
GvAnticiposSel.DataSource = dtnc
GvAnticiposSel.DataBind()
'' VALIDA ELIMINAR COMPRA
If UsuarioActual.TienePermisoProceso(77) OrElse UsuarioActual.TienePermisoProceso(135) Then ' Eliminar compra
'SIN VINCULACIÓN
If UsuarioActual.TienePermisoProceso(135) Then
If TxtOC.Text = "" AndAlso IdPoliza < 1 AndAlso CveMovimientoAlmacen < 1 AndAlso LblUsuarioCaptura.Text = UsuarioActual.Usuario AndAlso TmpDT.MAX("CveActivoFijo").ToEntero < 1 AndAlso Not ChkProgramarPago.Checked AndAlso CompraSaldo = TxtTotal.Text.ToDouble Then
BtnEliminarCompra.Visible = True
End If
End If
'ELIMINAR A FUERZAS
If UsuarioActual.TienePermisoProceso(77) Then
If Not (IdPoliza > 0) Then
BtnEliminarCompra.Visible = True
End If
End If
Dim StrInventario As String = ""
If dr("Inventario").ToString = "1" Then
StrInventario = "los <b>Movimientos de Inventario</b> relacionados"
End If
If UsuarioActual.Empresa.UsaAC Then
BtnEliminarCompra.Attributes.Add("data-original-title", String.Format("¿Está seguro que desea eliminar la Compra, {0} y la <b>Poliza Asociada</b>?", StrInventario))
Else
BtnEliminarCompra.Attributes.Add("data-original-title", String.Format("¿Está seguro que desea eliminar la Compra y {0}?", StrInventario))
End If
End If
'VALIDA CANCELAR COMPRA - AC
ValidaCancelarCompra()
'CUANDO ESTA CANCELADA
If dr("CveEstatusFactura").ToString = "-2" Then
BtnEliminarCompra.Visible = False
BtnActualizar.Visible = False
BtnGuardar.Visible = False
BtnCancelarCompra.Visible = False
LblCompraEstatus.Text = "CANCELADA"
LblCompraEstatus.Font.Bold = True
LblCompraEstatus.Font.Size = 12
LblCompraEstatus.ForeColor = Drawing.Color.DarkRed
'HplIr.Visible = False
BtnDescontabilizar.Visible = False
BtnEliminarPolizaMultiple.Visible = False
'LIGA POLIZA CANCELACIÓN
'HplPolizaCancelación.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", dr("IdPoliza"))
End If
'CUANDO FUE REFACTURADA
If dr("CompraRefacturada").ToString.ToEntero > 0 Then
BtnEliminarCompra.Visible = False
BtnActualizar.Visible = False
BtnGuardar.Visible = False
BtnCancelarCompra.Visible = False
End If
'TIENE AMORTIZACIÓN
If GvAnticiposSel.Rows.Count > 0 Then
BtnEliminarCompra.Visible = False
BtnCancelarCompra.Visible = False
End If
CargaComplementosPago()
Else
Alert("La compra solicitada no se encontró. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
End If
Else
Alert("Ocurrió un error al cargar la compra. Por favor vuelta a intentar o comuniquese con Sistemas.", TipoMensaje.MsgError)
End If
ObjCompra.Dispose()
ObjOC.Dispose()
End Sub
Private Sub VisualizaEstatusCompraSaldo(TipoDocto As String, Saldo As Decimal, Total As Decimal)
If TipoDocto.Contiene("Fac", "Ant") Then
If HdnCveEstatusFactura.Value.ToEntero = 6 Then
LblCompraEstatus.Text = "Vinculada a Crédito"
LblCompraEstatus.Font.Bold = True
LblCompraEstatus.Font.Size = 12
LblCompraEstatus.ForeColor = Drawing.Color.Navy
BtnAceptarAnticipos.Visible = False
trImporte.Visible = False
HplImporte.Visible = False
HplImporte.Text = ""
HplImporte.NavigateUrl = ""
Else
If Saldo <= 0 Then
LblCompraEstatus.Text = "PAGADA"
LblCompraEstatus.Font.Bold = True
LblCompraEstatus.Font.Size = 12
LblCompraEstatus.ForeColor = Drawing.Color.Navy
BtnAceptarAnticipos.Visible = False
trImporte.Visible = True
HplImporte.Visible = True
HplImporte.Text = String.Format("$ {0}", Total.FormatoNumero())
HplImporte.NavigateUrl = String.Format("/Contabilidad/PopUpAuxiliar.aspx?Tipo=CxPProveedor&CveProveedor={0}&CveCompra={1}&TB_iframe=true&height=700&width=920", CveProveedor, CveCompra)
Else
If Saldo < Total Then
LblCompraEstatus.Text = "ABONADA"
LblCompraEstatus.Font.Bold = True
LblCompraEstatus.ForeColor = Drawing.Color.Navy
trSaldo.Visible = True
HplSaldoAuxiliar.Text = String.Format("$ {0}", Saldo.FormatoNumero())
HplSaldoAuxiliar.NavigateUrl = String.Format("/Contabilidad/PopUpAuxiliar.aspx?Tipo=CxPProveedor&CveProveedor={0}&CveCompra={1}&TB_iframe=true&height=700&width=920", CveProveedor, CveCompra)
End If
End If
End If
UpEstatus.Update()
End If
End Sub
Private Sub CargaMonedas()
DdlMoneda.DataSource = GlobalDTMonedas
DdlMoneda.DataBind()
End Sub
Private Sub CargarAlmacen()
'ddlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (1,2)") 'solo muestra tipo material y herramientas
'ddlAlmacen.DataBind()
ddlAlmacenAdd.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (1,2,7,14,19)") 'solo muestra tipo material y herramientas
ddlAlmacenAdd.DataBind()
End Sub
Protected Sub CargaFuncionariosEmpleados()
'Cargar los FUncionarios Empleados que tengan saldo
Dim objGastosXComprobar As New ClsMovimientos
Dim dtFE As New DataTable
If objGastosXComprobar.GetEgresosSinComprobarPersonal(UsuarioActual.CveEmpresa) Then
'TRATAR DE HACERLO CON c
dtFE.Columns.Add("CvePersonal", GetType(Integer))
dtFE.Columns.Add("NombreCompleto", GetType(String))
dtFE.Columns.Add("Saldo", GetType(Double))
'dtFE.Columns.Add("CveIE", GetType(Integer))
DtFuncionarios = objGastosXComprobar.DtResultados.FiltraParametros("CvePersonal > 0 ") 'objGastosXComprobar.DtResultados.FiltraParametros("CvePersonal > 0 AND Saldo > 0 ") ' saco los egresos sin comprobar de funcionarios y empleados
For Each Row As DataRow In objGastosXComprobar.DtResultados.FiltraParametros("CvePersonal > 0 ", "NombreCompleto").Rows ' saco los totalizadores
Dim RowFE As DataRow = Nothing
RowFE = dtFE.NewRow()
RowFE("CvePersonal") = Row("CvePersonal").ToString.ToEntero
RowFE("NombreCompleto") = String.Format("{0} - ${1}", Row("NombreCompleto").ToString.Trim, Row("Saldo").ToString.FormatoNumero(2))
RowFE("Saldo") = Row("Saldo").ToString.ToDouble
dtFE.Rows.Add(RowFE)
Next
' DtFuncionarios = dtFE
'For Each Row As DataRow In objGastosXComprobar.DtResultados.FiltraParametros("CvePersonal > 0 AND FechaDocumento IS NOT NULL").Rows
' ArrIE.Add(New Anticipos With {.CveIE = Row("CveIE").ToString.ToEntero, .Importe = Row("Saldo").ToString.ToDouble, .CvePersonal = Row("CvePersonal").ToString.ToEntero})
'Next
End If
objGastosXComprobar.Dispose()
DdlFuncionarioEmpleado.DataSource = dtFE.FiltraParametros("", "NombreCompleto")
DdlFuncionarioEmpleado.DataBind()
DdlFuncionarioEmpleado.Items.Insert(0, New ListItem("Seleccione Funcionario Empleado", "-1"))
'UPCondicionesPago.Update()
UpContado.Update()
End Sub
Protected Sub CargaDeudores()
'Cargar los FUncionarios Empleados que tengan saldo
Dim Deudores As New ClsMovimientos
If RBLTipoDeudor.SelectedValue.ToEntero = 1 Then
If Deudores.GetDeudoresSaldos(-1, UsuarioActual.CveEmpresa) Then
DtDeudores = Deudores.DtResultados.FiltraParametros("CveProveedor > 0")
DdlDeudor.DataSource = DtDeudores
DdlDeudor.DataBind()
DdlDeudor.Items.Insert(0, New ListItem("Seleccione Deudor", "-1"))
UpContado.Update()
End If
Else
If Deudores.GetDeudoresComisionesSaldos(UsuarioActual.CveEmpresa) Then
DtDeudores = Deudores.DtResultados.FiltraParametros("CveProveedor > 0")
DdlDeudor.DataSource = DtDeudores
DdlDeudor.DataBind()
DdlDeudor.Items.Insert(0, New ListItem("Seleccione Deudor", "-1"))
UpContado.Update()
End If
End If
Deudores.Dispose()
End Sub
Private Sub CreaTmpAcarreos()
tDTAcarreos = New DataTable
tDTAcarreos.Columns.Add("CvePreEstimacion", GetType(Integer))
tDTAcarreos.Columns.Add("Importe", GetType(Double))
End Sub
Protected Sub CargaAcreedores()
Dim ObjMov As New ClsMovimientos
If ObjMov.GetAcreedoresSaldos(-1, UsuarioActual.CveEmpresa) Then
DtAcreedores = ObjMov.DtResultados.FiltraParametros("CveProveedor > 0")
DdlAcreedor.DataSource = DtAcreedores
DdlAcreedor.DataBind()
DdlAcreedor.Items.Insert(0, New ListItem("Seleccione Acreedor", "-1"))
UpContado.Update()
End If
ObjMov.Dispose()
End Sub
Private Sub CargaCreditos()
Dim Cred As New ClsBancos
Dim Dt As DataTable = Nothing
Dim DtD As DataTable = Nothing
If Cred.GetCreditos(-1, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then
Dt = Cred.DtResultados.FiltraParametros("CveCredito > 0 AND CveTipoCredito IN (4,5)")
If Dt.Rows.Count > 0 AndAlso Cred.GetCreditosDetalle(Dt.Rows(0)("CveCredito").ToString.ToEntero, -1) Then
DtD = Cred.DtResultados.FiltraParametros("Estatus = 2 AND CveIE IS NOT NULL")
End If
End If
Cred.Dispose()
If DdlTipoCredito.SelectedValue.ToEntero = 1 Then
Dt = Dt.FiltraParametros("CveCompraFactura IS NULL")
End If
DdlCredito.DataSource = Dt.FiltraParametros("", DistinctColumns:={"CveCredito", "ReferenciaImporte"})
DdlCredito.DataBind()
DdlCredito.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlCreditoDetalle.DataSource = DtD
DdlCreditoDetalle.DataBind()
DdlCreditoDetalle.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Private Sub CargaCreditosDetalle(CveCredito As Integer)
Dim Cred As New ClsBancos
Dim DtD As DataTable = Nothing
If Cred.GetCreditosDetalle(CveCredito, -1) Then
DtD = Cred.DtResultados.FiltraParametros("Estatus = 2")
End If
Cred.Dispose()
DdlCreditoDetalle.DataSource = DtD
DdlCreditoDetalle.DataBind()
DdlCreditoDetalle.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Private Sub CargaProveedor(CveProveedor As Integer, RFC As String, Optional RecargaCombo As Boolean = True)
Dim ObjProveedor As New ClsCompProveedores()
If ObjProveedor.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, CveProveedor, "-1", "-1", "-1", "-1", RFC, "-1", "-1", -1, UsuarioActual.CveEmpresa) Then
If ObjProveedor.DtResultados.Rows.Count > 0 Then
If RecargaCombo Then DdlProveedor.DataSource = ObjProveedor.DtResultados : DdlProveedor.DataBind()
ChkConsignacion.Enabled = True
ViewState("CveProveedor") = ObjProveedor.CveProveedor
ViewState("CveTipoProveedor") = ObjProveedor.CveTipoProveedor
'Conta ContPAQ
ViewState("CtaProveedor") = ObjProveedor.IdCtaContProveedores
ViewState("CtaProveedorAnticipos") = ObjProveedor.IdCtaContAnticipos
ViewState("CtaProveedorAnticiposExtranjera") = ObjProveedor.IdCtaContAnticiposExtranjera
ViewState("CtaProveedorAnticiposComplementaria") = ObjProveedor.IdCtaContAnticiposComplementaria
ViewState("CtaProveedorDeudores") = ObjProveedor.IdCtaContDeudor
ViewState("CtaProveedorAcreedores") = ObjProveedor.IdCtaContAcreedor
ViewState("CtaProveedorRetISR") = ObjProveedor.IdCtaContRetISR
ViewState("CtaProveedorRetIVA") = ObjProveedor.IdCtaContRetIVA
ViewState("CtaProveedorExtranjera") = ObjProveedor.IdCtaContProveedoresExtranjera
ViewState("CtaProveedorComplementaria") = ObjProveedor.IdCtaContProveedoresComplementaria
ViewState("IdCtaContDocsXPagar") = ObjProveedor.IdCtaContDocsXPagar
'Conta SIG
ViewState("CveCuentaProveedor") = ObjProveedor.CveCuentaProveedores
ViewState("CveCuentaProveedorAnticipos") = ObjProveedor.CveCuentaAnticipos
ViewState("CveCuentaProveedorAnticiposExtranjera") = ObjProveedor.CveCuentaAnticiposExtranjera
ViewState("CveCuentaProveedorAnticiposComplementaria") = ObjProveedor.CveCuentaAnticiposComplementaria
ViewState("CveCuentaProveedorDeudores") = ObjProveedor.CveCuentaDeudor
ViewState("CveCuentaProveedorAcreedores") = ObjProveedor.CveCuentaAcreedor
ViewState("CveCuentaProveedorRetISR") = ObjProveedor.CveCuentaRetISR
ViewState("CveCuentaProveedorRetIVA") = ObjProveedor.CveCuentaRetIVA
ViewState("CveCuentaProveedorExtranjera") = ObjProveedor.CveCuentaProveedoresExtranjera
ViewState("CveCuentaProveedorComplementaria") = ObjProveedor.CveCuentaProveedoresComplementaria
ViewState("NombreProveedor") = ObjProveedor.RazonSocial
HdnCveProveedor.Value = ObjProveedor.CveProveedor.ToString
If ObjProveedor.EditarFolioDuplicado Then
TxtFolio.Enabled = True
TxtSerie.Enabled = True
End If
TxtCodigo.Text = ObjProveedor.Codigo
LblRFC.Text = String.Format("<a class=""Texto"" href=""/Compras/Proveedores.aspx?CveProveedor={0}"">{1}</a>", Me.CveProveedor, ObjProveedor.RFC)
HplProveedor.Text = ObjProveedor.NombreComercial : HplProveedor.NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", Me.CveProveedor)
DdlProveedor.SelectedValue = ObjProveedor.CveProveedor.ToString
LblDiasCredito.Text = ObjProveedor.PlazoPago.ToString
LblLimiteCredito.Text = ObjProveedor.LimiteCredito.FormatoNumero
LblCreditoDisponible.Text = ObjProveedor.LimiteCredito.FormatoNumero
If Not CveCompra > 0 Then '[IPP] SI YA ESTA REGISTRADA LOS VALORES SE CARGAN EN EL CARGACOMPRA()
'DF 11-04-17
Dim dtprovsuc As DataTable = GlobalDTProveedorSucursales(ObjProveedor.CveProveedor)
If dtprovsuc IsNot Nothing AndAlso dtprovsuc.Rows.Count > 0 Then
RowProveedorSucursal.Visible = True
DdlProveedorSucursal.Items.Clear()
DdlProveedorSucursal.DataSource = dtprovsuc
DdlProveedorSucursal.DataBind()
DdlProveedorSucursal.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlProveedorSucursal.Items.Insert(0, New ListItem("Matriz", "0"))
'si tiene una serie cargada, sugiere la sucursal
If TxtSerie.Text.Trim <> "" Then
DdlProveedorSucursal.SelectedValueExist(dtprovsuc.FiltroPrimeroValor("CveProveedorSucursal", $"Serie LIKE '%{TxtSerie.Text.Trim}%'").ToString())
End If
Else
RowProveedorSucursal.Visible = False
DdlProveedorSucursal.Items.Clear()
DdlProveedorSucursal.Items.Insert(0, New ListItem("N/A", "-1"))
DdlProveedorSucursal.DataBind()
End If
End If
If CveCompra <= 0 AndAlso CveFactura <= 0 Then 'si se está cargando una factura o compra no se carga
'LblRetIVA.Text = ObjProveedor.RetIVA.ToString.FormatoNumero(5)
'LblRetISR.Text = ObjProveedor.RetISR.ToString.FormatoNumero(5)
If ObjProveedor.RFC = "XAXX010101000" Then ' RFC Generico
'cuando se esta dando de alta de nueva la compra, se obtiene el folio siguiente de no deducibles
Dim ObjComp As New ClsCompras
TxtFolio.Text = ObjComp.GetSiguienteFolio(ObjProveedor.CveProveedor, TxtSerie.Text).ToString
ObjComp.Dispose()
End If
End If
ViewState("IVA") = ObjProveedor.IVA
HdnProveedorIVA.Value = ObjProveedor.IVA.ToString
ViewState("IdCtaContProveedores") = ObjProveedor.IdCtaContProveedores
ViewState("IdCtaContAnticipos") = ObjProveedor.IdCtaContAnticipos
ViewState("IdCtaProveedorDeudores") = ObjProveedor.IdCtaContDeudor
ViewState("IdCtaProveedorAcreedores") = ObjProveedor.IdCtaContAcreedor
ViewState("IdCtaContRetIVA") = ObjProveedor.IdCtaContRetIVA
ViewState("IdCtaContRetISR") = ObjProveedor.IdCtaContRetISR
If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso ObjProveedor.IdCtaContProveedores < 1 Then
Alert("El Proveedor seleccionado no tiene cuenta contable asignada.", TipoMensaje.MsgAdvertencia)
End If
ViewState("CveProveedor") = ObjProveedor.CveProveedor
HdnCveProveedor.Value = ObjProveedor.CveProveedor.ToString
TxtFechaPago.Text = (TxtFecha.Text.ToDate.AddDays(LblDiasCredito.Text.ToEntero)).ToShortDateString
RFCProv = ObjProveedor.RFC
CargaRetIVAConcepto(True)
CargaRetISRConcepto(True)
If ObjProveedor.DIOTCveTipoOperacion = 1 Then '03 - Prestación de Servicios Profesionales
DdlRetIVAConcepto.SelectedValueExist("1")
DdlRetISRConcepto.SelectedValueExist("1") ' honorarios
ElseIf ObjProveedor.DIOTCveTipoOperacion = 2 Then ' 06 - Arrendamiento de inmuebles
DdlRetIVAConcepto.SelectedValueExist("4")
DdlRetISRConcepto.SelectedValueExist("2") ' arrendamiento
ElseIf ObjProveedor.DIOTCveTipoOperacion = 3 Then ' 85 - Otros
DdlRetIVAConcepto.SelectedValueExist("2") ' flete pf
DdlRetIVAConcepto.SelectedValueExist("3") ' fletes pm
DdlRetISRConcepto.SelectedValueExist("1") ' honorarios
End If
LbAgregar.Enabled = True
UpPSS.Update()
UpPS.Update()
UpParametros.Update()
UPCondicionesPago.Update()
'si tiene el habiltiado el módulo de Contratos
'checo si tiene estimaciones
'CargaDatosEstimaciones(ObjProveedor.CveProveedor)
ImgBtnBuscarOC.OnClientClick = String.Format("AbrirVentana('/OC/PopUpBuscarReq.aspx?V=VOCCOMP&P={0}&T={1}&Masterimpoup=true',1000,600,'S'); return false;", ObjProveedor.CveProveedor, DdlTipoComprobante.SelectedValue)
CargaAnticipos(ObjProveedor.CveProveedor) : UpAnticipos.Update()
If UsuarioActual.Empresa.UsaAC Then
If (TxtRetIVA.Text.ToDouble > 0 And Not ObjProveedor.IdCtaContRetIVA > 0) Or (TxtRetISR.Text.ToDouble > 0 And Not ObjProveedor.IdCtaContRetISR > 0) Then '
ImgBtnBuscarOC.Visible = False
TxtOC.Enabled = False
BtnGuardar.Visible = False
Alert("El proveedor no tiene registrada cuentas contables de retenciones. Debe asignar las cuentas en el registro del proveedor.", TipoMensaje.MsgAdvertencia)
DivRestriccionAdvertencia.Visible = True
LtRestriccionAdvertencia.Text = "El proveedor no tiene registrada cuentas contables de retenciones."
End If
End If
CargaGvAcarreos(ViewState("CveProveedor").ToString.ToEntero)
'MONEDA PREFERENTE
If CveCompra <= 0 Then
If CveFactura <= 0 Then
DdlMoneda.SelectedValueExist(ObjProveedor.CveMonedaPreferente)
End If
CambiaMoneda(False)
End If
If CveProveedor > 0 Then
Dim ObjSAT As New ClsSAT
Dim RFCRequest As String = ObjProveedor.RFC
If ObjSAT.GetListado69B(2, UsuarioActual.CveEmpresa, RFCRequest) Then
If ObjSAT.DtResultados.Rows.Count > 0 Then
Dim Estatus As String = ObjSAT.DtResultados.Rows(0)("Situacion").ToString
BtnGuardar.Enabled = False
UpParametros.Update()
Alert($"El RFC del proveedor se encuentra en estado <b>{Estatus}</b> en el Listado EFOS (69B) del SAT", TipoMensaje.MsgAdvertencia)
System.Threading.Thread.Sleep(5)
End If
End If
ObjSAT.Dispose()
End If
Else
Alert("El Proveedor solicitado no existe, por favor intente de nuevo.", TipoMensaje.MsgAdvertencia)
End If
Else
Alert("Ocurrió un error al consultar el proveedor.", TipoMensaje.MsgError)
End If
If UsuarioActual.Empresa.Funcionalidad(560) = "1" Then
If ObjProveedor.GetProveedoresEvaluacionPediente(Me.CveProveedor, UsuarioActual.CveEmpresa) Then
If ObjProveedor.DtResultados.Rows.Count > 0 Then
Me.RequiereEvaluacion = ObjProveedor.DtResultados.Rows(0)("RequiereEvaluacion").ToString() = "1"
Me.CveUsuarioEvaluador = ObjProveedor.DtResultados.Rows(0)("CveUsuarioEvaluador").ToString().ToEntero()
End If
End If
End If
ObjProveedor.Dispose()
End Sub
Private Sub CargaAnticipos(CveProveedor As Integer, Optional FiltroTipo As String = "-1")
Dim ObjMovtos As New ClsMovimientos()
If ObjMovtos.GetAnticiposProveedor(CveProveedor, -1, CveMoneda:=DdlMoneda.SelectedValue.ToEntero, SelectTop:=-1, TipoDocto:=FiltroTipo) AndAlso ObjMovtos.DtResultados.Rows.Count > 0 Then
GVAnticipos.DataSource = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'Act'")
If ObjMovtos.DtResultados.FiltraParametros("Saldo > 0").Rows.Count > 0 Then
BtnAceptarAnticipos.Enabled = True
If DdlTipoComprobante.SelectedValue = "Fac" Then ImgAnticiposPendientes.Visible = True
End If
Else
GVAnticipos.DataSource = Nothing
End If
ObjMovtos.Dispose()
GVAnticipos.DataBind()
End Sub
Private Sub CargaTiposAF()
ViewState("TmpDTTiposAF") = GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa)
Dim Row As DataRow = DirectCast(ViewState("TmpDTTiposAF"), DataTable).NewRow()
Row("CveTipoActivoFijo") = -1 : Row("TipoActivoFijo") = "Seleccione"
DirectCast(ViewState("TmpDTTiposAF"), DataTable).Rows.InsertAt(Row, 0)
End Sub
Public Function isWhitFamily() As Boolean
Return UsuarioActual.CveEmpresa = 66
End Function
Private Sub CargaPSAlias()
DdlPSAlias2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
If UsuarioActual.CveEmpresa = 66 Then
DdlPSAlias2.ddlWS.Attributes.Add("data-subfamilia", "-1")
DdlPSAlias2.ddlWS.Attributes.Add("data-fueporxml", "0")
'SOLO CUANDO SEA FACTURA DE INGRESOS
If DdlTipoComprobante.SelectedValue = "Fac" Then
DdlPSAlias2.ddlWS.Attributes.Add("data-pagina", "Compras")
Else
DdlPSAlias2.ddlWS.Attributes.Add("data-pagina", "Compras2")
End If
End If
If Not DdlPSAlias2.UsaWebService AndAlso CType(DdlPSAlias2.DataSource, DataTable) Is Nothing Then
DdlPSAlias2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa)
DdlPSAlias2.DataBind()
End If
End Sub
Private Sub CargarUM(CvePS As Integer, ob As DropDownList)
Dim ObjUM As New ClsProductosServicios()
If ObjUM.GetPSEquivalencias(CvePS, UsuarioActual.CveEmpresa) Then
ViewState("DTUM") = ObjUM.DtResultados
ob.Items.Clear()
ob.DataSource = DTUM
ob.DataBind()
End If
ObjUM.Dispose()
End Sub
Private Sub CargaGridTarjetas()
Dim ObjCreditos As New ClsBancos
ObjCreditos.GetTarjetasCreditos(DdlCuenta.SelectedValue.ToEntero)
DdlTarjeta.Items.Clear()
DdlTarjeta.DataSource = ObjCreditos.DtResultados
DdlTarjeta.DataBind()
DdlTarjeta.Items.Insert(0, New ListItem("Seleccione", "-1"))
ObjCreditos.Dispose()
DivTarjeta.Visible = True
End Sub
Private Sub CargaConceptosXML(XMLDoc As XmlDocument)
Dim i As Integer = 0
Dim Total As Decimal = 0
Dim PU As Decimal = 0
Dim Descuento As Double = 0
Dim CveUM As Integer = 0
Dim UMM As String = "No Aplica"
Dim tCvePS As Integer = 0
Dim TipoPS As Integer = 0
Dim tCveClasif As Integer = -1
Dim Clasif As String = "Sin Clasificación"
Dim tPSCodigo As String = "-"
Dim tPSDescripcion As String = "-"
Dim PSS As String = ""
Dim Obs As String = ""
Dim SubTotalTemp = 0.0D
Dim IVA As Double = 0
Dim IEPS As Double = 0
Dim RetISR As Double = 0
Dim RetIVA As Double = 0
Dim PorcentajeIVA As Double = 0
Dim PorcentajeIEPS As Double = 0
Dim PorcentajeRetISR As Double = 0
Dim PorcentajeRetIVA As Double = 0
Dim DtTemporalGuardados = New DataTable
DtTemporalGuardados.Columns.Add("Contador", GetType(Integer))
DtTemporalGuardados.Columns.Add("Tipo", GetType(Integer))
'GLOBALS
Dim DtUM = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).AsEnumerable
Dim DtUMAlias = GlobalDTUnidadesMedidaAlias(UsuarioActual.CveEmpresa).AsEnumerable
Dim DtPS = GlobalDTPS(UsuarioActual.CveEmpresa).AsEnumerable
Dim DtPSAlias = GlobalDTProductosServiciosAlias(UsuarioActual.CveEmpresa).AsEnumerable
''AGREGA EN TABLA TEMPORAL
'Dim DtPSTemp = TmpDT.Clone
'Dim Row As DataRow = Nothing
Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2"
namespaces.AddNamespace(Prefijo, cfdVer)
namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
Dim nodeconcepto As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces)
If nodeconcepto IsNot Nothing AndAlso nodeconcepto.ChildNodes.Count > 0 Then
Dim nodosConceptos As XmlNodeList = nodeconcepto.SelectNodes(String.Format("//{0}:Concepto", Prefijo), namespaces)
For Each node As XmlNode In nodosConceptos
' INICIALIZA VALORES
PU = 0
Descuento = 0
CveUM = 0
UMM = "No Aplica"
tCvePS = 0
TipoPS = 0
tCveClasif = -1
Clasif = "Sin Clasificación"
tPSCodigo = "-"
tPSDescripcion = "-"
PSS = ""
Obs = ""
Total = 0
IVA = 0
IEPS = 0
RetISR = 0
RetIVA = 0
PorcentajeIVA = 0
PorcentajeIEPS = 0
PorcentajeRetISR = 0
PorcentajeRetIVA = 0
'CARGA NODO ACTUAL
' node = XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i)
'CARGA PU
PU = ValorXML(node, "valorUnitario").ToDecimal
'SI PU >= TOTAL AND CANTIDAD > 0 : PU / CANTIDAD, por si tiene descuento en el importe y el valor unitario es mayor, lo ajusta
If ValorXML(node, "cantidad").ToDecimal > 0 AndAlso ValorXML(node, "valorUnitario").ToDecimal >= (ValorXML(node, "importe").ToDecimal / ValorXML(node, "cantidad").ToDecimal) Then
PU = ValorXML(node, "importe").ToDecimal / ValorXML(node, "cantidad").ToDecimal
End If
If ValorXML(node, "cantidad").ToDecimal > 0 AndAlso ValorXML(node, "valorUnitario").ToDouble <= 0 And ValorXML(node, "importe").ToDouble > 0 Then
PU = ValorXML(node, "importe").ToDecimal / ValorXML(node, "cantidad").ToDecimal
End If
'OBTIENE DESCUENTO
If ValorXML(node, "descuento") IsNot Nothing Then Descuento = ValorXML(node, "descuento").Trim.ToDouble
'OBTIENE TOTAL
If ValorXML(node, "importe") IsNot Nothing Then Total = ValorXML(node, "importe").Trim.ToDecimal
'OBTIENE SUBTOTAL
SubTotalTemp += If(Total > 0, Total, PU * ValorXML(node, "cantidad").ToDecimal)
'OBTIENE UM
If ValorXML(node, "unidad") IsNot Nothing Then UMM = ValorXML(node, "unidad").Trim
'BUSCA UM EN CATALOGO
UMM = UMM.ToUpper.Replace(".", "").Replace(",", "")
Dim fUM = (From u In DtUM
Where String.Compare(u!UnidadMedida.ToString.ToUpper.Trim, UMM, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) = 0 OrElse
String.Compare(u!Abreviatura.ToString.ToUpper.Trim, UMM, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) = 0
Select CveUnidadMedida = u!CveUnidadMedida, UnidadMedida = u!UnidadMedida).FirstOrDefault()
If fUM IsNot Nothing AndAlso fUM.CveUnidadMedida.ToString.ToEntero > 0 Then
CveUM = fUM.CveUnidadMedida.ToString.ToEntero
UMM = fUM.UnidadMedida.ToString
Else
'BUSCA UM EN ALIAS
Dim fUMAlias = (From u In DtUMAlias
Where String.Compare(u!UnidadMedidaAlias.ToString.ToUpper.Trim, UMM, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) = 0
Select u!CveUnidadMedida, u!UnidadMedida).FirstOrDefault()
If fUMAlias IsNot Nothing Then
CveUM = fUMAlias.CveUnidadMedida.ToString.ToEntero
UMM = fUMAlias.UnidadMedida.ToString
End If
End If
'se le puso una condicion de que ignorara los acentos, porque en la bd, marcaria error porque no distingue acentos
'CONCEPTO PRUEBA "TRABAJOS DE CONSTRUCCION", RM/Compras/Compras.aspx?CveFactura=13402&RFC=ECO061206QW7
'' u!PS.ToString.ToUpper.Trim = PSS
'BUSCA PS
PSS = ValorXML(node, "descripcion").ToUpper.Trim.Replace(vbCrLf, " ").Replace(vbLf, " ").Replace("'", "''").Replace(" ", " ").Replace("<22>", "")
If PSS.Length > 844 Then
PSS = PSS.Substring(0, 844) '844,por ser el numero de caracteres aceptados en la columna de la BD
End If
tPSCodigo = PSS
'BUSCA PS EN CATALOGO
Dim fPS = (From u In DtPS
Where String.Compare(u!PS.ToString.ToUpper.Trim, PSS, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) = 0
Select u!CvePS, u!CveClasificacion, u!Clasificacion, u!CveTipoPS, u!PSCodigo).FirstOrDefault()
If fPS IsNot Nothing Then
PSS = fPS.PSCodigo.ToString
tCvePS = fPS.CvePS.ToString.ToEntero
TipoPS = fPS.CveTipoPS.ToString.ToEntero
tCveClasif = fPS.CveClasificacion.ToString.ToEntero
Clasif = fPS.Clasificacion.ToString
tPSCodigo = fPS.PSCodigo.ToString
Else
'BUSCA PS EN ALIAS
Dim fPSAlias = (From u In DtPSAlias
Where String.Compare(u!PSAlias.ToString.ToUpper.Trim, PSS, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) = 0
Select u!CvePS, u!PS, u!CveClasificacion, u!Clasificacion, u!CveTipoPS, u!PSCodigo).FirstOrDefault()
If fPSAlias IsNot Nothing Then
Obs = PSS
PSS = fPSAlias.PS.ToString
tCvePS = fPSAlias.CvePS.ToString.ToEntero
TipoPS = fPSAlias.CveTipoPS.ToString.ToEntero
tCveClasif = fPSAlias.CveClasificacion.ToString.ToEntero
Clasif = fPSAlias.Clasificacion.ToString
tPSCodigo = fPSAlias.PSCodigo.ToString
End If
End If
'PARA GLUYAS
If UsuarioActual.CveEmpresa = 66 Then
tPSCodigo = String.Format("{1} - {0}", ValorXML(node, "descripcion").ToUpper.Trim.Replace(vbCrLf, " ").Replace(vbLf, " ").Replace("'", "''"), ValorXML(node, "noIdentificacion").Trim)
End If
If Version = "3.3" Then
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
'OBTENER TRASLADOS POR DETALLES
Dim ContadorTraslado = 0
Dim nodosConceptosTraslado As XmlNodeList = node.SelectNodes(String.Format("//{0}:Impuestos/{0}:Traslados/{0}:Traslado", Prefijo), namespaces)
For Each nodeTraslado As XmlNode In nodosConceptosTraslado
If Not DtTemporalGuardados.FiltraParametros($"Contador = {ContadorTraslado} AND Tipo = 1").Rows.Count > 0 Then
If ValorXML(nodeTraslado, "TasaOCuota").Trim.ToDecimal > 0 And ValorXML(nodeTraslado, "Base").Trim.ToDecimal = Total Then
If ValorXML(nodeTraslado, "Impuesto") = "002" Then
IVA = ValorXML(nodeTraslado, "Importe").Trim.ToDecimal
PorcentajeIVA = ValorXML(nodeTraslado, "TasaOCuota").Trim.ToDecimal
Dim Dr As DataRow
Dr = DtTemporalGuardados.NewRow()
Dr("Contador") = ContadorTraslado
Dr("Tipo") = 1
DtTemporalGuardados.Rows.Add(Dr)
DtTemporalGuardados.AcceptChanges()
Exit For
ElseIf ValorXML(nodeTraslado, "Impuesto") = "003" Then
IEPS = ValorXML(nodeTraslado, "Importe").Trim.ToDecimal
PorcentajeIEPS = ValorXML(nodeTraslado, "TasaOCuota").Trim.ToDecimal
Dim Dr As DataRow
Dr = DtTemporalGuardados.NewRow()
Dr("Contador") = ContadorTraslado
Dr("Tipo") = 1
DtTemporalGuardados.Rows.Add(Dr)
DtTemporalGuardados.AcceptChanges()
Exit For
End If
End If
End If
ContadorTraslado += 1
Next
'OBTENER RETENCIONES POR DETALLES
Dim ContadorRetenciones = 0
Dim nodosConceptosRetenciones As XmlNodeList = node.SelectNodes(String.Format("//{0}:Impuestos/{0}:Retenciones/{0}:Retencion", Prefijo), namespaces)
For Each nodeRetencion As XmlNode In nodosConceptosRetenciones
If Not DtTemporalGuardados.FiltraParametros($"Contador = {ContadorRetenciones} AND Tipo = 2").Rows.Count > 0 Then
If ValorXML(nodeRetencion, "TasaOCuota").Trim.ToDecimal > 0 And ValorXML(nodeRetencion, "Base").Trim.ToDecimal = Total Then
If ValorXML(nodeRetencion, "Impuesto".Trim) = "001" Then
RetISR = ValorXML(nodeRetencion, "Importe").Trim.ToDecimal
PorcentajeRetISR = ValorXML(nodeRetencion, "TasaOCuota").Trim.ToDecimal
Dim Dr As DataRow
Dr = DtTemporalGuardados.NewRow()
Dr("Contador") = ContadorRetenciones
Dr("Tipo") = 2
DtTemporalGuardados.Rows.Add(Dr)
DtTemporalGuardados.AcceptChanges()
Exit For
ElseIf ValorXML(nodeRetencion, "Impuesto") = "002" Then
RetIVA = ValorXML(nodeRetencion, "Importe").Trim.ToDecimal
PorcentajeRetIVA = ValorXML(nodeRetencion, "TasaOCuota").Trim.ToDecimal
Dim Dr As DataRow
Dr = DtTemporalGuardados.NewRow()
Dr("Contador") = ContadorRetenciones
Dr("Tipo") = 2
DtTemporalGuardados.Rows.Add(Dr)
DtTemporalGuardados.AcceptChanges()
Exit For
End If
End If
End If
ContadorRetenciones += 1
Next
End If
End If
If Version = "3.2" Then
Try
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
Dim ContadorTraslado = 0
Dim nodosConceptosTraslado As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Impuestos/{0}:Traslados/{0}:Traslado", Prefijo), namespaces)
For Each nodeTraslado As XmlNode In nodosConceptosTraslado
If ValorXML(nodeTraslado, "tasa").Trim.ToDecimal > 0 And ValorXML(nodeTraslado, "impuesto").Trim = "IVA" Then
PorcentajeIVA = ValorXML(nodeTraslado, "tasa").Trim.ToDecimal
Alert($"{PorcentajeIVA}")
End If
Next
End If
Catch ex As Exception
End Try
End If
'' AGREGA PS
'AGREGA A TMPDT
AddPS(ValorXML(node, "cantidad").ToDouble, CveUM, UMM, tCveClasif, Clasif, tCvePS, PSS, TipoPS, "-1", "SE", "SE", "-1", Obs, PU, Total, IVA, RetIVA, RetISR, IEPS, 0, Descuento, PSCodigo:=tPSCodigo, TCalculaTotales:=False, CveSATPS:=ValorXML(node, "ClaveProdServ").ToEntero(), CargaXml:=True, PorcentajeIVA:=PorcentajeIVA, PorcentajeRetIVA:=PorcentajeRetIVA, PorcentajeRetISR:=PorcentajeRetISR, PorcentajeIEPS:=PorcentajeIEPS)
Next
End If
AddPS2(False)
If UsuarioActual.Empresa.UsaAC Then
CompruebaAgregar()
End If
If isAlmacenistaGluyas() Then
BtnGuardar.Visible = False
AlmacenCambiaPS.Visible = True
End If
SubTotalConceptos = Math.Round(SubTotalTemp, 2)
'TmpDT = DtPSTemp.Copy
'DtPSTemp.Dispose()
End Sub
#End Region
#Region "Vinculacion De Servcios"
Private Function isAdminObraGluyas() As Boolean
Return (UsuarioActual.CveRol = 1047 And UsuarioActual.CveEmpresa = 66)
End Function
Private Sub cargaddlVinculacionServcios()
If isAdminObraGluyas() Then
TabVinculacionServicios.Visible = True
'Dim productos As New ClsProductosServicios
'If productos.GetPS(-1, -1, UsuarioActual.CveEmpresa) Then
' PSDTRemplazo = productos.DtResultados.FiltraParametros("CveTipoPS=2", "PS")
'End If
'productos.Dispose()
GVVinculacionServicios.DataSource = TmpDT
GVVinculacionServicios.DataBind()
End If
End Sub
Protected Sub GVVinculacionServicios_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVVinculacionServicios.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim dt As DataTable = Nothing
dt = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS=2", "PS")
e.Row.FCDropDownList("Ddlnewps").DataSource = dt 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
e.Row.FCDropDownList("Ddlnewps").DataBind()
e.Row.FCDropDownList("Ddlnewps").Items.Insert(0, New ListItem("Seleccione", "-1"))
dt.Dispose()
End If
End Sub
#End Region
#Region "BTN'S"
Protected Sub BtnVincularServicios_Click(sender As Object, e As EventArgs) Handles BtnVincularServicios.Click
Dim correcto As Boolean = True
Dim x As Integer = 0
'Dim buid As New StringBuilder
For Each Dr As DataRow In TmpDT.Rows
Dim newps As Integer = GVVinculacionServicios.Rows(x).FCDropDownList("Ddlnewps").SelectedValue.ToEntero
If newps > 0 Then
'buid.Append(String.Format("{0} ---> {1},", Dr("CvePS").ToString, newps))
Dr("CvePS") = newps
'buid.Append(String.Format("{0} ---> {1},</br>", Dr("CvePS").ToString, newps))
Else 'limpio el valor para que no truene en linq mas abajo
correcto = False
Alert("Favor de vincular todos los servicios", TipoMensaje.MsgAdvertencia)
Exit For
End If
x = x + 1
Next
x = 0
For Each Dr As DataRow In GVVinculacionServicios.Rows
Dim newps As Integer = GVVinculacionServicios.Rows(x).FCDropDownList("Ddlnewps").SelectedValue.ToEntero
If newps > 0 Then
'buid.Append(String.Format("{0} ---> {1},", Dr("CvePS").ToString, newps))
Dr("CvePS") = newps
'buid.Append(String.Format("{0} ---> {1},</br>", Dr("CvePS").ToString, newps))
Else 'limpio el valor para que no truene en linq mas abajo
correcto = False
Alert("Favor de vincular todos los servicios", TipoMensaje.MsgAdvertencia)
Exit For
End If
x = x + 1
Next
TmpDT.AcceptChanges()
'Alert(buid.ToString)
If correcto Then
If Not CierrePeriodo Then
BtnGuardar.Visible = True
End If
UpFacturar.Update()
End If
End Sub
Protected Sub BtnCargarProveedores_Click(sender As Object, e As System.EventArgs) Handles BtnCargarProveedores.Click
DdlProveedor.CssClass += " select2me"
DdlProveedor.AutoPostBack = True
DdlProveedor.Items.Clear()
DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
'Dim ObjProveedor As New ClsCompProveedores
'If ObjProveedor.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, -1, "-1", "-1", "-1", "-1", "-1", "-1", "-1", UsuarioActual.CveEmpresa) Then
'DdlProveedor.DataSource = ObjProveedor.DtResultados
'End If
DdlProveedor.DataBind()
DdlProveedor.Items.Insert(0, New ListItem("Seleccione el Proveedor", "-1"))
DdlProveedor.Attributes.Remove("onclick")
'RegistraScript("$('#C_DdlProveedor').select2('open');")
End Sub
Protected Sub BtnBuscarProveedor_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnBuscarProveedor.Click
ViewState("CveProveedor") = HdnCveProveedor.Value.ToEntero
CargaProveedor(HdnCveProveedor.Value.ToEntero, "-1")
If DdlPS.SelectedValue IsNot Nothing AndAlso DdlPS.SelectedValue.ToEntero > 0 Then
DdlPS_SelectedIndexChanged(sender, e)
DdlPS.Focus()
Else
TxtCantidad.Focus()
End If
End Sub
Protected Sub BtnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click
'------------------INICIA VALIDACIONES------------------
Dim EstatusCredito As Integer = 0
'Credito Multiple
If RBLPago.SelectedValue.ToEntero = 4 Then
Dim DifCreCompra As Decimal = 0
Dim TotalCreditos As Decimal = 0
Dim MensualidadMultipleTotal As Decimal = 0
Dim CveUltimoCreditoDetalleInterno As Integer
For Each GvRow As GridViewRow In GvCreditos.Rows
Dim CapitalMiltiple As Decimal = GvRow.FCTextBox("TxtCapital").Text.ToDecimal
Dim InteresMiltiple As Decimal = GvRow.FCTextBox("TxtInteres").Text.ToDecimal
Dim AmbosMiltiple As Decimal = GvRow.FCTextBox("TxtAmbos").Text.ToDecimal
Dim MensualidadMultiple As Decimal = GvRow.DataKey("Mensualidad").ToDecimal
If CapitalMiltiple > 0 Or InteresMiltiple > 0 Then
TotalCreditos = TotalCreditos + CapitalMiltiple + InteresMiltiple
MensualidadMultipleTotal = MensualidadMultipleTotal + MensualidadMultiple
CveUltimoCreditoDetalleInterno = GvRow.DataKey("CveCreditoDetalle").ToEntero
ElseIf AmbosMiltiple > 0 Then
TotalCreditos = TotalCreditos + AmbosMiltiple
MensualidadMultipleTotal = MensualidadMultipleTotal + MensualidadMultiple
CveUltimoCreditoDetalleInterno = GvRow.DataKey("CveCreditoDetalle").ToEntero
EstatusCredito = GvRow.DataKey("Estatus").ToEntero
End If
Next
If TotalCreditos <> TxtTotal.Text.ToDecimal Then
Alert($"El importe de La factura no concide con el total de los creditos, diferencia: { (TotalCreditos - TxtTotal.Text.ToDecimal).FormatoNumero(2)}", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
'Si se marcó No Deducible en el encabezado mínimo se debe registrar un No Deducible en el Detalle
Dim GuardaNoDeducibles As Boolean = False
If ChkEsNoDeducible.Checked Then
For Each Row As DataRow In TmpDT.Rows
If Row("NoDeducible").ToString = "True" Then
GuardaNoDeducibles = True
End If
Next
If GuardaNoDeducibles = False Then
Alert("Si la compra es No Deducible, mínimo se debe registrar un producto No Deducible", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
If CierrePeriodo Then
Alert("El periodo de la compra actual ya se encuentra cerrado. No podra registrar la compra.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'DF - 10/04/2017
If UsuarioActual.TienePermisoProceso(187) Then
If TxtSerie.Text <> SerieVieja Then
Dim SerieNueva As String = GlobalDTProveedorSucursales(CveProveedor).FiltroPrimeroValor("Serie", $"Serie = '{TxtSerie.Text}'").ToString
If SerieNueva = "" Then
Alert("La Serie no es válida, por favor revise que se encuentre dentro de la lista de las sucursales del proveedor.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
'Excede el limite de credito
If RBLPago.SelectedValue = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("Fac") AndAlso UsuarioActual.Empresa.Funcionalidad(518) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(185) Then
Dim ObjCompras As New ClsCompras
If ObjCompras.ObtenerCreditoRestante(CveProveedor) Then
If ObjCompras.DtResultados.Rows.Count > 0 Then
Dim Saldo As Decimal = ObjCompras.DtResultados(0)("Saldo").ToString.ToDecimal + TxtTotal.Text.ToDecimal
Dim LimiteCredito As Decimal = ObjCompras.DtResultados(0)("LimiteCredito").ToString.ToDecimal
If LimiteCredito > 0 Then
If Saldo / LimiteCredito * 100 > 90 Then
Alert($"Nuestro Limite de Credito con este proveedor supera el 90% </br> Porcentaje Actual: {(Saldo / LimiteCredito * 100).FormatoNumero(2)}%", TipoMensaje.MsgAdvertencia)
End If
End If
Else
ObjCompras.Dispose()
Alert("El proveedor no tiene límite de crédito", TipoMensaje.MsgError)
Exit Sub
End If
Else
ObjCompras.Dispose()
Alert("Ocurrio un error al obtener el limite de credito del Proveedor", TipoMensaje.MsgError)
Exit Sub
End If
ObjCompras.Dispose()
End If
If Not (HFDiferenciaCompra.Value = TxtTotal.Text Or CveFactura < 1 Or CveCompra < 1) Then
Alert("La compra no se puede registrar debido a que los totales no son iguales, verifique sus cambios", TipoMensaje.MsgError)
Exit Sub
End If
'UM EQUIVALENCIAS
For Each gvr As GridViewRow In GvPS.Rows
If gvr.DataKey("CvePS").ToString.ToEntero > 0 Then
If gvr.DataKey("CveUM").ToString.ToEntero = 0 Then
Alert("Existe un error, Unidad de Medida no registrada", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
Next
If ChkConsignacion.Checked Then
For Each gvr As GridViewRow In GvInv.Rows
If gvr.FCDropDownList("DdlVinculaConsignacion").SelectedValue.ToEntero < 0 Then
Alert("Si la compra aplica consignación debe vincular todos los conceptos en Almacén.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Next
End If
If RowProveedorSucursal.Visible And DdlProveedorSucursal.SelectedValue.ToEntero = -1 Then
Alert("Favor de seleccionar una sucursal del proveedor", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If UsuarioActual.TienePermisoProceso(121) Then
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
If Not NCDevolucion Then
Alert("Favor de seleccionar un producto en la pestaña de almacen", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Else
Dim x As Integer = 0
For Each Dr As GridViewRow In GvInv.Rows
If Dr.FCCheckBox("cbInv").Checked Then
x = x + 1
End If
Next
If x = 0 AndAlso GvInv.Rows.Count > 0 Then
Alert("Favor de seleccionar un producto en la pestaña de almacen", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
If UsuarioActual.Empresa.Funcionalidad(538).ToEntero = 1 Then
If TmpDT.MIN("CvePS").ToEntero <= 0 Then
Alert("Todos los Productos/Servicios deben estar registrados o aliados a un productos ya registrado.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
If UsuarioActual.Empresa.Funcionalidad(123).ToEntero > 0 And Not UsuarioActual.TienePermisoProceso(156) Then
If Not ValidaCierrePeriodo() Then
Alert("No se puede registar la compra. Se ha cerrado el periodo de la compra actual", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
Dim TotalPorDevengar = Math.Round(TxtTotal.Text.ToDouble, 2)
Dim TotalDetalle = 0.0
Dim RequiereCentroCosto As Boolean = False
'If Not (UsuarioActual.Empresa.Funcionalidad(102) = "") Then
' Dim NotHas117 As Boolean = Not UsuarioActual.TienePermisoProceso(117)
' 'verifica que tenga proyecto y clasificacion
For Each Row As DataRow In TmpDT.Rows
If Row("CveSubProyecto").ToString.ToEntero <= 0 Then
Alert("No se ha completado la asignacion de proyectos en la compra. ", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If Row("CveClasificacionActualizar").ToString.ToEntero <= 0 Then 'If NotHas117 AndAlso Row("CveClasificacionActualizar").ToString.ToEntero <= 0 Then
Alert("Hay productos que no tienen clasificación asignada.<br> Favor de asignarle una y darle guardar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If UsuarioActual.Empresa.Funcionalidad(527) = "1" Then
If Row("CveTipoGasto").ToString.ToEntero <= 0 Then
Alert("No se ha completado la asignacion de tipos de gasto en la compra.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
Next
'End If
'SI LA CANTIDAD EN SERIE/LOTE NO ES IGUAL A CANTIDAD EN GVPS
'Dim DtDetalles As DataTable
Dim Cantidad As Integer
If GvInv.HeaderRow.FCCheckBox("cbAll").Checked = True Then
For Each Dr As DataRow In DtInv.Rows
If Dr("CveMetodoInventario").ToString.ToEntero = 5 Then
Cantidad = DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", Dr("CvePS").ToString)).Rows.Count
If Cantidad < Dr("Cantidad").ToString.ToEntero Then
Alert("No hay productos a los que no se le ha asociado Serie-Lote", TipoMensaje.MsgError)
Exit Sub
End If
End If
Next
End If
If Not HdnCveProveedor.Value <> "-1" Then
Alert("En necesario seleccionar un proveedor, al cual se le va a facturar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If Not TmpDT.Rows.Count > 0 Then
Alert("Es necesario agregar al menos un Producto o Servicio a la factura.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'VALIDA SI LA CLASIFICACIÓN REQUIERE PERSONAL, AF COMPRA O AF INSUMO
Dim ErrorValidacion As Boolean = False
Dim DtTemporal As New DataTable
DtTemporal.Columns.Add("CveClasificacion", GetType(Integer))
For Each Gvr As GridViewRow In GvPS.Rows
Dim Dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros($"CveClasificacion = {Gvr.DataKey("CveClasificacion").ToEntero}")(0)
If Dr IsNot Nothing Then
Dim SeValido As Boolean = False
For Each Drt As DataRow In DtTemporal.Rows
If Drt("CveClasificacion").ToString.ToEntero = Dr("CveClasificacion").ToString.ToEntero Then
SeValido = True
Exit For
End If
Next
If Not SeValido Then
If CBool(Dr("RequierePersonal")) Then
For Each GvP As GridViewRow In GvPersonal.Rows
If GvP.DataKey("CveClasificacion").ToEntero = Dr("CveClasificacion").ToString.ToEntero Then
If Not GvP.FCDropDownList("DdlPersonalGv").SelectedValue.ToEntero > 0 Then
ErrorValidacion = True
Alert($"Tiene que seleccionar un personal para esta clasificación: <b>{Dr("Clasificacion").ToString}</b>.", TipoMensaje.MsgAdvertencia)
Exit For
End If
End If
Next
End If
If CBool(Dr("RequiereAFCompra")) Then
For Each GvAFC As GridViewRow In GvAFCompras.Rows
If GvAFC.DataKey("CveClasificacion").ToEntero = Dr("CveClasificacion").ToString.ToEntero Then
If Not GvAFC.FCHiddenField("HdnCveAF").Value.ToEntero > 0 Then
ErrorValidacion = True
Alert($"Tiene que seleccionar un AF compra para esta clasificación: <b>{Dr("Clasificacion").ToString}</b>.", TipoMensaje.MsgAdvertencia)
Exit For
End If
End If
Next
End If
If CBool(Dr("RequiereAFInsumo")) Then
For Each GvAFI As GridViewRow In GvAFInsumos.Rows
If GvAFI.DataKey("CveClasificacion").ToEntero = Dr("CveClasificacion").ToString.ToEntero Then
If Not GvAFI.FCHiddenField("HdnCveAF").Value.ToEntero > 0 Then
ErrorValidacion = True
If Not SeValido Then
Alert($"Tiene que seleccionar un AF insumo para esta clasificación: <b>{Dr("Clasificacion").ToString}</b>.", TipoMensaje.MsgAdvertencia)
End If
Exit For
End If
End If
Next
End If
Dim Drr As DataRow = DtTemporal.NewRow
Drr("CveClasificacion") = Dr("CveClasificacion").ToString.ToEntero
DtTemporal.Rows.Add(Drr)
End If
End If
Next
If ErrorValidacion Then Exit Sub
'------------------TERMINA VALIDACIONES------------------
'RECORRO LOS PRODUCTOS O SERVICIOS PARA REGISTRARLOS LOS QUE NO EXISTEN EN EL CATÁLOGO
Dim tCve As Integer
Dim RegeneraPS As Boolean = False
'OBJETOS PROVISIONALES
Dim UM As New ClsUnidadesMedida
Dim PSS As New ClsProductosServicios
Dim Correcto = True
For Each Row As DataRow In TmpDT.Rows
'VALIDACION DE CENTRO DE COSTO
If UsuarioActual.Empresa.RequiereCentroCostos AndAlso Row("CveSubProyecto").ToString.ToEntero <= 0 Then
RequiereCentroCosto = True
UM.Dispose()
PSS.Dispose()
Alert("Falta asignar Proyecto a la compra", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'REGISTRO LAS UNIDADES DE MEDIDA
If Row("CveUM").ToString.ToEntero = 0 Then
tCve = UM.AddUnidadMedida(Row("UM").ToString, Row("UM").ToString, "", "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1)
If tCve > 0 Then
Row("CveUM") = tCve
Dim rowsToUpdate = TmpDT.AsEnumerable().Where(Function(r) r.Field(Of String)("UM").ToString.ToUpper = Row("UM").ToString.ToUpper AndAlso r!CveUM.ToString.ToEntero = 0)
For Each roww As DataRow In rowsToUpdate
roww.SetField("CveUM", tCve)
Next
Else
Correcto = False
End If
End If
'REGISTRO LOS PRODUCTOS
If Row("CvePS").ToString.ToEntero = 0 Then
tCve = PSS.AddPS(Row("CveClasificacionActualizar").ToString.ToEntero, -1, Row("CveUM").ToString.ToEntero, "", "", "", Row("PS").ToString, Row("PU").ToString.ToDouble, If(TxtIVA.Text.ToDouble > 0, -1, 0), 0, False, 0, True, False, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, 0)
If tCve > 0 Then
RegeneraPS = True
Row("CvePS") = tCve
Row("CveClasificacion") = Row("CveClasificacionActualizar").ToString.ToEntero
'Row("CveEq") = 1
TmpDT.AcceptChanges()
'busco el mismo PS dentro de la tabla por si está más de una vez y lo actualizo
Dim rowsToUpdate = TmpDT.AsEnumerable().Where(Function(r) r.Field(Of String)("PS") = Row("PS").ToString AndAlso r!CvePS.ToString.ToEntero = 0)
For Each roww As DataRow In rowsToUpdate
roww.SetField("CvePS", tCve)
roww.SetField("CveClasificacion", Row("CveClasificacionActualizar").ToString.ToEntero)
'roww.SetField("CveEq", 1)
Next
TmpDT.AcceptChanges()
Else
Correcto = False
End If
Else
'UPDATE CLASIFICACION DE PRODUCTO YA REGISTRADO
If Row("CveClasificacionActualizar").ToString.ToEntero > 0 AndAlso Row("CveClasificacion").ToString.ToEntero <= 0 Then
If PSS.UpdateClasificacionPS(Row("CveClasificacionActualizar").ToString.ToEntero, UsuarioActual.CveUsuario, Row("CvePS").ToString.ToEntero) Then
Row("CveClasificacion") = Row("CveClasificacionActualizar").ToString.ToEntero
RegeneraPS = True
Else
Correcto = False
End If
End If
End If
Next
UM.Dispose()
PSS.Dispose()
'si hay necesidad de actualizar el globaldtps
If RegeneraPS Then
Dim Hilo As New System.Threading.Thread(AddressOf GeneraGlobalDT)
Hilo.Start()
End If
Dim CvePlantillaPrePoliza As Integer
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
CvePlantillaPrePoliza = 60
Else
CvePlantillaPrePoliza = 1
End If
Dim tIdContaProveedor As Integer = CtaProveedor
Dim ImporteAnticipo As Decimal = 0
If (ArrAnticipos.Count > 0 And CveCompra > 0) Or (ArrAnticipos.Count > 0 And UsuarioActual.Empresa.UsaAC) Then '-- ESTO SE QUITO - IPP - 04 NOVIMEBRE 2016
CvePlantillaPrePoliza = 52
'cuenta de anticipos
tIdContaProveedor = CtaProveedorAnticipos
For Each Ant As Compras_Compras.Anticipos In ArrAnticipos
ImporteAnticipo += Ant.Importe
Next
If Math.Round(ImporteAnticipo, 2) > TxtTotal.Text.ToDouble Then
Alert("El Importe seleccionado es mayor a la compra", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
If RBLContado.SelectedValue = "2" AndAlso DdlFuncionarioEmpleado.SelectedValue.ToEntero > 0 Then
If EmpresaPrueba Then
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
CvePlantillaPrePoliza = 60
Else
CvePlantillaPrePoliza = 1
End If
Else
CvePlantillaPrePoliza = 9
End If
End If
'If RBLPago.SelectedValue.ToEntero = 4 And UsuarioActual.CveEmpresa.Contiene(1, 7) Then
' CvePlantillaPrePoliza = 69
'End If
TmpDT.AcceptChanges()
If Correcto Then
'VALIDA IMPORTES
If Not ValidaTotalesGuardar() Then
Exit Sub
End If
Dim ObjCompras As New ClsCompras()
Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL())
Dim ObjIE As New ClsBancos(ObjCompras.IniciaTransacSQL)
Dim ObjInventario As New ClsInventarios(ObjCompras.IniciaTransacSQL)
Dim ObjAF As New ClsAF(ObjCompras.IniciaTransacSQL)
Dim ObjOC As New ClsOC(ObjCompras.IniciaTransacSQL)
Dim ObjContratos As New ClsContratos(ObjCompras.IniciaTransacSQL())
Dim ObjProveedores As New ClsCompProveedores(ObjCompras.IniciaTransacSQL())
Dim ObjEventos As New ClsOIEventos(ObjCompras.IniciaTransacSQL())
Dim ObjAcar As New ClsAcarreos(ObjCompras.IniciaTransacSQL())
Dim ObjCGame As New ClsCGame(ObjCompras.IniciaTransacSQL())
Dim ObjProductosServicios As New ClsProductosServicios(ObjCompras.IniciaTransacSQL())
Dim ObjContaAC As ClsContPAQi = Nothing
Dim ErrorMovtosCxP As Boolean = False
Dim ErrorPrepoliza As Boolean = False
Dim ErrorPrepolizaDescuadre As Boolean = False
Dim ErrorMovtosRetIVA As Boolean = False
Dim ErrorMovtosRetISR As Boolean = False
Dim ErrorMovtosEstimaciones As Boolean = False
Dim ErrorMovtosIVA As Boolean = False
Dim ErrorMovtosIE As Boolean = False
Dim ErrorMovInv As Boolean
Dim ErrorMovDev As Boolean = False
Dim ErrorOC = False
Dim TieneError As Boolean = False
Dim ErrorAC As Boolean = False
Dim ErrorAF As Boolean = False
Dim ErrorReembolso As Boolean = False
Dim ErrorBitacora = False
Dim ErrorAddAcarreos As Boolean = False
Dim ErrorCreditosCompra As Boolean = False
Dim ErrorOtrosGastos As Boolean = False
Dim ErrorSATPS As Boolean = False
Dim ErrorACMEnsaje As New StringBuilder
Dim ErrorSaldosInvComp As Boolean = False
Dim CveIE As Integer = -1
Dim CveEstatusFactura As Integer = 1
Dim PolizaFolio As Integer = 0
Dim CvePrePoliza As Integer
Dim ImporteCompra As Decimal = TxtTotal.Text.ToDecimal
Dim MultiplicadorNC = If(DdlTipoComprobante.SelectedValue = "NC", -1, 1)
Dim CveMovimientoInventario As Integer = -1
Dim IVA = 1.16
Dim ListaMovimientosAlmacen As New List(Of Integer)
Dim ErrorCreditoCapitalIntres As Boolean = False
Dim ErrorCredito As Boolean = False
If ChkProgramarPago.Checked Then
CveEstatusFactura = 2
End If
Dim EntregaDirecta = False
Dim ConceptoPoliza As String = String.Format("{0} - {1}{2} - {3}", NombreProveedor, TxtSerie.Text, TxtFolio.Text, TxtDescripcion.Text.Trim)
'TIPO CAMBIO MANUAL CON COMPRA NUEVA
Dim TipoCambioGuardar = 1.0
If DdlMoneda.SelectedValue.ToEntero > 1 Then
TipoCambioGuardar = If(DivTC.Visible, TxtTC.Text.ToDouble, LblTC.Text.Substring(3).ToDouble)
End If
TipoCambio = If(DivTC.Visible, TipoCambioGuardar, TipoCambio)
Try
Dim FolioFijo As Integer = 0
'cheque
If DdlTipoTransaccion.SelectedValue = "1" Then FolioFijo = TxtFolio.Text.ToEntero
CvePrePoliza = ObjConta.AddPrePolizas("Compras/Registrar", If(EsContado And CvePlantillaPrePoliza = 1, 2, CvePlantillaPrePoliza), ImporteCompra, TxtTotal.Text.ToDouble, DdlMoneda.SelectedValue.ToEntero, TxtFecha.Text.ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo:=FolioFijo, ReglaFolioPoliza:=ObjCompras.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa), CveTipoPoliza:=ObjConta.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa))
'seria de contado, solo cuando no tenga vinculado ningun anticipo
If RBLPago.SelectedValue.ToEntero = 2 AndAlso ArrAnticipos.Count = 0 Then 'Contado
If RBLContado.SelectedValue = "1" Then
'se registra primero el movimiento en bancos para luego vincularlo en la compra
CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, TxtFechaPago.Text.Trim.ToDate, TxtDocumentoFolio.Text.Trim, DdlProveedor.SelectedItem.Text.Trim, TxtDocumentoImporte.Text.Trim.ToDouble, DdlMoneda.SelectedValue.ToEntero, 0.0, TxtDocumentoObservaciones.Text.Trim, "", True, True, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCuentaTarjeta:=If(DivTarjeta.Visible, DdlTarjeta.SelectedValue.ToEntero, -1))
ElseIf RBLContado.SelectedValue = "6" Then
'se registra primero el movimiento en bancos para luego vincularlo en la compra
CveIE = ObjIE.AddBancos_IE(DdlCuentaCaja.SelectedValue.ToEntero, DdlTipoTransaccionCaja.SelectedValue.ToEntero, TxtFechaPago.Text.Trim.ToDate, TxtDocumentoFolioCaja.Text.Trim, DdlProveedor.SelectedItem.Text.Trim, TxtDocumentoImporteCaja.Text.Trim.ToDouble, DdlMoneda.SelectedValue.ToEntero, 0.0, TxtDocumentoObservacionesCaja.Text.Trim, "", True, True, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
End If
If (RBLContado.SelectedValue = "1" OrElse RBLContado.SelectedValue = "6") AndAlso Not CveIE > 0 Then
ErrorMovtosIE = True
End If
End If
If Not ErrorMovtosIE Then
'REEMBOLSOS NO USA AC
Dim NumeroReembolso = "-1"
If TxtNumeroReembolso IsNot Nothing And RBLPago.SelectedValue = "3" Then
NumeroReembolso = TxtNumeroReembolso.Text
''GUARDA VALORES PARA SESSION
UsuarioActual.Sesion("Comp-NumeroReembolso") = TxtNumeroReembolso.Text
UsuarioActual.Sesion("Comp-CveFYE") = DdlPersonalReembolso.SelectedValue
UsuarioActual.Sesion("Comp-Descripcion") = TxtDescripcion.Text
If NumeroReembolso <> "-1" Then
If CvePersonal <= 0 And CveCajaChica <= 0 Then
ErrorReembolso = True
End If
End If
Else
UsuarioActual.Sesion("Comp-NumeroReembolso") = ""
End If
If Not ErrorReembolso Then
'PORCENTAJE IVA
Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal
'If DdlIVA.SelectedValue.ToDouble = 1.16 Then
' PorcentajeIVA = 0.16
'ElseIf DdlIVA.SelectedValue.ToDouble = 1.08 Then
' PorcentajeIVA = 0.08
'End If
'METODO DE PREPOLIZA DE ALMACEN
If UsuarioActual.CveEmpresa.Contiene(1, 119) And UsuarioActual.Empresa.UsaInventarios And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
Dim ImporteAlmacen = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND CveTipoPS = 2").ToString.ToDecimal
If ImporteAlmacen > 0 Then
If Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then
If (CveImportacion > 0 Or CveFlete > 0) Then
CveConceptoContableAlmacen = CveConceptoContableAlmacen
Else
CveConceptoContableAlmacen = 205
End If
If OCVinculada And Not (CveImportacion > 0 Or CveFlete > 0) Then
CveConceptoContableAlmacen = DdlOCVinculaInv.SelectedValue.ToEntero
End If
Else
CveConceptoContableAlmacen = 225
End If
End If
End If
If RBLPago.SelectedValue.ToEntero = 4 And EstatusCredito.Contiene(1, 101) Then
CveEstatusFactura = 6
End If
'Compra
If ObjCompras.AddCompra(DdlTipoComprobante.SelectedValue, TxtDescripcion.Text.Trim, TxtSerie.Text.Trim, TxtFolio.Text.Trim, TxtFolioSecundario.Text.Trim, CveProveedor, TxtSubTotal.Text.ToDouble, TxtDescuento.Text.ToDouble,
LblAmortizacion.Text.ToDouble, TxtIVA.Text.ToDouble, TxtRetIVA.Text.ToDouble, TxtRetISR.Text.ToDouble, TxtIEPS.Text.ToDouble, TxtOtrosImpuestos.Text.ToDouble,
TxtRedondeo.Text.ToDouble, TxtTotal.Text.ToDouble, TxtFecha.Text.Trim.ToDate, DdlMoneda.SelectedValue.ToEntero, TipoCambio, TxtFechaPago.Text.Trim.ToDate, ChkAplicaNotaCredito.Checked, TxtObsFact.Text.Trim, CveEstatusFactura,
CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, IdPoliza, CveCajaChica:=CveCajaChica, CvePersonal:=CvePersonal, NumeroReembolso:=NumeroReembolso, CveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero,
AplicoPromocion:=ChkOCPromocion.Checked, PorcentajeIVA:=PorcentajeIVA, CveMetodoPago:=CveMetodoPago, CveRetIVAConcepto:=If(DdlRetIVAConcepto.Items.Count > 0, DdlRetIVAConcepto.SelectedValue.ToEntero, -1), CveConceptoContableAlmacen:=CveConceptoContableAlmacen,
CveRetISRConcepto:=If(DdlRetISRConcepto.Items.Count > 0, DdlRetISRConcepto.SelectedValue.ToEntero, -1), NoDeducible:=EsNoDeducible, CveTipoCompra:=DdlTipoCompra.SelectedValue.ToEntero) Then
ViewState("CveCompra") = ObjCompras.CveCompra
If ObjCompras.DtResultados.Rows.Count > 0 Then ViewState("CompraFolio") = ObjCompras.DtResultados.Rows(0)("vFolio").ToString
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
ErrorMovDev = guardardevolucion(ObjInventario, ObjCompras.CveCompra, TxtSubTotal.Text.ToDouble, TxtFecha.Text.Trim.ToDate)
End If
Dim ErrorDetalles As Boolean = False
' Dim IDPoliza As Integer
Dim IDPolizaComprometido = 0
Dim ErrorComprometido = False
If CveImportacion > 0 Or CveFlete > 0 Then
Select Case CveConceptoContableAlmacen
Case 237
Select Case FleteImportacionOpcion
Case 1
Dim Dr As DataRow = Nothing
If ObjInventario.GetFletes(UsuarioActual.CveEmpresa, CveFlete) Then
If ObjInventario.DtResultados.Rows.Count > 0 Then
Dr = ObjInventario.DtResultados.Rows(0)
End If
End If
If Dr IsNot Nothing Then
If Not ObjInventario.UpdateFlete(CveFlete, Dr("Descripcion").ToString, Dr("Fecha").ToString.ToDate, -1, CveCompra, UsuarioActual.CveUsuario) Then
ErrorOC = True
End If
Else
ErrorOC = True
End If
Case 2
If Not ObjInventario.AddFleteDetalle(CveFlete, CveCompra) Then
ErrorOC = True
End If
'actualiza la compra para que no se surta en almacen. sino por el flete o importación
If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then
ErrorOC = True
End If
End Select
Case 240
Select Case FleteImportacionOpcion
Case 1
If Not ObjCompras.AddImportacionCompra(CveImportacion, CveCompra) Then
ErrorOC = True
End If
Case 2
If Not ObjCompras.AddImportacionDetalle(CveImportacion, CveCompra) Then
ErrorOC = True
End If
'actualiza la compra para que no se surta en almacen. sino por el flete o importación
If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then
ErrorOC = True
End If
End Select
End Select
End If
If UsuarioActual.Empresa.UsaAC Then
If TotalPorDevengar <= TxtTotal.Text.ToDouble And TotalPorDevengar > 0 Then
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
''POLIZA COMPROMETIDO SOLO SI NO SE VINCULA OC
If HdnVCveOC.Value.ToEntero > 0 Then
' IDPolizaComprometido = ObjContaAC.AddPoliza( 4, "Comprometido", Total, Total, UsuarioActual.CveUsuario, Now)
' If IDPolizaComprometido <= 0 Then
' ErrorComprometido = True
' End If
IDPolizaComprometido = 1
TotalPorDevengar = TotalPorDevengar * 2
Else
TotalPorDevengar = TotalPorDevengar * 3
End If
IdPoliza = ObjContaAC.AddPoliza(3, TxtDescripcion.Text.Trim, TotalPorDevengar, TotalPorDevengar, UsuarioActual.CveUsuario, TxtFecha.Text.ToDate)
'Dim filtro As New StringBuilder
If IdPoliza > 0 Then
PolizaFolio = ObjContaAC.Folio
'Dim RegistroMatriz As DataRow
'Dim CuentaCargo As Integer
Dim CuentaAbono As Integer
Dim Importe As Decimal
'CUENTA PROVEEDOR
If tIdContaProveedor <= 0 Then
'normalmente debe de ser la cuenta 021120000000000000, para el caso de APH, se el cmabio al 2119
If ObjContaAC.GetCuentas(-1, "021190000000000000", -1) Then
Dim drCuenta As DataRow = ObjContaAC.DtResultados.FiltroPrimero("")
If drCuenta IsNot Nothing Then
CuentaAbono = drCuenta("Id").ToString.ToEntero
Dim FolioProveedor = ObjContaAC.GetFolioProveedores("021190000000000000").ToString
ViewState("CtaProveedor") = ObjContaAC.AddCuenta(String.Format("02119{0}000000000", FolioProveedor.PadLeft(4, "0"c)), NombreProveedor, "D", 2, 0, 1, 0, "", 1, CuentaAbono)
ObjProveedores.UpdateProveedorIdCuentaAC(CveProveedor, CtaProveedor)
tIdContaProveedor = CtaProveedor
Else
ErrorAC = True
ErrorACMEnsaje.Append(" - DrCuenta Nula")
End If
Else
ErrorACMEnsaje.Append(" - Error al consultar cuenta 021190000000000000 ")
ErrorAC = True
End If
End If
Dim ConceptoRenglon As String = ""
If Not ErrorAC Then
'INVENTARIOS EN AC
Dim ContadorInventario As Integer = GvInv.Rows.Cast(Of GridViewRow)().Count(Function(gvr) gvr.FCCheckBox("cbInv").Checked)
Dim CtaAlmacen As Integer
If ContadorInventario > 0 Then
Dim drr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", GvInv.HeaderRow.FCDropDownList("ddlAlmacen").SelectedValue.ToString.ToEntero))
If drr IsNot Nothing Then
CtaAlmacen = drr("IdCtaContable").ToString.ToEntero
End If
End If
Dim tTotalIVA, tTotalGral, tDiferenciaIVA, tIVA, tRetIVA, tRetISR As Decimal
Dim ipresup As Integer = 0
'COMIENZA: PRUEBA AGRUPACION CONCEPTOS
Dim Presup = From gvr As DataRow In TmpDT.Rows.Cast(Of DataRow)()
Group gvr By Grp = New With {
Key .CvePresupuestoEgreso = gvr("CvePresupuestoEgreso").ToString.ToEntero,
Key .CveOrdencompraDetalle = If(gvr("CveOrdencompraDetalle").ToString.ToEntero > 0, 1, -1),
Key .CveActivoFijo = If(gvr("TipoAF").ToString.ToEntero = 2, gvr("CveActivoFijo").ToString.ToEntero, -1)
} Into Group
Select Grp.CvePresupuestoEgreso, Grp.CveActivoFijo, Grp.CveOrdencompraDetalle,
TotalImporte = Group.Sum(Function(r) r("Total").ToString.ToDecimal)
Dim Fecha As Date = TxtFecha.Text.ToDate
'Dim tTotalIVA, tTotalGral, tDiferenciaIVA, tIVA As Double
tTotalIVA = TxtIVA.Text.ToDecimal
tRetIVA = TxtRetIVA.Text.ToDecimal
tRetISR = TxtRetISR.Text.ToDecimal
'tTotalIVA = tTotalIVA - tRetIVA - tRetISR
tTotalGral = TxtTotal.Text.ToDecimal + tRetIVA + tRetISR ' EL TOTAL GENERAL DEBE DE SER EL SUBTOTAL + IVA, NO SE DEBEN DE INCLUIR LAS RETENCIONES, POR ESO SE RESTA
tDiferenciaIVA = tTotalIVA
ipresup = 0
Dim CuentaMatrizAlmacen As Integer
'PresupuestoEgresos
Dim DtPresupuestosTemp As DataTable
Dim IdCuentaComprometido, IdCuentaPorEjercer, IdCuentaDevengado, IdCuentaMatriz As Integer
' Dim DescuentoConIVA As Decimal
Dim tPorIVA As Decimal = tTotalIVA / (tTotalGral - tTotalIVA)
Dim tAjusteTotal As Decimal
For Each grp In Presup
Importe = grp.TotalImporte
TotalDetalle += Importe
ipresup += 1
If Importe > 0 Then
'saco la proporcion de iva que le corresponde
tIVA = Math.Round(Importe * tPorIVA, 2)
tDiferenciaIVA -= tIVA
'identifico si es el ultimo registro, para ver si es necesario un ajuste
If ipresup = Presup.Count Then
If Math.Round(TotalDetalle - tTotalGral, 2) <= 0.01 AndAlso tDiferenciaIVA > 0 Then
tIVA += tDiferenciaIVA
End If
End If
'le sumo el iva al concepto
Importe += tIVA
'codigo Provisional, para cuand tenga descuento, solo tome el subtotal * el iva,RMF
If TxtDescuento.Text.ToDouble > 0 Then
Importe = grp.TotalImporte * 1.16D
End If
tAjusteTotal += Importe
'valido que la sumas de lo detalles no exceda al totalgeneral
If Math.Round(tAjusteTotal, 2) > tTotalGral Then
'le resto la diferencia
Importe -= (tAjusteTotal - tTotalGral)
End If
'Presupuesto Egresos
DtPresupuestosTemp = DtPresupuestos.FiltraParametros(String.Format("CvePresupuestoEgreso = {0}", grp.CvePresupuestoEgreso))
If DtPresupuestosTemp.Rows.Count <> 1 Then
ErrorAC = True
ErrorACMEnsaje.Append(" - DtPresupuestosTemp.Rows.Count <> 1 ")
Exit For
End If
IdCuentaComprometido = DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString.ToEntero
IdCuentaPorEjercer = DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero
IdCuentaDevengado = DtPresupuestosTemp.Rows(0)("IdCuentaDevengado").ToString.ToEntero
IdCuentaMatriz = DtPresupuestosTemp.Rows(0)("IdCuentaMatriz").ToString.ToEntero
'COMPROMETIDO DEPENDIENTE SI EXISTE SU POLIZA
If grp.CveOrdencompraDetalle = -1 Then
ConceptoRenglon = String.Format("GC Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If ObjContaAC.AddMovimiento(IdPoliza, IdCuentaComprometido, False, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
If Not ObjContaAC.AddMovimiento(IdPoliza, IdCuentaPorEjercer, True, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
ErrorACMEnsaje.Append(" - Error al agregar movimiento contabilidad 1")
Exit For
End If
Else
ErrorACMEnsaje.Append(" - Error al agregar movimiento contabilidad 2")
ErrorAC = True
Exit For
End If
End If
ConceptoRenglon = String.Format("GD Fact:{0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
'DEVENGADO
If ObjContaAC.AddMovimiento(IdPoliza, IdCuentaDevengado, False, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
If Not ObjContaAC.AddMovimiento(IdPoliza, IdCuentaComprometido, True, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorACMEnsaje.Append(" - Error al agregar movimiento contabilidad 3")
ErrorAC = True
Exit For
End If
Else
ErrorACMEnsaje.Append(" - Error al agregar movimiento contabilidad 4")
ErrorAC = True
Exit For
End If
If ContadorInventario > 0 Then
CuentaMatrizAlmacen = CtaAlmacen
ElseIf grp.CveActivoFijo > 0 Then
Dim CtaAF = -1
Dim AF = ""
Dim CuentaInicial = -1
If ObjAF.GetActivosFijos(grp.CveActivoFijo, UsuarioActual.CveEmpresa, "-1", "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1, UsuarioActual.CveEmpresa) Then
CtaAF = ObjAF.Cuenta
AF = ObjAF.Descripcion
CuentaInicial = ObjAF.CuentaInicial
Else
ErrorAC = True
ErrorACMEnsaje.Append(" - Error al obtener activos fijos ")
Exit For
End If
If Not CuentaInicial > 0 Then
CuentaInicial = 1241
End If
'CUENTA AF
If CtaAF <= 0 Then
If ObjContaAC.GetCuentas(-1, String.Format("0{0}0000000000000", CuentaInicial), -1) Then
Dim drCuenta As DataRow = ObjContaAC.DtResultados.FiltroPrimero("")
If drCuenta IsNot Nothing Then
ErrorACMEnsaje.Append(" - Error al obtener cuentas 0{0}0000000000000 drCuenta nula")
CuentaAbono = drCuenta("Id").ToString.ToEntero
Dim FolioAF = ObjContaAC.GetFolioProveedores(String.Format("0{0}0000000000000", CuentaInicial)).ToString
CtaAF = ObjContaAC.AddCuenta(String.Format("0{0}{1}000000000", CuentaInicial, FolioAF.PadLeft(4, "0"c)), AF, "A", 2, 0, 1, 0, "", 1, CuentaAbono)
ObjAF.UpdateActivosFijosCuentaAC(grp.CveActivoFijo, CtaAF, UsuarioActual.CveUsuario)
Else
ErrorACMEnsaje.Append(" - Error al obtener cuentas 0{0}0000000000000 drCuenta nulo")
ErrorAC = True
End If
Else
ErrorACMEnsaje.Append(" - Error al obtener cuentas 0{0}0000000000000")
ErrorAC = True
End If
End If
CuentaMatrizAlmacen = CtaAF
Else
CuentaMatrizAlmacen = IdCuentaMatriz
End If
''AFECTAR MATRIZ EGRESOS
If ObjContaAC.AddMovimiento(IdPoliza, CuentaMatrizAlmacen, False, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
''VERIFICA SI TIENE DESCUENTO (AMORTIZACION)
'If TxtDescuento.Text.ToDouble > 0 Then
' DescuentoConIVA = TxtDescuento.Text.ToDouble * 1.16
' 'Valida que el descuento con iva cuadre en los totales
' If Math.Abs(DescuentoConIVA - (Importe - TxtTotal.Text.ToDouble)) < 0.02 Then
' DescuentoConIVA = Importe - TxtTotal.Text.ToDouble
' ElseIf DescuentoConIVA <> (Importe - TxtTotal.Text.ToDouble) Then
' ErrorAC = True
' Exit For
' End If
' 'actualizo el idcuenta del presupuesto
' If ObjContaAC.AddMovimiento(123456, IdPoliza, tIdContaProveedor, True, Importe - DescuentoConIVA, "", ConceptoRenglon, 0, Fecha, "") Then
' 'agrego a la cuenta contable anticipos
' If Not ObjContaAC.AddMovimiento(123456, IdPoliza, CtaProveedorAnticipos, True, DescuentoConIVA, "", ConceptoRenglon, 0, Fecha, "") Then
' ErrorAC = True
' Exit For
' End If
' Else
' ErrorAC = True
' Exit For
' End If
'Else
' 'actualizo el idcuenta del presupuesto
' Importe = TxtTotal.Text.ToDouble
' If Not ObjContaAC.AddMovimiento(123456, IdPoliza, tIdContaProveedor, True, If(ArrAnticipos.Count > 0, ImporteAnticipo, Importe), "", ConceptoRenglon, 0, Fecha, "") Then
' ErrorAC = True
' Exit For
' End If
'End If
Else
ErrorACMEnsaje.Append(" - Error AFECTAR MATRIZ EGRESOS ObjContaAC.AddMovimiento")
ErrorAC = True
Exit For
End If
''TERMINA AFECTAR MATRIZ EGRESOS
Else
ErrorACMEnsaje.Append(" - For Each grp In Presup Importe > 0 ")
ErrorAC = True
Exit For
End If
Next
''[IPP] COMENTADO A MIRAS DE ELIMINAR 21-FEBRERO-2018
''VERIFICA SI TIENE DESCUENTO (AMORTIZACION)
'If TxtDescuento.Text.ToDouble > 0 Then
' DescuentoConIVA = TxtDescuento.Text.ToDecimal * 1.16D
' 'Valida que el descuento con iva cuadre en los totales
' If Math.Abs(DescuentoConIVA - (Importe - TxtTotal.Text.ToDecimal)) < 0.02 Then
' DescuentoConIVA = Importe - TxtTotal.Text.ToDecimal
' ElseIf DescuentoConIVA <> (Importe - TxtTotal.Text.ToDecimal) Then
' ErrorACMEnsaje.Append(" - Valida que el descuento con iva cuadre en los totales ")
' ErrorAC = True
' End If
' 'actualizo el idcuenta del presupuesto
' If ObjContaAC.AddMovimiento(IdPoliza, tIdContaProveedor, True, MultiplicadorNC * (Importe - DescuentoConIVA), "", ConceptoRenglon, 0, Fecha, "") Then
' 'agrego a la cuenta contable anticipos
' If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedorAnticipos, True, MultiplicadorNC * DescuentoConIVA, "", ConceptoRenglon, 0, Fecha, "") Then
' ErrorACMEnsaje.Append(" - actualizo el idcuenta del presupuesto ObjContaAC.AddMovimiento 1")
' ErrorAC = True
' End If
' Else
' ErrorACMEnsaje.Append(" - actualizo el idcuenta del presupuesto ObjContaAC.AddMovimiento 2")
' ErrorAC = True
' End If
'Else
'actualizo el idcuenta del presupuesto
Importe = TxtTotal.Text.ToDecimal
If Not ObjContaAC.AddMovimiento(IdPoliza, tIdContaProveedor, True, MultiplicadorNC * (If(ArrAnticipos.Count > 0, ImporteAnticipo, Importe)), "", ConceptoRenglon, 0, Fecha, "") Then
ErrorACMEnsaje.Append(" - actualizo el idcuenta del presupuesto ObjContaAC.AddMovimiento 3")
ErrorAC = True
End If
'End If
If tRetISR > 0 Then
ConceptoRenglon = String.Format("GD Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedorRetISR, True, MultiplicadorNC * tRetISR, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorACMEnsaje.Append(" RetISR > 0 ObjContaAC.AddMovimiento")
ErrorAC = True
End If
End If
'TERMINA: PRUEBA AGRUPACION CONCEPTOS
'registrar amortizar anticipos
End If
Else
ErrorACMEnsaje.Append(" - Id Poliza = 0 ")
ErrorAC = True
End If
Else
TieneError = True
ErrorACMEnsaje.Append("- TotalPorDevengar <= TxtTotal.Text.ToDouble And TotalPorDevengar > 0")
ErrorAC = True
End If
End If
If Not ErrorAC Then
''EMPIEZA: INSERTA DETALLES DE LA COMPRA
Dim indiceTR = 0
Dim Cont As Integer = 0
For Each Row As DataRow In TmpDT.Rows
Dim TipoRecepcion As Integer = -1
''INVENTARIOS
If GvInv.Rows.Count > indiceTR Then
If GvInv.Rows(indiceTR).FCCheckBox("cbInv").Checked = True And GvInv.Rows(indiceTR).FCDropDownList("DdlRecibirInv").SelectedValue = "1" Then
TipoRecepcion = 1
ElseIf GvInv.Rows(indiceTR).FCCheckBox("cbInv").Checked = True And GvInv.Rows(indiceTR).FCDropDownList("DdlRecibirInv").SelectedValue = "0" Then
TipoRecepcion = 2
End If
End If
Dim CvePersonal = -1
Dim Referencia = ""
If GvPersonal.Rows.Count > Cont Then
CvePersonal = GvPersonal.Rows(Cont).FCDropDownList("DdlPersonalGv").SelectedValue.ToEntero
Referencia = GvPersonal.Rows(Cont).FCTextBox("TxtReferencia").Text
End If
Cont = Cont + 1
'Si es AF-INSUMO se guarda CveAF en CompraDetalle
Dim CveAF = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 1, Row("CveActivoFijo").ToString.ToEntero, -1)
'Si es AF-COMPRA se guarda CveAF en la Columna CveAFCompra
Dim CveAFC = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 2, Row("CveActivoFijo").ToString.ToEntero, -1)
'AGREGA COMPRA DETALLE
If Not ObjCompras.AddCompraDetalle(CveCompra, Row("CveUM").ToString.ToEntero, Row("CvePS").ToString.ToEntero, Row("CveSubProyecto").ToString.ToEntero, -1, CveAF,
Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, Row("IVA").ToString.ToDouble, Row("Total").ToString.ToDouble, Row("Descuento").ToString.ToDouble,
Row("Obs").ToString, Row("CveOrdenCompraDetalle").ToString.ToEntero, TipoRecepcion, Row("CveContrato").ToString.ToEntero, Row("CvePresupuestoEgreso").ToString.ToEntero,
AplicaCostoIndirecto:=Row("AplicaCostoIndirecto").ToString.ToEntero, EstatusAlmacen:=Row("EntregaDirecta").ToString.ToEntero, CvePersonal:=CvePersonal,
CveTipoGasto:=Row("CveTipoGasto").ToString.ToEntero, AF_Medida:=Row("AFMedida").ToString.ToEntero, AF_TipoMantenimiento:=Row("AFTipoMantenimiento").ToString.ToEntero, Referencia:=Referencia, OtrosGastos:=Row("OtrosGastos").ToString.ToDecimal,
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 = "True" AndAlso EsNoDeducible, True, False)) Then
ErrorDetalles = True
Exit For
Else
If Row("EntregaDirecta").ToString.ToEntero > 0 Then
EntregaDirecta = True
End If
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Row("Consec").ToString}")(0)
TmpDr("CveCompraDetalle") = ObjCompras.CveCompraDetalle
' Si no es un movimiento de almacen va a tronar
Try
Dim InvDr As DataRow = DtInv.Select($"Consec = {Row("Consec").ToString}")(0)
InvDr("CveCompraDetalle") = ObjCompras.CveCompraDetalle
Catch ex As Exception
End Try
End If
'Vincula Vales
If IdVale.Count > 0 Then
For Each cve In IdVale
If Not ObjAF.UpdateValeCombustible(cve, CveCompra, -1, "", -1, -1, -1, UsuarioActual.CveEmpresa) Then
ErrorAF = True
Exit For
End If
Next
Else
End If
'AGREGA AF COMPRA - Cuando es Compra se guarda CveCompraDetalle en AF
If Row("TipoAF").ToString.ToEntero = 2 Then
If Not ObjAF.UpdateActivosFijosCompra(Row("CveActivoFijo").ToString.ToEntero, ObjCompras.CveCompraDetalle, Row("TipoAF").ToString.ToEntero, Row("Total").ToString.ToDouble, TxtFecha.Text.Trim.ToDate) Then
ErrorDetalles = True
Exit For
End If
End If
'ACTUALIZAR PRODUCTO/SERVICIO SAT
If Version = "3.3" Then
If Not ObjProductosServicios.UpdateProductosServiciosSAT(Row("CvePS").ToString().ToEntero(), Row("CveSATPS").ToString().ToEntero(), UsuarioActual.CveUsuario) Then
ErrorSATPS = True
End If
End If
indiceTR += 1
Next
''TERMINA: INSERTA DETALLES DE LA COMPRA
'QUEMA SALDOS DE INV-COMPRA | MERCANCIA RECIBIDA POR ADELANTADO (OC) | PP 176
If OCVinculada And Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
For Each Row As DataRow In TmpDT.FiltraParametros("CveTipoPS = 2").Rows
If Not ObjOC.OrdenesCompraDetalleSaldosInvCompraAdd(Row("CveOrdenCompraDetalle").ToString.ToEntero, -1, -1, Row("CveCompraDetalle").ToString.ToEntero, Row("Cantidad").ToString.ToDouble) Then
ErrorSaldosInvComp = True
Exit For
End If
Next
'verifica si fue vinculada con una OC, y si fue la opción de entrega por adelantado, que si hubo cambios de precios
If DdlOCVinculaInv.SelectedValue.ToEntero.Contiene(176, 205) Then
If Not AjustarPrePolizaVinculacionOC(ObjOC, ObjEventos, ObjInventario, ObjConta) Then
ErrorPrepoliza = True
End If
End If
End If
If CvePrePoliza > 0 Then
'INVENTARIOS - ALMACEN
If UsuarioActual.Empresa.UsaInventarios Then 'And UsuarioActual.Empresa.UsaAC = False
''SI ES CON DOLARES VALIDA QUE SE TENGA EL TIPO DE CAMBIO DEL DIA DE LA FACTURA - SI NO, NO HACE NADA, la validación del TC, ya está chk constrains
' If DdlMoneda.SelectedValue.ToEntero = 1 Or (DdlMoneda.SelectedValue.ToEntero > 1 AndAlso GlobalTipoCambio(TxtFecha.Text.ToDate) > 0) Then
''ALMACEN CONSIGNACION
If CveConsignacion > 0 Then
'actualizamos cvecompraconsignacion
For Each gvr As GridViewRow In GvInv.Rows
If gvr.FCCheckBox("cbinv").Checked AndAlso gvr.FCHiddenField("HdnCveConsignacion").Value.ToEntero > 0 Then
If Not ObjInventario.UpdateConsignacionesCompra(CveCompra, gvr.FCHiddenField("HdnCveConsignacion").Value.ToEntero, gvr.FCHiddenField("HdnCveAlmacen").Value.ToEntero, gvr.FCHiddenField("HdnCvePS").Value.ToEntero, gvr.DataKey("Cantidad").ToDouble, UsuarioActual.CveEmpresa) Then
ErrorMovInv = True
Exit For
End If
End If
Next
If Not ErrorMovInv Then
Dim x As Integer = 0
For Each dr As DataRow In DtInv.Rows
If GvInv.Rows(x).FCCheckBox("cbInv").Checked And GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble > 0 Then
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dr("Consec").ToString.ToEntero}")(0) 'Charlie
TmpDr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero 'Charlie
dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlealmacen").SelectedValue.ToEntero
dr("Cantidad") = GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble
Else
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dr("Consec").ToString.ToEntero}")(0) 'Charlie
TmpDr("CveAlmacen") = 0 'Charlie
dr("CveAlmacen") = 0
End If
x = x + 1
Next
Dim cvemovimientosalida = 0
Dim cvemovimientoentrada = 0
Dim cvemovimientosalidagasto = 0
Dim folio = 0
Dim fecha As Date = TxtFecha.Text.ToDate
Dim indice = 0
Dim importeconcepto = 0.0
Dim listalmacenes = (From cvealmacen In DtInv.AsEnumerable() Where cvealmacen.Field(Of Integer)("cvealmacen") > 0 Select cvealmacen.Field(Of Integer)("cvealmacen")).Distinct().ToList
For Each tcvealmacen As Integer In listalmacenes
If GvInv.Rows(indice).FCDropDownList("ddlrecibirinv").SelectedValue = "1" Then
Continue For
End If
indice += 1
''agregamos la salida de consignacion
'folio = objinventario.getfoliosiguiente(3, usuarioactual.cveempresa)
'cvemovimientosalida = objinventario.addmovimiento(cvealmacenconsignacion, 3, ddlmoneda.selectedvalue.toentero, fecha, folio, usuarioactual.cveusuario, usuarioactual.cveempresa, cvecompra, -1, -1, -1)
'if cvemovimientosalida <= 0 then
' errormovinv = true
' exit for
'else
' for each dr as datarow in dtinv.rows
' if dr("cvealmacen").tostring.toentero = tcvealmacen then
' if not objinventario.addmovimientodetalle(cvemovimientosalida, dr("cantidad").tostring.todouble, ddlum.selectedvalue.toentero, dr("cveps").tostring.toentero, 0, -1) then
' errormovinv = true
' exit for
' end if
' end if
' next
'end if
'agregamos la entrada
If Not UsuarioActual.Empresa.UsaAC Then fecha = Now
folio = ObjInventario.GetFolioSiguiente(2, UsuarioActual.CveEmpresa)
cvemovimientoentrada = ObjInventario.AddMovimiento(tcvealmacen, 2, 1, fecha, folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar))
If cvemovimientoentrada <= 0 Then
ErrorMovInv = True
Exit For
Else
CveMovimientoInventario = cvemovimientoentrada
ListaMovimientosAlmacen.Add(CveMovimientoInventario)
For Each dr As DataRow In DtInv.Rows
If dr("cvealmacen").ToString.ToEntero = tcvealmacen Then
importeconcepto = If(DdlMoneda.SelectedValue.ToEntero = 1, dr("pu").ToString.ToDouble, dr("pu").ToString.ToDouble * TipoCambioGuardar)
If Not ObjInventario.AddMovimientoDetalle(cvemovimientoentrada, dr("cantidad").ToString.ToDouble, dr("cveum").ToString.ToEntero, dr("cveps").ToString.ToEntero, importeconcepto, -1, PUTC:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, dr("pu").ToString.ToDouble), CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero) Then
ErrorMovInv = True
Exit For
End If
End If
Next
End If
'agregamos la salida gasto
folio = ObjInventario.GetFolioSiguiente(3, UsuarioActual.CveEmpresa)
cvemovimientosalidagasto = ObjInventario.AddMovimiento(tcvealmacen, 3, DdlMoneda.SelectedValue.ToEntero, fecha.AddSeconds(1), folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1)
If cvemovimientosalidagasto <= 0 Then
ErrorMovInv = True
Exit For
Else
If ObjInventario.GetMovimientosDetalle(cvemovimientoentrada, UsuarioActual.CveEmpresa) Then
For Each dr As DataRow In ObjInventario.DtResultados.Rows
If Not ObjInventario.AddMovimientoDetalle(cvemovimientosalidagasto, dr("cantidad").ToString.ToDouble, dr("cveum").ToString.ToEntero, dr("cveps").ToString.ToEntero, 0, dr("cveaf").ToString.ToEntero, CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero) Then
ErrorMovInv = True
Exit For
End If
Next
End If
End If
Next
End If
''ALMACEN NORMAL
Else
'OBTIENE ALMACENES
Dim x As Integer = 0
For Each Dr As DataRow In DtInv.Rows
If GvInv.Rows(x).FCCheckBox("cbInv").Checked And GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDecimal > 0 Then
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Dr("Consec").ToString.ToEntero}")(0)
TmpDr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero
Dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero
Dr("Cantidad") = GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble
Else 'limpio el valor para que no truene en linq mas abajo
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Dr("Consec").ToString.ToEntero}")(0)
TmpDr("CveAlmacen") = 0
Dr("CveAlmacen") = 0
End If
x = x + 1
Next
Dim i As Integer = 0
Dim ListAlmacenes = (From CveAlmacen In DtInv.AsEnumerable() Where CveAlmacen.Field(Of Integer)("CveAlmacen") > 0 Select CveAlmacen.Field(Of Integer)("CveAlmacen")).Distinct().ToList
Dim indice = 0
Dim ImporteConcepto = 0.0
For Each tCveAlmacen As Integer In ListAlmacenes
If GvInv.Rows(indice).FCDropDownList("DdlRecibirInv").SelectedValue = "1" Then
Continue For
End If
indice += 1
Dim fecha As Date = TxtFecha.Text.ToDate
If Not UsuarioActual.Empresa.UsaAC Then fecha = Now
CveMovimientoInventario = ObjInventario.AddMovimiento(tCveAlmacen, 2, 1, fecha, 0, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar))
If CveMovimientoInventario <= 0 Then
ErrorMovInv = True
Else
Dim DtDetalle As New DataTable
Dim DtEquivalencias As DataTable
Dim CveProducto As Integer
Dim CantidadInv As Double
Dim PUInv As Double
Dim CveUnidad As Integer
Dim CostoIndirecto As Double
ListaMovimientosAlmacen.Add(CveMovimientoInventario)
For Each Dr As DataRow In DtInv.Rows
CveProducto = Dr("CvePS").ToString.ToEntero
CveUnidad = Dr("CveUM").ToString.ToEntero
CantidadInv = Dr("Cantidad").ToString.ToDouble
PUInv = Dr("PU").ToString.ToDouble
CostoIndirecto = Dr("CostoIndirectoAlmacen").ToString.ToDouble
If Dr("CveMetodoInventario").ToString.ToEntero = 5 Then
'SI FUE POR SERIE LOTE
DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", Dr("CvePS")))
If DtDetalle.Rows.Count > 0 Then
For Each drr As DataRow In DtDetalle.Rows
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, 1, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, -1, SerieLote:=drr("Serie").ToString, FechaCaducidad:=drr("FechaCaducidad").ToString.ToDate, CostoIndirecto:=Dr("CostoIndirectoAlmacen").ToString.ToDouble, CveCompraDetalle:=Dr("CveCompraDetalle").ToString.ToEntero, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then
ErrorMovInv = True
Exit For
End If
Next
End If
Else
'UNIDAD BASE - EQUIVALENCIAS - INVENTARIO
If UsuarioActual.CveEmpresa = 1 Then
DtEquivalencias = New DataTable
DtEquivalencias = GlobalDTProductosServiciosEquivalencias(CveProducto, -1)
Dim CveUnidadBase As Integer = DtEquivalencias.FiltroPrimeroValor("CveUM", "UnidadBase = 'True'").ToEntero
Dim drUMBase As DataRow = DtEquivalencias.FiltroPrimero("UnidadBase = 'True'")
'SI LA UNIDAD ACTUAL NO ES LA BASE SACA PROPORCION (EQUIVALENTE)
If CveUnidadBase <> CveUnidad Then
' LO QUE PUSE LO QUE VALE UNIDAD BASE LO QUE VALE UNIDAD SELECCIONADA
CantidadInv = Dr("Cantidad").ToString.ToDouble * drUMBase("Cantidad").ToString.ToDouble / DtEquivalencias.FiltraParametros(String.Format("CveUM = {0}", CveUnidad)).Rows(0)("Cantidad").ToString.ToDouble
PUInv = PUInv * Dr("Cantidad").ToString.ToDouble / CantidadInv
CostoIndirecto = CostoIndirecto * Dr("Cantidad").ToString.ToDouble / CantidadInv
CveUnidad = CveUnidadBase
End If
End If
'si no es por serie lote
ImporteConcepto = If(DdlMoneda.SelectedValue.ToEntero = 1, PUInv, PUInv * TipoCambioGuardar)
ImporteConcepto = If(UsuarioActual.Empresa.UsaAC, ImporteConcepto * IVA, ImporteConcepto)
If Dr("CveAlmacen").ToString.ToEntero = tCveAlmacen Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, CantidadInv, CveUnidad, Dr("CvePS").ToString.ToEntero, ImporteConcepto, -1, PUTC:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, Dr("PU").ToString.ToDouble), CostoIndirecto:=CostoIndirecto, CveCompraDetalle:=Dr("CveCompraDetalle").ToString.ToEntero, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then
ErrorMovInv = True
Exit For
End If
End If
End If
i = i + 1
Next
End If
Next
End If
If AplicarCostoIndirecto(ObjInventario, ObjCompras) Then
ErrorMovInv = True
End If
'Else
' Alert("El tipo de cambio no esta actualizado. Por favor comuniquese con un asistente SIG.", TipoMensaje.MsgError)
' ErrorMovInv = True
'End If
End If
'*************************************************** P R I M E R A P A R T E C O M P R A S **************************************************************************************************************************************************************************************************************************************************************************************************
'P R E P O L I Z A S
Dim CveConceptoAfectacion As Integer = 5 'Proveedores
Dim CveConceptoAfectacionContado As Integer = 17 'Pago Proveedores
Dim CveConceptoCompra As Integer = 6 'Compra
Dim CveConceptoIVA As Integer = 14 'IVA Trasladado
Dim CveConceptoRetIVA As Integer = 15 'Ret IVA
Dim CveConceptoRetISR As Integer = 16 'Ret ISR
Dim CveConceptoDescuento As Integer = 24 'DSC
Dim CveConceptoRetIEPS As Integer = 25 'IEPS
Dim CveConceptoRetOtrosImpuestos As Integer = 27 'Otros Impuestos
Dim CveCreditoDetalle As Integer = -1
'Afectable con el tabpanel Contable
Dim CveProveedorLocal As Integer
Dim CveProveedorConcepto As Integer
Dim CveAcreedor As Integer
Dim CveColectiva As Integer = -1
Dim TipoCreditoInteres As Boolean = False
Dim ImporteIECredito As Decimal = 0
Dim SeContabiliza As Boolean = If(UsuarioActual.CveEmpresa.Contiene(119) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ant"), False, True)
If RBLPago.SelectedValue = "1" Or RBLPago.SelectedValue = "3" Then
'Credito Proveedor
CveProveedorLocal = CveProveedor
CveProveedorConcepto = CveProveedor
CveAcreedor = -1
Else
'cuando es contado
Select Case RBLContado.SelectedValue
Case "1", "6" 'Proveedores
CveProveedorLocal = CveProveedor
CveProveedorConcepto = CveProveedor
CveAcreedor = -1
Case "2" ' F y E
CveProveedorLocal = CveProveedor
CveProveedorConcepto = CveProveedor
CveAcreedor = -1
CveIE = DDlCheques.SelectedValue.ToEntero
Case "3" ' Doctos
CveProveedorConcepto = CveProveedor
If DdlTipoCredito.SelectedValue.ToEntero = 2 Then
CveProveedorLocal = CveProveedor
CveProveedorConcepto = CveProveedor
CveAcreedor = -1
CveColectiva = -1
' CveConceptoAfectacionContado = 55
CveConceptoAfectacion = 59
CveCreditoDetalle = DdlCreditoDetalle.SelectedValue.ToEntero
ObjIE.UpdateCreditosDetalle(3, CveCreditoDetalle)
End If
Case "4" ' Deudores
CveProveedorLocal = CveProveedor
CveProveedorConcepto = DdlDeudor.SelectedValue.ToEntero
For Each row As GridViewRow In GvDeudores.Rows
If row.FCCheckBox("Chk").Checked Then
CveIE = row.DataKey("CveIE").ToString.ToEntero
Exit For
End If
Next
CveAcreedor = -1
CveColectiva = -1
' CveConceptoAfectacionContado = 55
CveConceptoAfectacion = 37
Case "5" ' Acreedores
CveProveedorLocal = CveProveedor
CveProveedorConcepto = DdlAcreedor.SelectedValue.ToEntero
CveAcreedor = -1
CveColectiva = -1
CveConceptoAfectacion = 41
If EmpresaPrueba Then
CveIE = If(DdlAcreedorDetalle.SelectedValue.ToEntero = -2, -1, DdlAcreedorDetalle.SelectedValue.ToEntero)
End If
End Select
End If
If RBLPago.SelectedValue.ToEntero = 4 Then
Dim TmpTotal As Decimal = TxtTotal.Text.ToDecimal
Dim TmpTotalCreditos As Decimal = 0
For Each GvRow As GridViewRow In GvCreditos.Rows
TmpTotalCreditos = TmpTotalCreditos + GvRow.FCTextBox("TxtCapital").Text.ToDecimal
TmpTotalCreditos = TmpTotalCreditos + GvRow.FCTextBox("TxtInteres").Text.ToDecimal
TmpTotalCreditos = TmpTotalCreditos + GvRow.FCTextBox("TxtAmbos").Text.ToDecimal
Next
If TmpTotalCreditos > TmpTotal Then
ErrorCredito = True
End If
For Each GvRow As GridViewRow In GvCreditos.Rows
Dim Capital As Decimal = GvRow.FCTextBox("TxtCapital").Text.Replace(",", "").ToDecimal
Dim Interes As Decimal = GvRow.FCTextBox("TxtInteres").Text.Replace(",", "").ToDecimal
Dim Ambos As Decimal = GvRow.FCTextBox("TxtAmbos").Text.Replace(",", "").ToDecimal
Dim CveCreditoDetalleTemp As Integer = GvRow.DataKey("CveCreditoDetalle").ToEntero
Dim CveCreditoTemp As Integer = GvRow.DataKey("CveCredito").ToEntero
Dim EstusTemp = GvRow.DataKey("Estatus").ToEntero
' Dim ImporteOpcionCompra As Decimal = GvRow.DataKey("ImporteOpcionCompra").ToDecimal
Dim Marcador As Decimal = GvRow.DataKey("Marcador").ToEntero
Dim CreditoEstatus As Integer = -1
If Capital > 0 Or Interes > 0 Or Ambos > 0 Then
If ObjIE.GetCreditosDetalle(CveCreditoTemp, -1) Then
Dim CveCompraCapital As Integer = -1
Dim CveCompraInteres As Integer = -1
'Dim ImporteCapital As Decimal = 0
' Dim ImporteCapitalIVA As Decimal = 0
'Dim ImporteInteres As Decimal = 0
' Dim ImporteInteresIVA As Decimal = 0
' Dim ImporteIEMensualidad As Decimal = ObjIE.DtResultados.FiltroPrimeroValor("ImporteIE", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToDecimal
CreditoEstatus = ObjIE.DtResultados.FiltroPrimeroValor("Estatus", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero
CveCompraCapital = ObjIE.DtResultados.FiltroPrimeroValor("CveCompra", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero
CveCompraInteres = ObjIE.DtResultados.FiltroPrimeroValor("CveCompraInteres", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero
CveCompraCapital = If(CveCompraCapital < 1, -1, CveCompraCapital)
CveCompraInteres = If(CveCompraInteres < 1, -1, CveCompraInteres)
TipoCreditoInteres = Boolean.Parse(ObjIE.DtResultados.FiltroPrimeroValor("TipoInteres", $"CveCreditoDetalle = {CveCreditoDetalleTemp}"))
ImporteIECredito = ObjIE.DtResultados.FiltroPrimeroValor("ImportePago", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToDecimal
If Ambos > 0 Then
CveCompraCapital = CveCompra
CveCompraInteres = CveCompra
Capital = Ambos
Interes = Ambos
End If
If Capital > 0 Then
CveCompraCapital = CveCompra
End If
If Interes > 0 Then
CveCompraInteres = CveCompra
End If
If (CveCompraCapital > 0 And CveCompraInteres > 0) And EstusTemp = 2 Then
If EstusTemp = 2 Then
EstusTemp = 3
ElseIf EstusTemp = 1 Or EstusTemp = 4 Then
EstusTemp = 4
End If
ElseIf CveCompraCapital > 0 Or CveCompraInteres > 0 Then
If EstusTemp = 2 Then
EstusTemp = 2
ElseIf EstusTemp = 1 Or EstusTemp = 4 Then
EstusTemp = 4
End If
End If
If Not ObjIE.UpdateCreditosDetalle(CveCreditoDetalleTemp, "01/01/2000".ToDate, -1, -1, -1, -1, -1, -1, EstusTemp, CveCompra:=CveCompraCapital, CveCompraInteres:=CveCompraInteres, importeCapital:=Capital,
ImporteInteres:=Interes) Then
ErrorCredito = True
End If
'ObjIE.UpdateCreditosDetalle(CveCreditoDetalle, "01/01/2000".ToDate, -1, -1, -1, -1, -1, -1, Estatus)
Else
ErrorCredito = True
End If
End If
Next
End If
Dim TipoMovimientoCompra As Boolean = False
Dim TipoMovimientoImpuestos As Boolean = True
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
CveConceptoAfectacion = 18 'Devolución del Proveedor (NC)
TipoMovimientoCompra = Not TipoMovimientoCompra
TipoMovimientoImpuestos = Not TipoMovimientoImpuestos
End If
If EmpresaPrueba Then 'Empresa Prueba
Dim PorcentajePagos As Decimal = 0
Dim sumaPagos As Decimal = 0
Dim tipoCambioActual As Decimal
Dim tipoCambioPago As Decimal
Dim alertaContabilizacion As String = "Se enviaron correctamente las siguientes pólizas:<br><br>"
Dim idCuentaContabilizacion As Long = 1
Dim BanderaContilizar = True
Dim CveCuentaContabilizacion As Long = 1
Dim FechaMovimiento As Date = TxtFecha.Text.ToDate
Dim DT As DataTable = Nothing
Dim CuentasContablesInvalidas As New StringBuilder
Dim CuentasContablesInvalidasSIG As New StringBuilder
Dim ConceptoPersonal As String = ""
Dim IdCtaIVAXAcreditar As Integer = 0
Dim IdCtaIVAAcreditable As Integer = 0
Dim GuardoConcepto18 As Boolean = False
If GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=PorcentajeIVA).Rows.Count > 0 Then
IdCtaIVAXAcreditar = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=PorcentajeIVA).Rows(0)("IdCtaIVAXAcreditar").ToString.ToEntero
IdCtaIVAAcreditable = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=PorcentajeIVA).Rows(0)("IdCtaIVAAcreditable").ToString.ToEntero
End If
Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1"
If UsuarioActual.CveEmpresa = 119 AndAlso (DdlPersonalReembolso.SelectedValue.ToEntero > 0 Or DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero > 0) Then
AutoConta = False
End If
If (AutoConta Or UsuarioActual.Empresa.UsaAC) And ObjContaAC Is Nothing Then
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
End If
'********************** Variables '**********************
'****** Pagos
'Bancos (30)
Dim importeBanco As Decimal = 0
If CveIE > 0 AndAlso RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue = "1" AndAlso (Not DivTarjeta.Visible Or DdlTarjeta.SelectedValue.ToEntero = -1) Then
importeBanco = TxtDocumentoImporte.Text.ToDecimal
sumaPagos += importeBanco
End If
'Caja Chica (30)
Dim importeCajaChica As Decimal = 0
If CveIE > 0 AndAlso RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue = "6" Then
importeCajaChica = TxtDocumentoImporteCaja.Text.ToDecimal
sumaPagos += importeCajaChica
End If
'Funcionarios y Empleados (29)
Dim importeFE As Decimal = 0
If CveIE > 0 AndAlso RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue = "2" Then
ViewState("CvePersonal") = DdlFuncionarioEmpleado.SelectedValue.ToEntero
ConceptoPersonal = DdlFuncionarioEmpleado.SelectedItem.ToString
importeFE = TxtDocumentoImporteFE.Text.ToDecimal
sumaPagos += importeFE
End If
'Deudores (37)
Dim importeDD As Decimal = 0
If CveIE > 0 AndAlso RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue = "4" Then
ConceptoPersonal = DdlDeudor.SelectedItem.ToString
importeDD = TxtContadoDeudor.Text.ToDecimal
sumaPagos += importeDD
End If
'Acreedores (41) SinTarjeta
Dim importeAcreedores As Decimal = 0
If (CveIE > 0 Or DdlAcreedorDetalle.SelectedValue.ToEntero = -2) AndAlso RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue = "5" Then
ConceptoPersonal = DdlAcreedor.SelectedItem.ToString
importeAcreedores = TxtContadoAcreedor.Text.ToDecimal
sumaPagos += importeAcreedores
End If
'Acreedores (42) ConTarjeta
Dim importeAcreedoresTarjeta As Decimal = 0
If CveIE > 0 AndAlso RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue = "1" AndAlso DivTarjeta.Visible AndAlso DdlTarjeta.SelectedValue.ToEntero > 0 Then
ConceptoPersonal = DdlTarjeta.SelectedItem.ToString
importeAcreedoresTarjeta = TxtDocumentoImporte.Text.ToDecimal
sumaPagos += importeAcreedoresTarjeta
End If
'Creditos/Documentos (59)
Dim importeCreditos As Decimal = 0
Dim CveIECreditos = -1
If RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue = "3" AndAlso DdlTipoCredito.SelectedValue.ToEntero = 2 Then
If ObjIE.GetCreditosDetalle(DdlCredito.SelectedValue.ToEntero, -1) Then
CveIECreditos = ObjIE.DtResultados.FiltroPrimero($"CveCreditoDetalle = {DdlCreditoDetalle.SelectedValue.ToEntero}")("CveIE").ToString.ToEntero
End If
ConceptoPersonal = DdlCredito.SelectedItem.ToString
importeCreditos = TxtTotal.Text.ToDecimal
sumaPagos += importeCreditos
End If
PorcentajePagos = If(TxtTotal.Text.ToDecimal > 0, sumaPagos / TxtTotal.Text.ToDecimal, 0)
'****** Acreditables
'IVA Acreditable (19)
Dim importeIVAAcreditable As Decimal = 0
importeIVAAcreditable = TxtIVA.Text.ToDecimal * PorcentajePagos
'IEPS Acreditable (26)
Dim ImporteIEPSAcreditable As Decimal = 0
ImporteIEPSAcreditable = TxtIEPS.Text.ToDecimal * PorcentajePagos
'RetIVA Acrediable (22)
Dim importeRetIVAAcreditable As Decimal = 0
importeRetIVAAcreditable = TxtRetIVA.Text.ToDecimal * PorcentajePagos
'RetISR Acreditable (23)
Dim importeRetISRAcreditable As Decimal = 0
importeRetISRAcreditable = TxtRetISR.Text.ToDecimal * PorcentajePagos
'****** X Acreditar
'IVA X Acreditar (14)
Dim importeIVAxAcreditar As Decimal = 0
importeIVAxAcreditar = TxtIVA.Text.ToDecimal
'IEPS X Acreditar (25)
Dim ImporteIEPSxAcreditar As Decimal = 0
ImporteIEPSxAcreditar = TxtIEPS.Text.ToDecimal
'Otros Impuestos (224)
Dim OtrosImpuestos As Decimal = 0
OtrosImpuestos = TxtOtrosImpuestos.Text.ToDecimal
'RetIVA X Acreditar (15)
Dim importeRetIVAxAcreditar As Decimal = 0
importeRetIVAxAcreditar = TxtRetIVA.Text.ToDecimal
'RetISR X Acreditar (16)
Dim importeRetISRxAcreditar As Decimal = 0
importeRetISRxAcreditar = TxtRetISR.Text.ToDecimal
'****** Movimientos Independientes
'Pago Proveedores (17)
Dim importePagoProv As Decimal = 0
importePagoProv = sumaPagos
'If CveIE > 0 AndAlso ((RBLContado.SelectedValue = "2" AndAlso DdlFuncionarioEmpleado.SelectedValue.ToEntero > 0) Or (RBLContado.SelectedValue = "4" AndAlso DdlDeudor.SelectedValue.ToEntero > 0)) Then
' importePagoProv = TxtDocumentoImporteFE.Text.ToDecimal
'End If
'Compra (6)
'Ya que es un foreach todo su proceso esta en el Case 6
'Proveedores (5)
Dim importeProv As Decimal = 0
importeProv = TxtTotal.Text.ToDecimal
'Nota de Credito (18)
Dim importeNC As Decimal = 0
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
importeNC = TxtTotal.Text.ToDecimal
End If
'**************************************************************************************************************************
If DdlMoneda.SelectedValue.ToString.ToEntero = 2 Then
tipoCambioActual = GlobalTipoCambio(FechaMovimiento).ToString.ToDecimal
tipoCambioActual = If(DivTC.Visible, TipoCambio.ToDecimal, tipoCambioActual)
tipoCambioPago = GlobalTipoCambio(TxtFechaPago.Text.ToDate).ToString.ToDecimal
Else
tipoCambioActual = 1
tipoCambioPago = 1
End If
'CASO ESPECIAL CREDITOS
If CveIECreditos > 0 Then
CveIE = CveIECreditos
'Dim CveIEProvisional = CveIE
End If
If ObjConta.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPrePoliza) Then
Dim DTPlatilla As New DataTable
DTPlatilla = ObjConta.DtResultados
For Each Row As DataRow In DTPlatilla.Rows
Dim ConceptoContable = Row("CveConcepto").ToString.ToEntero
Dim TipoMovimiento As Boolean = If(Row("TipoMovto").ToString = "True", True, False)
Dim importeMovimiento As Decimal = 0
Dim IdCtaContable As Integer = 0
Dim CveCuenta As Integer = 0
Dim Concepto As String = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, NombreProveedor, $"{TxtSerie.Text}-{TxtFolio.Text}", If(TxtDocumentoFolio.Visible, TxtDocumentoFolio.Text, If(TxtDocumentoFolioCaja.Visible, TxtDocumentoFolioCaja.Text, ConceptoPersonal)))
Dim importeMN As Decimal = 0
Dim Multiplicador As Integer = If(Row("Multiplicador").ToString.ToEntero = 1, 1, -1)
Dim Referencia As String = $"{TxtSerie.Text}-{TxtFolio.Text}" ' concatenation interpolation
Dim PorcentajeImpuesto As Decimal = 0
Select Case ConceptoContable
Case 17 'Pago Proveedores
importeMovimiento = importePagoProv
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
If RBLPago.SelectedValue.ToEntero = 4 And EstatusCredito.Contiene(2, 102) Then 'SI ES CRÉDITO Y ESTA PAGADO
Dim IdSegmentoNegocio As Integer = -1
For Each Row2 As DataRow In TmpDT.Rows
importeMovimiento = TxtTotal.Text.ToDecimal 'TmpDT.SUM("Total", String.Format("ISNULL(TipoAF,0) <> 2 And ISNULL(CveAlmacen,0) = 0 And ISNULL(AplicaCostoIndirecto,0) <> 1 And CveClasificacion = {0} And CveSubProyecto = {1} And ISNULL(CveTipoGasto,0) = {2}", Row2("CveClasificacion").ToString.ToEntero, Row2("CveSubProyecto").ToString.ToEntero, Row2("CveTipoGasto").ToString.ToEntero)).ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
'CLASIFICACION
If Row2("CveClasificacion").ToString.ToEntero > 0 Then
If ObjConta.GetRetCuenta(6, Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 AndAlso ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaGastoSIG").ToString.ToEntero
Else
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
End If
End If
End If
'SEGMENTO DE NEGOCIO
Dim drT As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero).FiltroPrimero(String.Format("CveSubProyecto = {0} ", Row2("CveSubProyecto").ToString.ToEntero))
If drT IsNot Nothing Then
IdSegmentoNegocio = drT("IdSegNeg").ToString.ToEntero
End If
'AGREGA MOVIMIENTO
If importeMovimiento <> 0 Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString)
CveCuentaContabilizacion = 0
End If
End If
Next
Dim CveClasificacionDT As Integer = -1
Dim CveSubProyectoDT As Integer = -1
Dim CveTipoGastoDT As Integer = -1
If TmpDT.Rows.Count > 0 Then
CveClasificacionDT = TmpDT(0)("CveClasificacion").ToString.ToEntero
CveSubProyectoDT = TmpDT(0)("CveSubProyecto").ToString.ToEntero
CveTipoGastoDT = TmpDT(0)("CveTipoGasto").ToString.ToEntero
End If
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
Dim ImporteSubCre As Decimal = TxtSubTotal.Text.ToDecimal
Dim ImporteSubCreMN As Decimal = TxtSubTotal.Text.ToDecimal * tipoCambioActual
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteSubCre, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=CveClasificacionDT, CveSubProyecto:=CveSubProyectoDT, ImporteMX:=ImporteSubCreMN, ImporteME:=If(tipoCambioActual = 1, 0, ImporteSubCre), CveCuenta:=CveCuenta, CveTipoGasto:=CveTipoGastoDT, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, Referencia, 41, Concepto, FechaMovimiento, CtaProveedorAcreedores, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=CveClasificacionDT, CveSubProyecto:=CveSubProyectoDT, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveTipoGasto:=CveTipoGastoDT, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
If TipoCreditoInteres Then
Dim importeMovimientoIn As Decimal = ImporteIECredito - importeMovimiento
Dim importeMNIn As Decimal = importeMovimientoIn * tipoCambioActual * Multiplicador
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimientoIn, Referencia, 41, Concepto, FechaMovimiento, CtaProveedorAcreedores, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=CveClasificacionDT, CveSubProyecto:=CveSubProyectoDT, ImporteMX:=importeMNIn, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimientoIn), CveCuenta:=CveCuenta, CveTipoGasto:=CveTipoGastoDT, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimientoIn, Referencia, 50, Concepto, FechaMovimiento, ViewState("IdCtaContDocsXPagar").ToString.ToEntero(), IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=CveClasificacionDT, CveSubProyecto:=CveSubProyectoDT, ImporteMX:=importeMNIn, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimientoIn), CveCuenta:=CveCuenta, CveTipoGasto:=CveTipoGastoDT, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If tipoCambioActual = 1 Then
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
Else
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If importeMovimiento <> 0 AndAlso (IdCtaContable > 0 Or CveCuenta > 0) Then 'Cuando tiene complementaria lo dividimos en dos
importeMN = importeMovimiento
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Referencia, 201, Concepto, FechaMovimiento, IdCtaContable, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=importeMovimiento * tipoCambioActual - importeMovimiento, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
End If
Case 30 'Bancos
importeMovimiento = importeBanco + importeCajaChica 'Uno de los dos debe ser 0
importeMN = importeMovimiento * tipoCambioPago * Multiplicador
IdCtaContable = IdCuentaBancaria
CveCuenta = CveCuentaBancaria
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
'' falta complementaria
Case 19 'IVA Acreditable
If UsuarioActual.Empresa.Funcionalidad(521) = "1" Then
If importePagoProv = importeProv Then
importeMovimiento = TxtIVA.Text.ToDecimal
Else
importeMovimiento = 0
End If
Else
importeMovimiento = importeIVAAcreditable
End If
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
PorcentajeImpuesto = PorcentajeIVA
IdCtaContable = If(IdCtaIVAAcreditable > 0, IdCtaIVAAcreditable, 0)
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIVAAcreditable").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIVAAcreditableSIG").ToString.ToEntero
End If
End If
'Agregamos el Opuesto del 19 -> 14
If importeMovimiento <> 0 Then
Dim IdCtaIva As Integer = 0
Dim CveCuentaIVA As Integer = 0
IdCtaIva = If(IdCtaIVAXAcreditar > 0, IdCtaIVAXAcreditar, 0)
If ObjConta.GetRetCuenta(14, UsuarioActual.CveEmpresa) And Not IdCtaIva > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaIva = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditar").ToString.ToEntero
CveCuentaIVA = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditarSIG").ToString.ToEntero
End If
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 14, Concepto + If(tipoCambioActual > 1, $" TC: {tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}", ""), FechaMovimiento, IdCtaIva, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento * tipoCambioActual, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuentaIVA, PorcentajeImpuesto:=PorcentajeImpuesto, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
Case 14 'IVA X Acreditar
importeMovimiento = importeIVAxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
PorcentajeImpuesto = PorcentajeIVA
IdCtaContable = If(IdCtaIVAXAcreditar > 0, IdCtaIVAXAcreditar, 0)
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditar").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditarSIG").ToString.ToEntero
End If
End If
Case 25 'IEPS X Acreditar
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
importeMovimiento = ImporteIEPSxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditarSIG").ToString.ToEntero
End If
End If
End If
Case 224 'Otros impuestos
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
importeMovimiento = OtrosImpuestos
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
IdCtaContable = If(UsuarioActual.CveEmpresa = 119, 1171, -1)
CveCuenta = -1
End If
Case 26 'IEPS Acreditable
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
importeMovimiento = ImporteIEPSAcreditable
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSAcreditableSIG").ToString.ToEntero
End If
End If
'Agregamos el Opuesto del 26 -> 25
If importeMovimiento <> 0 Then
Dim IdCtaIEPS As Integer = 0
Dim CveCuentaIEPS As Integer = 0
If ObjConta.GetRetCuenta(25, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaIEPS = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero
CveCuentaIEPS = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditarSIG").ToString.ToEntero
End If
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 25, Concepto + If(tipoCambioActual > 1, $" TC: {tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}", ""), FechaMovimiento, IdCtaIEPS, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento * tipoCambioActual, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuentaIEPS, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
Case 22 'RetIVA Acreditable Honorarios/Serv. Prof.
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 1 Then
importeMovimiento = importeRetIVAAcreditable
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(308).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(308).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
'Agregamos el Opuesto del 22 -> 15
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 15, Concepto + If(tipoCambioActual > 1, $" TC: {tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}", ""), FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento * tipoCambioActual, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
End If
End If
Case 15 'RetIVA X Acreditar Honorarios/Serv. Prof.
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 1 Then
importeMovimiento = importeRetIVAxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(307).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(307).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 184 'RetIVA Acreditable Fletes P.F
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 2 Then
importeMovimiento = importeRetIVAAcreditable
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(310).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(310).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
'Agregamos el Opuesto del 184 -> 183
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 183, Concepto + If(tipoCambioActual > 1, $" TC: {tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}", ""), FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento * tipoCambioActual, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
End If
End If
Case 183 'RetIVA X Acreditar Fletes P.F
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 2 Then
importeMovimiento = importeRetIVAxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(309).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(309).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 248 'RetIVA X Acreditar Arrendamiento
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 AndAlso DdlRetIVAConcepto.SelectedValue.ToEntero = 4 Then
importeMovimiento = importeRetIVAxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(313).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(313).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
Case 186 'RetIVA Acreditable Fletes P.M.
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 3 Then
importeMovimiento = importeRetIVAAcreditable
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(312).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(312).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
'Agregamos el Opuesto del 186 -> 185
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 185, Concepto + If(tipoCambioActual > 1, $" TC: {tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}", ""), FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento * tipoCambioActual, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
End If
End If
Case 185 'RetIVA X Acreditar Fletes P.M.
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 3 Then
importeMovimiento = importeRetIVAxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(311).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(311).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 249 'RetIVA Acreditable Arrendamiento
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 AndAlso DdlRetIVAConcepto.SelectedValue.ToEntero = 4 Then
importeMovimiento = importeRetIVAAcreditable
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(314).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(314).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
End If
Case 23 'RetISR Acreditable
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 1 Then
importeMovimiento = importeRetISRAcreditable
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(316).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(316).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
'Agregamos el Opuesto del 23 -> 16
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 15, Concepto + If(tipoCambioActual > 1, $" TC: {tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}", ""), FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento * tipoCambioActual, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
End If
Case 16 'Ret ISR X Acreditar
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 1 Then
importeMovimiento = importeRetISRxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(315).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(315).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
Case 243 'RetISR X Acreditar Terceros y Arrendamiento
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 2 Then
importeMovimiento = importeRetISRxAcreditar
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(317).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(317).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
End If
Case 244 'RetISR Acreditable Terceros y Arrendamiento
If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 2 Then
importeMovimiento = importeRetISRAcreditable
importeMN = Math.Round(importeMovimiento, 2) * tipoCambioPago * Multiplicador
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(318).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(318).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
'Agregamos el Opuesto del 244 -> 243
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 243, Concepto + If(tipoCambioActual > 1, $" TC: {tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}", ""), FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento * tipoCambioActual, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}"
End If
End If
Case 64 'Ganancia
If tipoCambioActual <> 1 AndAlso TxtFechaPago.Text <> TxtFecha.Text Then
IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria
If tipoCambioPago < tipoCambioActual Then
importeMovimiento = Math.Abs(tipoCambioPago - tipoCambioActual) * importePagoProv
importeMovimiento -= Math.Abs(tipoCambioPago - tipoCambioActual) * importeIVAAcreditable
importeMovimiento += Math.Abs(tipoCambioPago - tipoCambioActual) * importeRetIVAAcreditable
importeMovimiento += Math.Abs(tipoCambioPago - tipoCambioActual) * importeRetISRAcreditable
importeMN = importeMovimiento
End If
Else
importeMovimiento = 0
End If
Case 65 'Perdida
If tipoCambioActual <> 1 AndAlso TxtFechaPago.Text <> TxtFecha.Text Then
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
If tipoCambioActual < tipoCambioPago Then
importeMovimiento = Math.Abs(tipoCambioPago - tipoCambioActual) * importePagoProv
importeMovimiento -= Math.Abs(tipoCambioPago - tipoCambioActual) * importeIVAAcreditable
importeMovimiento += Math.Abs(tipoCambioPago - tipoCambioActual) * importeRetIVAAcreditable
importeMovimiento += Math.Abs(tipoCambioPago - tipoCambioActual) * importeRetISRAcreditable
importeMN = importeMovimiento
End If
Else
importeMovimiento = 0
End If
Case 6 'Compra
If RBLPago.SelectedValue.ToEntero = 4 Then
Exit Select 'Es credito el concepto 6 se agrega en CASE 17
End If
If Not CveCompraRefacturacion > 0 OrElse ChkRefacNC.Checked Then
'AF TipoAF 2 Es para las compras
DT = TmpDT.FiltraParametros("ISNULL(TipoAF,0) = 2 AND ISNULL(AplicaCostoIndirecto,0) <> 1")
If DT.Rows.Count > 0 AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then
For Each Row2 As DataRow In DT.Rows
importeMovimiento = If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, Row2("ImporteSinImpuestos").ToString.ToDecimal, Row2("Total").ToString.ToDecimal)
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(49, Row2("CveActivoFijo").ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContActivoFijo").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCtaContActivoFijoSIG").ToString.ToEntero
End If
End If
If importeMovimiento <> 0 Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 49))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 49))("ConceptoContable").ToString)
CveCuentaContabilizacion = 0
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Row2("CodAF").ToString, 49, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveActivoFijo:=Row2("CveActivoFijo").ToString.ToEntero, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
Next
End If
'LIMPIA
importeMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
'COSTO ALMACEN
Dim DtAlmacenes = GlobalDTAlmacen(UsuarioActual.CveEmpresa)
If UsuarioActual.Empresa.UsaInventarios AndAlso Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
DT = TmpDT.FiltraParametros("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) > 0", "", {"CveAlmacen"})
'RECORREMOS PARA DETECTAR LA MODALIDAD DEL ALMACEN, EN CASO DE SER SOLO EXISTENCIA LIMPIAMOS CVEALMACEN
For Each Dr As DataRow In DT.Rows
If DtAlmacenes.FiltroPrimeroValor("Modalidad", $"CveAlmacen = {Dr("CveAlmacen").ToString.ToEntero}").ToString = "Solo Existencia" Then
Dr("CveAlmacen") = 0
End If
Dr.AcceptChanges()
Next
DT.AcceptChanges()
DT = DT.FiltraParametros("ISNULL(CveAlmacen,0) > 0")
If DT.Rows.Count > 0 AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then
For Each Row2 As DataRow In DT.Rows
importeMovimiento = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"CveAlmacen = {Row2("CveAlmacen")}").ToString.ToDecimal + TmpDT.SUM("CostoIndirectoAlmacen", $"CveAlmacen = {Row2("CveAlmacen")}").ToString.ToDecimal 'Row2("Total").ToString.ToDecimal + Row2("CostoIndirectoAlmacen").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(68, GvInv.HeaderRow.FCDropDownList("ddlAlmacen").SelectedValue.ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCtaContableSIG").ToString.ToEntero
End If
End If
If importeMovimiento <> 0 Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString)
CveCuentaContabilizacion = 0
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveMovimientoAlmacen:=CveMovimientoInventario, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
Next
End If
End If
'LIMPIA
importeMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
''FLETES
'If UsuarioActual.CveEmpresa.Contiene(119) And UsuarioActual.Empresa.UsaInventarios And DdlTipoComprobante.SelectedValue <> "NC" And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And CveConceptoContableAlmacen.Contiene(237, 240) Then
'End If
Dim CostoIndirectoAcum176 As Decimal = 0
'INV [MERCANCIA RECIBIDA POR ADELANTADO (OC) | MERCANCIA PENDIENTE POR RECIBIR (COMPRA) ]
If UsuarioActual.CveEmpresa.Contiene(1, 119) And UsuarioActual.Empresa.UsaInventarios And Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And CveConceptoContableAlmacen.Contiene(205, 176, 237, 240) Then
importeMovimiento = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND (ISNULL(CveTipoPS,0) = 2 OR (ISNULL(CveTipoPS,0) = 1 AND ISNULL(AplicaCostoIndirecto,0) = 1))").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
Dim ConceptoContabilizacion = 205
Dim ConceptoContabilizacionME = -1
Dim IdCtaContableME = -1
Dim ConceptoContabilizacionMEComp = -1
Dim IdCtaContableMEComp = -1
If OCVinculada Or CveConceptoContableAlmacen.Contiene(237, 240) Then
ConceptoContabilizacion = CveConceptoContableAlmacen
End If
BanderaContilizar = If(ConceptoContabilizacion = 205, False, True)
Dim UsaComplementariaFleteImportaciones As Boolean = False
Select Case ConceptoContabilizacion
Case 176
ConceptoContabilizacionME = 228
ConceptoContabilizacionMEComp = 229
Case 205
ConceptoContabilizacionME = 230
ConceptoContabilizacionMEComp = 231
Case 237
ConceptoContabilizacionME = 238
ConceptoContabilizacionMEComp = 239
importeMovimiento = TmpDT.SUMD(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"))
importeMN = importeMovimiento * tipoCambioActual * Multiplicador 'TIENE QUE TENER EL IMPORTEMN IGUAL AL IMPORTEMOVIMIENTO PORQUE NO TOMA EN CUENTA SI UN PRODUCTO ES TIPO SERVICIO
Case 240
ConceptoContabilizacionME = 241
ConceptoContabilizacionMEComp = 242
importeMovimiento = TmpDT.SUMD(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"))
importeMN = importeMovimiento * tipoCambioActual * Multiplicador 'TIENE QUE TENER EL IMPORTEMN IGUAL AL IMPORTEMOVIMIENTO PORQUE NO TOMA EN CUENTA SI UN PRODUCTO ES TIPO SERVICIO
End Select
If ObjConta.GetRetCuenta(ConceptoContabilizacion, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
If ObjConta.GetRetCuenta(ConceptoContabilizacionME, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableME = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
If ObjConta.GetRetCuenta(ConceptoContabilizacionMEComp, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableMEComp = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
'If importeMovimiento <> 0 Then
Select Case ConceptoContabilizacion
Case 176
Dim SumatoriaOCINV = 0.0D, Importe176 = 0.0D, ImporteME176 = 0.0D, ImporteMN176 = 0.0D, Importe228 = 0.0D, ImporteME228 = 0.0D, ImporteMN228 = 0.0D, Importe229 = 0.0D, ImporteME229 = 0.0D, ImporteMN229 = 0.0D, ImporteCI176 = 0.0D
For Each Dr As DataRow In TmpDT.FiltraParametros("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND ISNULL(CveTipoPS,0) = 2").Rows
If ObjOC.OrdenesCompraDetalleCostoPP(Dr("CveOrdenCompraDetalle").ToString.ToEntero) AndAlso ObjOC.DtResultados.Rows.Count = 1 Then
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text} OC: {ObjOC.DtResultados.FiltroPrimeroValor("Folio").ToString}"
Importe176 = ObjOC.DtResultados.FiltroPrimeroValor("Importe176").ToDecimal * Dr("Cantidad").ToString.ToDecimal : ImporteME176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteME176").ToDecimal * Dr("Cantidad").ToString.ToDecimal : ImporteMN176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteMN176").ToDecimal * Dr("Cantidad").ToString.ToDecimal
Importe228 = ObjOC.DtResultados.FiltroPrimeroValor("Importe228").ToDecimal * Dr("Cantidad").ToString.ToDecimal : ImporteME228 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteME228").ToDecimal * Dr("Cantidad").ToString.ToDecimal : ImporteMN228 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteMN228").ToDecimal * Dr("Cantidad").ToString.ToDecimal
Importe229 = ObjOC.DtResultados.FiltroPrimeroValor("Importe229").ToDecimal * Dr("Cantidad").ToString.ToDecimal : ImporteME229 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteME229").ToDecimal * Dr("Cantidad").ToString.ToDecimal : ImporteMN229 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteMN229").ToDecimal * Dr("Cantidad").ToString.ToDecimal
ImporteCI176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteCI176").ToDecimal
Dim TCAjuste As Decimal = ObjOC.DtResultados.FiltroPrimeroValor("TipoCambioAjuste").ToDecimal
'RMF. falta verificar el costo indirecto de la OC
If DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then
ImporteCI176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteCI228").ToDecimal
CostoIndirectoAcum176 += ImporteCI176
'se considera costoindirecto, para que la factura tiene en un concepto tipo servicio
SumatoriaOCINV += (Dr(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total")).ToString.ToDecimal * tipoCambioActual) - (ImporteMN228 + ImporteMN229 - ImporteCI176)
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, Importe228, Referencia, ConceptoContabilizacionME, Concepto, FechaMovimiento, IdCtaContableME, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=ImporteMN228, ImporteME:=ImporteME228, CveCuenta:=CveCuenta, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=TCAjuste, Contabilizable:=SeContabiliza) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, Importe229, Referencia, ConceptoContabilizacionMEComp, Concepto, FechaMovimiento, IdCtaContableMEComp, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=ImporteMN229, ImporteME:=ImporteME229, CveCuenta:=CveCuenta, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=TCAjuste, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
Else
ErrorPrepoliza = True
Exit For
End If
Else
CostoIndirectoAcum176 += ImporteCI176
'se considera costoindirecto, para que la factura tiene en un concepto tipo servicio
SumatoriaOCINV += (Dr(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total")).ToString.ToDecimal * tipoCambioActual) - (ImporteMN176 - ImporteCI176)
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, Importe176, Referencia, ConceptoContabilizacion, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=ImporteMN176, ImporteME:=ImporteME176, CveCuenta:=CveCuenta, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
End If
Else
Alert("Ocurrió un error al procesar la mercancia recibida por adelantado. Por favor comuniquese con asistencia SIG", TipoMensaje.MsgError)
ErrorPrepoliza = True
Exit For
End If
Next
If SumatoriaOCINV.RoundSQL <> 0 Then
' se abona el costo, cambiamos su naturaleza
SumatoriaOCINV = -SumatoriaOCINV
Dim CveClasificacionCostoOC = TmpDT.FiltroPrimeroValor("CveClasificacion", "ISNULL(TipoAF, 0) <> 2 And ISNULL(CveAlmacen, 0) = 0 And ISNULL(AplicaCostoIndirecto, 0) <> 1 And ISNULL(CveTipoPS, 0) = 2").ToEntero
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {CveClasificacionCostoOC}").ToString.ToEntero
CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", $"CveClasificacion = {CveClasificacionCostoOC}").ToString.ToEntero
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, SumatoriaOCINV, Referencia, 69, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveClasificacion:=CveClasificacionCostoOC, ImporteMX:=SumatoriaOCINV, CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
End If
Case 205, 237, 240
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If DdlMoneda.SelectedValue.ToEntero <> 1 AndAlso UsaComplementariaFleteImportaciones Then
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContabilizacionME, Concepto, FechaMovimiento, IdCtaContableME, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMovimiento, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMN - importeMovimiento, Referencia, ConceptoContabilizacionMEComp, Concepto, FechaMovimiento, IdCtaContableMEComp, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN - importeMovimiento, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
Else
ErrorPrepoliza = True
End If
Else
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMN, Referencia, ConceptoContabilizacion, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
End Select
'End If
End If
'NC CON PRODUCTOS - CUENTA PUENTE
If UsuarioActual.CveEmpresa.Contiene(119) AndAlso UsuarioActual.Empresa.UsaInventarios AndAlso DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") AndAlso Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
importeMovimiento = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND ISNULL(CveTipoPS,0) = 2").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
Dim ConceptoContabilizacionNC = 225
If ObjConta.GetRetCuenta(ConceptoContabilizacionNC, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
End If
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If importeMovimiento <> 0 Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString)
CveCuentaContabilizacion = 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), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
Dim ContienePSNeteoBonif As Boolean = False
For Each Dr As DataRow In TmpDT.Rows
If Dr("CveClasificacion").ToString.ToEntero.Contiene(20319) Then 'clasificación de Bonificación, no se incluirá en el neteo
ContienePSNeteoBonif = True
Exit For
End If
Next
If ContienePSNeteoBonif Then
importeMovimiento = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 ").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If importeMovimiento <> 0 Then
Dim IdCtaContableDescCompra As Integer = UsuarioActual.Empresa.Funcionalidad(405).ToEntero
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, Referencia, 259, Concepto, FechaMovimiento, IdCtaContableDescCompra, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -importeMovimiento, Referencia, 259, Concepto, FechaMovimiento, IdCtaContableDescCompra, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=-importeMN, ImporteME:=If(tipoCambioActual = 1, 0, -importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
Else
ErrorPrepoliza = True
End If
End If
End If
End If
If Not ChkNCInvNC.Checked Then
'GASTO
If UsuarioActual.CveEmpresa = 119 Then
DT = TmpDT
Else
DT = TmpDT.FiltraParametros("ISNULL(AplicaCostoIndirecto,0) <> 1")
End If
'RECORREMOS PARA DETECTAR LA MODALIDAD DEL ALMACEN, EN CASO DE SER SOLO EXISTENCIA LIMPIAMOS CVEALMACEN
For Each Dr As DataRow In DT.Rows
If DtAlmacenes.FiltroPrimeroValor("Modalidad", $"CveAlmacen = {Dr("CveAlmacen").ToString.ToEntero}").ToString = "Solo Existencia" Then
Dr("CveAlmacen") = 0
End If
Dr.AcceptChanges()
Next
DT.AcceptChanges()
DtAlmacenes.Dispose()
'QUITA 1-[MERCANCIA RECIBIDA POR ADELANTADO (OC) | MERCANCIA PENDIENTE POR RECIBIR (COMPRA)] 2-[NC CON PRODUCTOS]
If UsuarioActual.CveEmpresa.Contiene(1, 119) And UsuarioActual.Empresa.UsaInventarios And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
DT = DT.FiltraParametros("ISNULL(CveTipoPS,0) <> 2")
End If
Dim DTDistinct = DT.Copy
If UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
DTDistinct = DTDistinct.FiltraParametros("ISNULL(TipoAF, 0) <> 2", "", {"CveClasificacion", "Clasificacion", "SubProyecto", "CveProyecto", "CveSubProyecto", "CveTipoGasto", "TipoGasto"})
Else
DTDistinct = DTDistinct.FiltraParametros("ISNULL(TipoAF,0) <> 2 And ISNULL(CveAlmacen,0) = 0 And ISNULL(AplicaCostoIndirecto,0) <> 1", "", {"CveClasificacion", "Clasificacion", "SubProyecto", "CveProyecto", "CveSubProyecto", "CveTipoGasto", "TipoGasto"})
End If
'RMF, si es concepto relacionado a flete o importacion, no debe de afectar al gasto
If CveFlete > 0 OrElse CveImportacion > 0 Then
DTDistinct.Clear()
End If
If DTDistinct.Rows.Count > 0 Then
For Each Row2 As DataRow In DTDistinct.Rows
'DETERMINA IMPORTE
If UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
importeMovimiento = DT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), String.Format("ISNULL(TipoAF,0) <> 2 And CveClasificacion = {0} And CveSubProyecto = {1} And ISNULL(CveTipoGasto,0) = {2}", Row2("CveClasificacion").ToString.ToEntero, Row2("CveSubProyecto").ToString.ToEntero, Row2("CveTipoGasto").ToString.ToEntero)).ToString.ToDecimal
Else
importeMovimiento = DT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), String.Format("ISNULL(TipoAF,0) <> 2 And ISNULL(CveAlmacen,0) = 0 And ISNULL(AplicaCostoIndirecto,0) <> 1 And CveClasificacion = {0} And CveSubProyecto = {1} And ISNULL(CveTipoGasto,0) = {2}", Row2("CveClasificacion").ToString.ToEntero, Row2("CveSubProyecto").ToString.ToEntero, Row2("CveTipoGasto").ToString.ToEntero)).ToString.ToDecimal
End If
'se debe de restar el costo indirecto, si se recibió por OC sobre el importe del gasto, por si ya está incuido
importeMovimiento = importeMovimiento - CostoIndirectoAcum176
importeMN = importeMovimiento * tipoCambioActual * Multiplicador '[IPP] EL 6 DEBE SER POSITIVO 27/AGOSTO/2018
'CLASIFICACION
If Row2("CveClasificacion").ToString.ToEntero > 0 Then
If ObjConta.GetRetCuenta(6, Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 AndAlso ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaGastoSIG").ToString.ToEntero
Else
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
End If
End If
End If
'SEGMENTO DE NEGOCIO
Dim IdSegmentoNegocio As Integer = -1
Dim drT As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero).FiltroPrimero(String.Format("CveSubProyecto = {0} ", Row2("CveSubProyecto").ToString.ToEntero))
If drT IsNot Nothing Then
IdSegmentoNegocio = drT("IdSegNeg").ToString.ToEntero
End If
'AGREGA MOVIMIENTO
If importeMovimiento.RoundSQL <> 0 Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString)
CveCuentaContabilizacion = 0
End If
Dim tcvecon As Integer = 6
Dim tidctacon As Integer = 6
tidctacon = IdCtaContable
If DdlTipoComprobante.SelectedValue = "Ant" Then
tcvecon = 264
tidctacon = ViewState("CtaProveedorAnticipos").ToString.ToEntero
If DdlMoneda.SelectedValue = "2" Then
tidctacon = ViewState("CtaProveedorAnticiposExtranjera").ToString.ToEntero
End If
End If
Dim usacomplementariaProveedor As Boolean = False
usacomplementariaProveedor = If(tipoCambioActual > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False)
If usacomplementariaProveedor AndAlso DdlTipoComprobante.SelectedValue = "Ant" Then
'importeMovimiento
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
importeMN = tipoCambioActual * importeMovimiento - importeMovimiento
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 266, Concepto, FechaMovimiento, tidctacon, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=importeMovimiento, CveCuenta:=CveCuenta, CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
importeMN = importeMovimiento
End If
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, tcvecon, Concepto, FechaMovimiento, tidctacon, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
Next
End If
End If
'LIMPIA
importeMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
End If
Case 5 'Proveedores
If Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
importeMovimiento = importeProv
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
If tipoCambioActual = 1 Then
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
Else
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If importeMovimiento <> 0 AndAlso (IdCtaContable > 0 Or CveCuenta > 0 Or UsuarioActual.CveEmpresa = 119) Then 'Cuando tiene complementaria lo dividimos en dos Then
importeMN = importeMovimiento
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Referencia, 201, Concepto, FechaMovimiento, IdCtaContable, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=importeMovimiento * tipoCambioActual - importeMovimiento, ImporteME:=importeMovimiento, CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
End If
End If
Case 59 'Documentos
importeMovimiento = importeCreditos
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(ConceptoContable, CveProveedor) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCtaContableSIG").ToString.ToEntero
End If
End If
End If
Case 37 'Deudores
If RBLTipoDeudor.SelectedValue.ToEntero = 1 Then
For Each rw As GridViewRow In GvDeudores.Rows
If rw.FCCheckBox("Chk").Checked Then
importeMovimiento = rw.FCTextBox("TxtSaldoDeudor").Text.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
IdCtaContable = CtaProveedorDeudores
CveCuenta = CveCuentaProveedorDeudores
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
CveCuentaContabilizacion = 0
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=rw.DataKey("CveIE").ToString.ToEntero, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
Next
Else
For Each rw As GridViewRow In GvDeudores.Rows
If rw.FCCheckBox("Chk").Checked Then
importeMovimiento = rw.FCTextBox("TxtSaldoDeudor").Text.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
IdCtaContable = CtaProveedorDeudores
CveCuenta = CveCuentaProveedorDeudores
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 254, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=rw.DataKey("CveIE").ToString.ToEntero, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
Next
End If
importeMovimiento = 0
Case 41 'Acreedores
importeMovimiento = importeAcreedores
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
IdCtaContable = CtaProveedorAcreedores
CveCuenta = CveCuentaProveedorAcreedores
Case 42 'Acreedores
importeMovimiento = importeAcreedoresTarjeta
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
IdCtaContable = CtaProveedorAcreedores
CveCuenta = CveCuentaProveedorAcreedores
Case 18 'NC - Notas de Credito
importeMovimiento = importeNC
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}"
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
If DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
End If
If importeMovimiento <> 0 Then
GuardoConcepto18 = True
If DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then
'PROVISION
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimiento, ImporteME:=importeMovimiento, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMN - importeMovimiento, Referencia, 234, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN - importeMovimiento, ImporteME:=importeMovimiento, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit Select
End If
Else
ErrorPrepoliza = True
Exit Select
End If
'AMORTIZACIÓN EN EL REGISTRO
For Each Gvr As GridViewRow In GvFacturaNC.Rows
If Gvr.FCCheckBox("ChkFacturaNC").Checked Then
Dim CvePrePolizaTemp = ObjConta.AddPrePolizas("Compras/Registrar-NC", If(EsContado And CvePlantillaPrePoliza = 1, 2, CvePlantillaPrePoliza), ImporteCompra, TxtTotal.Text.ToDouble, DdlMoneda.SelectedValue.ToEntero, TxtFecha.Text.ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo:=FolioFijo, ReglaFolioPoliza:=ObjCompras.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa), CveTipoPoliza:=ObjConta.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa))
Dim importeMovimientoNC = Gvr.FCTextBox("TxtImporte").Text.ToDecimal
Dim importeMNNC = importeMovimientoNC * tipoCambioActual * Multiplicador
Dim TipoCambioFactura = Gvr.DataKey("TipoCambio").ToDecimal
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, False, importeMovimientoNC, Referencia, 17, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioFactura, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, False, importeMNNC - importeMovimientoNC, Referencia, 206, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioFactura, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
Else
ErrorPrepoliza = True
Exit For
End If
importeMNNC = importeMovimientoNC * TipoCambioFactura * Multiplicador
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, True, importeMovimientoNC, Referencia, 60, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=tipoCambioActual, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, True, importeMNNC - importeMovimientoNC, Referencia, 235, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=tipoCambioActual, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
Else
ErrorPrepoliza = True
Exit For
End If
' FLUCTUACION CAMBIARIA
If tipoCambioActual <> TipoCambioFactura Then
importeMovimiento = (importeMovimientoNC * TipoCambioFactura) - (importeMovimientoNC * tipoCambioActual)
If importeMovimiento > 0 Then
ConceptoContable = 64
TipoMovimiento = True
IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria
ElseIf importeMovimiento < 0 Then
ConceptoContable = 65
TipoMovimiento = False
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
End If
importeMovimiento = importeMovimiento.Abs.RoundSQL()
importeMN = importeMovimiento
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, TipoMovimiento, importeMovimiento, Concepto, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=0, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
End If
End If
ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaTemp)
End If
Next
If ErrorPrepoliza Then
Exit Select
End If
Else
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
For Each Gvr As GridViewRow In GvFacturaNC.Rows
If Gvr.FCCheckBox("ChkFacturaNC").Checked Then
Dim CvePrePolizaTemp = ObjConta.AddPrePolizas("Compras/Registrar", If(EsContado And CvePlantillaPrePoliza = 1, 2, CvePlantillaPrePoliza), ImporteCompra, TxtTotal.Text.ToDouble, DdlMoneda.SelectedValue.ToEntero, TxtFecha.Text.ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo:=FolioFijo, ReglaFolioPoliza:=ObjCompras.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa), CveTipoPoliza:=ObjConta.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa))
Dim importeMovimientoNC = Gvr.FCTextBox("TxtImporte").Text.ToDecimal
Dim importeMNNC = importeMovimientoNC * tipoCambioActual * Multiplicador
If ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, False, importeMovimientoNC, Referencia, 272, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimientoNC), CveCompraAmortizacion:=CveCompra, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, True, importeMovimientoNC, Referencia, 60, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimientoNC), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
Else
ErrorPrepoliza = True
End If
ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaTemp)
End If
Next
End If
End If
End If
importeMovimiento = 0
Case 29 'Funcionarios y Empleados
importeMovimiento = importeFE
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(ConceptoContable, CvePersonal) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContPersonal").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCtaContPersonalSIG").ToString.ToEntero
End If
End If
Case 21 'Anticipo
If ArrAnticipos.Count > 0 Then
Dim CtaIvaxAcreditar As Integer = 0
Dim CtaIvaAcreditable As Integer = 0
Dim CveCuentaIvaxAcreditar As Integer = 0
Dim PorcentajeImpuestoAnticipo = PorcentajeIVA
CtaIvaxAcreditar = If(IdCtaIVAXAcreditar > 0, IdCtaIVAXAcreditar, 0)
CtaIvaAcreditable = If(IdCtaIVAAcreditable > 0, IdCtaIVAAcreditable, 0)
If ObjConta.GetRetCuenta(14, UsuarioActual.CveEmpresa) And Not CtaIvaxAcreditar > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
CtaIvaxAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditar").ToString.ToEntero
CveCuentaIvaxAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditarSIG").ToString.ToEntero
End If
End If
If ObjConta.GetRetCuenta(19, UsuarioActual.CveEmpresa) And Not CtaIvaAcreditable > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
CtaIvaAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIVAAcreditable").ToString.ToEntero
End If
End If
'** PRUEBA CUANDO SE AMORTIZA NC ANTES DE QUE SE REGISTRE NO DEBE TENER CONCEPTO 19 ** JMURUAM 01/06/2017 SE HIZO ESTO PARA LA FACTURA HRFA-8012831 DE VIGILANCIA
'Dim CtaIvaAcreditable As Integer = 0
'If ObjConta.GetRetCuenta(19, UsuarioActual.CveEmpresa) Then
' If ObjConta.DtResultados.Rows.Count > 0 Then
' CtaIvaAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIVAAcreditable").ToString.ToEntero
' End If
'End If
For Each Ant As Anticipos In ArrAnticipos
Dim ConceptoContableAnticipo, ConceptoContableAnticipoComplementaria As Integer
Dim CveCompraNC As Integer = CveCompra
Select Case Ant.TipoMovto
Case "NC", "DEV"
ConceptoContableAnticipo = 60
ConceptoContableAnticipoComplementaria = 235
CveCompraNC = Ant.CveCompra 'cuando es NC, se utiliza la clave de compra de la nota de credito
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
Case "Egsc"
ConceptoContableAnticipo = 21
IdCtaContable = CtaProveedorAnticipos
CveCuenta = CveCuentaProveedorAnticipos
Case "DD"
ConceptoContableAnticipo = 37
IdCtaContable = CtaProveedorDeudores
CveCuenta = CveCuentaProveedorDeudores
Case "Ant"
ConceptoContableAnticipo = 265
ConceptoContableAnticipoComplementaria = 266
CveCompraNC = Ant.CveCompra
IdCtaContable = CtaProveedorAnticipos
CveCuenta = CveCuentaProveedorAnticipos
End Select
importeMovimiento = Ant.Importe
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If importeMovimiento <> 0 Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'AMORTIZACIÓN NC ESPECIAL COMPLEMENTARIA
If ConceptoContableAnticipo.Contiene(60) And DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then
Dim importeMovimientoNC = Ant.Importe
Dim importeMNNC = 0.0D
Dim TipoCambioNC = Ant.TCCompra
importeMNNC = importeMovimientoNC * TipoCambioNC * Multiplicador
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimientoNC, Referencia, 60, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Ant.CveCompra, CveCompraAmortizacion:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioNC, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMNNC - importeMovimientoNC, Referencia, 235, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Ant.CveCompra, CveCompraAmortizacion:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioNC, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
Else
ErrorPrepoliza = True
Exit For
End If
importeMNNC = importeMovimientoNC * tipoCambioActual * Multiplicador
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimientoNC, Referencia, 272, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=tipoCambioActual, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMNNC - importeMovimientoNC, Referencia, 206, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=tipoCambioActual, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
Else
ErrorPrepoliza = True
Exit For
End If
' FLUCTUACION CAMBIARIA
If tipoCambioActual <> TipoCambioNC Then
importeMovimiento = (importeMovimientoNC * tipoCambioActual) - (importeMovimientoNC * TipoCambioNC)
If importeMovimiento > 0 Then
ConceptoContable = 64
TipoMovimiento = True
IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria
ElseIf importeMovimiento < 0 Then
ConceptoContable = 65
TipoMovimiento = False
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
End If
importeMovimiento = importeMovimiento.Abs.RoundSQL()
importeMN = importeMovimiento
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Concepto, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=0, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
End If
End If
ElseIf ConceptoContableAnticipo.Contiene(265) And DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then
Dim importeMovimientoNC = Ant.Importe
Dim importeMNNC = 0.0D
Dim TipoCambioNC = Ant.TCCompra
importeMNNC = importeMovimientoNC * TipoCambioNC * Multiplicador
IdCtaContable = CtaProveedorAnticiposExtranjera
CveCuenta = CveCuentaProveedorAnticiposExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimientoNC, Referencia, 265, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Ant.CveCompra, CveCompraAmortizacion:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioNC, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
IdCtaContable = CtaProveedorAnticiposComplementaria
CveCuenta = CveCuentaProveedorAnticiposComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMNNC - importeMovimientoNC, Referencia, 266, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Ant.CveCompra, CveCompraAmortizacion:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioNC, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
Else
ErrorPrepoliza = True
Exit For
End If
If TxtTotal.Text.ToDouble > 0 Then
importeMNNC = importeMovimientoNC * tipoCambioActual * Multiplicador
IdCtaContable = CtaProveedorExtranjera ' CtaProveedorAnticiposExtranjera
CveCuenta = CveCuentaProveedorExtranjera 'CveCuentaProveedorAnticiposExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimientoNC, Referencia, 272, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=tipoCambioActual, CveCuenta:=CveCuenta, CveCompraAmortizacion:=CveCompraNC, Contabilizable:=SeContabiliza) Then
IdCtaContable = CtaProveedorExtranjera 'CtaProveedorAnticiposComplementaria
CveCuenta = CveCuentaProveedorExtranjera 'CveCuentaProveedorAnticiposComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMNNC - importeMovimientoNC, Referencia, 206, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=tipoCambioActual, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
Else
ErrorPrepoliza = True
Exit For
End If
If Ant.TipoMovto.Contiene("Ant") Then
Dim PorcentajePagoAnt As Decimal = importeMovimientoNC / If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDecimal)
Dim ImporteIVA As Decimal = Math.Round(PorcentajePagoAnt * TxtIVA.Text.ToDecimal, 2)
'Agregamos el 14
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteIVA, Referencia, 14, Concepto, FechaMovimiento, CtaIvaxAcreditar, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=ImporteIVA * tipoCambioActual * Multiplicador, ImporteME:=If(tipoCambioActual = 1, 0, ImporteIVA), CveCuenta:=CveCuentaIvaxAcreditar, PorcentajeImpuesto:=PorcentajeImpuestoAnticipo, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
'Agregamos el 19
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, ImporteIVA, Referencia, 19, Concepto, FechaMovimiento, CtaIvaAcreditable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=ImporteIVA * tipoCambioActual * Multiplicador, ImporteME:=If(tipoCambioActual = 1, 0, ImporteIVA), PorcentajeImpuesto:=PorcentajeImpuestoAnticipo, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
Dim ImporteIEPS As Decimal = Math.Round(PorcentajePagoAnt * TxtIEPS.Text.ToDecimal, 2)
'Agregamos el 25
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteIEPS, Referencia, 25, Concepto, FechaMovimiento, CtaIvaxAcreditar, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=ImporteIVA * tipoCambioActual * Multiplicador, ImporteME:=If(tipoCambioActual = 1, 0, ImporteIVA), CveCuenta:=CveCuentaIvaxAcreditar, PorcentajeImpuesto:=PorcentajeImpuestoAnticipo, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
'Agregamos el 26
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, ImporteIEPS, Referencia, 26, Concepto, FechaMovimiento, CtaIvaAcreditable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=ImporteIVA * tipoCambioActual * Multiplicador, ImporteME:=If(tipoCambioActual = 1, 0, ImporteIVA), PorcentajeImpuesto:=PorcentajeImpuestoAnticipo, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
' FLUCTUACION CAMBIARIA
If tipoCambioActual <> TipoCambioNC Then
importeMovimiento = (importeMovimientoNC * tipoCambioActual) - (importeMovimientoNC * TipoCambioNC)
If importeMovimiento > 0 Then
ConceptoContable = 64
TipoMovimiento = True
IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria
ElseIf importeMovimiento < 0 Then
ConceptoContable = 65
TipoMovimiento = False
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
End If
importeMovimiento = importeMovimiento.Abs.RoundSQL()
importeMN = importeMovimiento
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Concepto, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=0, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
End If
End If
End If
Else
Dim usacomplementariaAnticipo As Boolean = False
usacomplementariaAnticipo = If(Ant.TCCompra > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False)
Dim TipoCambioAnt = Ant.TCCompra
Dim ImporteAnt As Decimal = importeMovimiento
Dim ImporteAntMN As Decimal = ImporteAnt * TipoCambioAnt
If usacomplementariaAnticipo Then
IdCtaContable = CtaProveedorAnticiposComplementaria
CveCuenta = CveCuentaProveedorAnticiposComplementaria
ImporteAntMN = TipoCambioAnt * ImporteAnt - ImporteAnt
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteAnt, Referencia, 266, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompraNC, CveCompraAmortizacion:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=ImporteAntMN, ImporteME:=ImporteAnt, TipoCambio:=TipoCambioAnt, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
ImporteAntMN = ImporteAnt
End If
If TipoCambioAnt > 1 Then
IdCtaContable = CtaProveedorAnticiposExtranjera
CveCuenta = CveCuentaProveedorAnticiposExtranjera
End If
'Agregamos el 21/37/60
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteAnt, Referencia, ConceptoContableAnticipo, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompraNC, CveCompraAmortizacion:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=ImporteAntMN, ImporteME:=If(tipoCambioActual = 1, 0, ImporteAnt), TipoCambio:=TipoCambioAnt, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
If TxtTotal.Text.ToDouble > 0 Then
Dim IdCtaContablePago As Integer = CtaProveedor
Dim CveCuentaPago As Integer = CveCuentaProveedor
Dim usacomplementariaProveedor As Boolean = False
usacomplementariaProveedor = If(tipoCambioActual > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False)
If usacomplementariaProveedor Then
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
importeMN = tipoCambioActual * importeMovimiento - importeMovimiento
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 201, Concepto, FechaMovimiento, CtaProveedorComplementaria, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuentaProveedorComplementaria, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
importeMN = importeMovimiento
End If
If tipoCambioActual > 1 Then
IdCtaContablePago = CtaProveedorExtranjera
CveCuentaPago = CveCuentaProveedorExtranjera
End If
'Agregamos el 17
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 17, Concepto, FechaMovimiento, IdCtaContablePago, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuentaPago, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
' FLUCTUACION CAMBIARIA
If tipoCambioActual <> TipoCambioAnt Then
Dim importeFluctuacion = (ImporteAnt * tipoCambioActual) - (ImporteAnt * TipoCambioAnt)
If importeFluctuacion > 0 Then
ConceptoContable = 64
TipoMovimiento = True
IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria
ElseIf importeFluctuacion < 0 Then
ConceptoContable = 65
TipoMovimiento = False
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
End If
importeFluctuacion = importeFluctuacion.Abs.RoundSQL()
If importeFluctuacion <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeFluctuacion, Concepto, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeFluctuacion, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=0, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
End If
End If
End If
'** PRUEBA CUANDO SE AMORTIZA NC ANTES DE QUE SE REGISTRE NO DEBE TENER CONCEPTO 19 ** JM 01/06/2017 SE HIZO ESTO PARA LA FACTURA HRFA-8012831 DE VIGILANCIA
'[IPP] NC NO DEBE REGISTRAR IMPUESTOS EN AMORTIZACIÓN 27/Agosto/2018
If Not Ant.TipoMovto.Contiene("NC", "DEV") Then
Dim PorcentajePagoAnt As Decimal = importeMovimiento / If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDecimal)
Dim ImporteIVA As Decimal = Math.Round(PorcentajePagoAnt * TxtIVA.Text.ToDecimal, 2)
'Agregamos el 14
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteIVA, Referencia, 14, Concepto, FechaMovimiento, CtaIvaxAcreditar, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=ImporteIVA * tipoCambioActual * Multiplicador, ImporteME:=If(tipoCambioActual = 1, 0, ImporteIVA), CveCuenta:=CveCuentaIvaxAcreditar, PorcentajeImpuesto:=PorcentajeImpuestoAnticipo, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
'Agregamos el 19
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, ImporteIVA, Referencia, 19, Concepto, FechaMovimiento, CtaIvaAcreditable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=ImporteIVA * tipoCambioActual * Multiplicador, ImporteME:=If(tipoCambioActual = 1, 0, ImporteIVA), PorcentajeImpuesto:=PorcentajeImpuestoAnticipo, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
End If
End If
End If
''Unificacion de PrePolizas
'If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then
' If Not ObjConta.PrePolizaUnificacion(Ant.CvePrePoliza, CvePrePoliza) Then
' ErrorPrepoliza = True
' Alert("No se pudo unificar la prepoliza", TipoMensaje.MsgError)
' End If
'End If
''Simplificacion de PrePolizas
'If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then
' If Not ObjConta.PrePolizaSimplificacion(Ant.CvePrePoliza, UsuarioActual.CveEmpresa) Then
' ErrorPrepoliza = True
' Alert("No se pudo simplificar los movimientos", TipoMensaje.MsgError)
' End If
'End If
Next
importeMovimiento = 0
End If
End Select
If ErrorPrepoliza Then
Exit For
End If
If importeMovimiento <> 0 Or (ConceptoContable.Contiene(5) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Fac", "Ant")) Or (ConceptoContable.Contiene(18) AndAlso DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") AndAlso Not GuardoConcepto18) Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'COnta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
CveCuentaContabilizacion = 0
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=Math.Round(importeMN, 2, MidpointRounding.AwayFromZero), ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, PorcentajeImpuesto:=PorcentajeImpuesto, Contabilizable:=SeContabiliza) Then
ErrorPrepoliza = True
Exit For
End If
End If
Next
'EMPIEZA REFACTURACION
If CveCompraRefacturacion > 0 Then
ErrorBitacora = GuardaRefacturacion(ObjCompras, ObjEventos, CvePrePoliza)
If ErrorBitacora Then
Alert("Ocurrió un error al hacer la Refacturación", TipoMensaje.MsgError)
End If
End If
If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, 4) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
GuardaLogAD($"Compras/Compras-Guardar | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
ErrorPrepolizaDescuadre = True
End If
End If
'Conta ContPAQ
If ObjContaAC IsNot Nothing AndAlso Not ErrorPrepoliza AndAlso Not ErrorPrepolizaDescuadre AndAlso UsuarioActual.Empresa.UsaContabilidad Then
If BanderaContilizar Then
If idCuentaContabilizacion > 0 Then
If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaAC) Then
' Alert(alertaContabilizacion, ModExtensiones.TipoMensaje.MsgInformacion)
IdPoliza = ObjConta.ContaIdPoliza
Else
ErrorPrepoliza = True
Alert($"Ocurrio un error al contabilizar {ObjConta.AlertaMensaje}", TipoMensaje.MsgAdvertencia)
End If
Else
Alert(String.Format("No se puede contabilizar la Prepoliza debido a que las siguientes cuentas son inválidas: <br>{0}", CuentasContablesInvalidas), TipoMensaje.MsgAdvertencia)
ErrorPrepoliza = True
End If
End If
End If
End If
'' A N T I C I P O S
If UsuarioActual.Empresa.UsaAC Then
If ArrAnticipos.Count > 0 Then
Dim PorcentajePago As Decimal
Dim ConceptoRenglon As String
'si hay una diferencia entre lo amortizado y el total, se registra la diferencia a proveedores y los ivas por acreditar
If TxtTotal.Text.ToDouble - ImporteAnticipo > 0 Then
PorcentajePago = (TxtTotal.Text.ToDecimal - ImporteAnticipo) / TxtTotal.Text.ToDecimal
ConceptoRenglon = String.Format("GE Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedor, True, TxtTotal.Text.ToDouble - ImporteAnticipo, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
ErrorACMEnsaje.Append(" - si hay una diferencia entre lo amortizado y el total, se registra la diferencia a proveedores y los ivas por acreditar ObjContaAC.AddMovimiento")
ErrorAC = True
End If
End If
'una vez amortizado, se generan los movimientos presupuestales
If ImporteAnticipo > 0 Then
PorcentajePago = ImporteAnticipo / TxtTotal.Text.ToDecimal
If ObjCompras.GetPresupuestosCompras(CveCompra) AndAlso ObjCompras.DtResultados.Rows.Count > 0 Then
'DtAC.Merge(ObjConta.DtResultados)
For Each dr As DataRow In ObjCompras.DtResultados.Rows
Total = dr("TotalPresupuesto").ToString.ToDecimal * PorcentajePago
If Total > 0 Then
'EJERCIDO
If True Then
ConceptoRenglon = String.Format("GE {0} F:{1}-{2}", DdlProveedor.SelectedItem.Text, TxtSerie.Text, TxtFolio.Text)
If ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaEjercido").ToString.ToEntero, False, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaDevengado").ToString.ToEntero, True, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
TieneError = True
Exit For
End If
Else
TieneError = True
Exit For
End If
End If
'PAGADO
ConceptoRenglon = String.Format("GP {0} F:{1}-{2}", DdlProveedor.SelectedItem.Text, TxtSerie.Text, TxtFolio.Text)
If ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaPagado").ToString.ToEntero, False, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaEjercido").ToString.ToEntero, True, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
TieneError = True
Exit For
End If
Else
TieneError = True
Exit For
End If
End If
Next
Else
ErrorACMEnsaje.Append(" - error al obtener presupuestos ObjCompras.GetPresupuestosCompras")
ErrorAC = True
End If
End If
End If
End If
'' F U N C I O N A R I O S Y E M P L E A D O S
If RBLContado.SelectedValue = "2" AndAlso DdlFuncionarioEmpleado.SelectedValue.ToEntero > 0 Then
TxtDocumentoImporte.Text = TxtDocumentoImporteFE.Text
TxtDocumentoImporteCaja.Text = TxtDocumentoImporteFE.Text
End If
Else 'Empresa Prueba
If RBLPago.SelectedValue.ToEntero = 2 AndAlso (RBLContado.SelectedValue = "1" Or RBLContado.SelectedValue = "6") Then 'Contado - Bancos y Caja Chica
'se agrego un movimiento de pago
' CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, TxtFecha.Text.Trim.ToDate, TxtDocumentoFolio.Text.Trim, DdlProveedor.SelectedItem.Text.Trim, TxtDocumentoImporte.Text.Trim.ToDouble, 1, 0.0, TxtDocumentoObservaciones.Text.Trim, True, True, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CveIE > 0 Then
'inserto los movimientos de la conta para abonar al saldo
'Se agregamovimiento de pago de proveedor
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteCompra, " ", CveConceptoAfectacionContado, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle) Then
ErrorMovtosCxP = True
End If
'Compra
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtSubTotal2.Text.ToDecimal, " ", 30, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle) Then
ErrorMovtosCxP = True
End If
'IVA por Acreditar . siempre se registra aunque sea cero
If Not ErrorMovtosCxP Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TxtIVA.Text.ToDecimal, " ", 19, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle) Then
ErrorMovtosCxP = True
End If
End If
If Not ErrorMovtosCxP AndAlso TxtRetIVA.Text.ToDouble > 0 Then
'Agrego el RetIVA
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetIVA.Text.ToDecimal, " ", 22, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle) Then
ErrorMovtosCxP = True
End If
End If
If Not ErrorMovtosCxP AndAlso TxtRetISR.Text.ToDouble > 0 Then
'Agrego el RetIVA
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetISR.Text.ToDecimal, " ", 23, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva) Then
ErrorMovtosCxP = True
End If
End If
Else
ErrorMovtosIE = True
End If
End If
'movimiento de compra
'[IPP] PARCHE PROVISIONAL DE CLASIFICACION Y SUBPROYECTO [CveClasificacion:=TmpDT.FiltroPrimeroValor("CveClasificacion").ToString.ToEntero] [CveSubProyecto:=TmpDT.FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero]
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoCompra, TxtSubTotal2.Text.ToDecimal, " ", CveConceptoCompra, " ", TxtFechaPago.Text.ToDate, 0, -1, CveClasificacion:=TmpDT.FiltroPrimeroValor("CveClasificacion").ToString.ToEntero, CveSubProyecto:=TmpDT.FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtSubTotal2.Text.ToDecimal) Then
ErrorMovtosCxP = True
End If
'Se agregan las CxP
If CveConceptoAfectacion = 37 Then
For Each rw As GridViewRow In GvDeudores.Rows
If rw.FCCheckBox("Chk").Checked Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimientoCompra, rw.FCTextBox("TxtSaldoDeudor").Text.ToDecimal, " ", CveConceptoAfectacion, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=rw.DataKey("CveIE").ToString.ToEntero, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=rw.FCTextBox("TxtSaldoDeudor").Text.ToDecimal) Then
ErrorMovtosCxP = True
End If
End If
Next
Else
If ImporteCompra > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimientoCompra, ImporteCompra, " ", CveConceptoAfectacion, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=ImporteCompra) Then
ErrorMovtosCxP = True
End If
End If
If CvePlantillaPrePoliza = 1 Or CvePlantillaPrePoliza = 60 Then
'Siempre: Se agrega IVA aunque sea cero
' If TxtIVA.Text.Replace(", ", "").Trim.ToDouble <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimientoImpuestos, TxtIVA.Text.ToDecimal, " ", CveConceptoIVA, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtIVA.Text.ToDecimal) Then
ErrorMovtosIVA = True
End If
'End If
'Se agregan las Ret IVA
If TxtRetIVA.Text.ToDouble <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoImpuestos, TxtRetIVA.Text.ToDecimal, " ", CveConceptoRetIVA, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetIVA.Text.ToDecimal) Then
ErrorMovtosRetIVA = True
End If
End If
'Se agregan las Ret ISR
If TxtRetISR.Text.ToDouble > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoImpuestos, TxtRetISR.Text.ToDecimal, " ", CveConceptoRetISR, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetISR.Text.ToDecimal) Then
ErrorMovtosRetISR = True
End If
End If
If TxtIEPS.Text.ToDouble > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoImpuestos, TxtIEPS.Text.ToDecimal, " ", CveConceptoRetIEPS, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtIEPS.Text.ToDecimal) Then
ErrorMovtosRetISR = True
End If
End If
If TxtOtrosImpuestos.Text.ToDouble > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoImpuestos, TxtOtrosImpuestos.Text.ToDecimal, " ", CveConceptoRetOtrosImpuestos, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtOtrosImpuestos.Text.ToDecimal) Then
ErrorMovtosRetISR = True
End If
End If
End If
'' A N T I C I P O S
If ArrAnticipos.Count > 0 Then
Dim TotalIVA As Double = TxtIVA.Text.ToDouble
'Inserto otra poliza del mo
'Dim CvePrePolizaAnticipo As Integer = ObjConta.AddPrePolizas("Banc", 10, ImporteAnticipo, ImporteAnticipo, DdlMoneda.SelectedValue.ToEntero, TxtFecha.Text.ToDate, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
' CveConceptoAfectacion = 21 'Cancelacion Anticipo Proveedores
Dim PorcentajePago As Decimal
Dim CveConceptoAnt As Integer = 21
Dim CveCompraNC As Integer
For Each Ant As Anticipos In ArrAnticipos
CveCompraNC = CveCompra
Dim CveConceptoPago As Integer = 17
Select Case Ant.TipoMovto
Case "NC", "DEV"
CveConceptoAnt = 60
CveCompraNC = Ant.CveCompra ' cuando es NC, se utiliza la clave de compra de la nota de credito
CveConceptoPago = 272
Case "Egsc"
CveConceptoAnt = 21
Case "DD"
CveConceptoAnt = 37
End Select
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Ant.Importe, " ", CveConceptoAnt, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompraNC, CveCompraAmortizacion:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=Ant.Importe) Then
' ImporteAnticipo += Ant.Importe ' RESTO DEL IMPORTE POR SI QUEDA DIFERENCIA DE LA SUMA DE LOS ANTICIPOS Y EL PROVEEDOR TIENE QUE PAGAR
'movimiento de pago proveedor, --no se regisra porque no se registra el total de la compra como deuda del proveedor, solo lo que queda a deber
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoCompra, Ant.Importe, " ", CveConceptoPago, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=Ant.CveIE, CveColectiva:=CveColectiva, ImporteMX:=Ant.Importe) Then
ErrorMovtosCxP = True
End If
PorcentajePago = (Ant.Importe) / TxtTotal.Text.ToDecimal
'IVA por Acreditar . siempre se registra aunque sea cero
If Not ErrorMovtosCxP Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TxtIVA.Text.ToDecimal * PorcentajePago, " ", 19, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtIVA.Text.ToDecimal * PorcentajePago) Then ErrorMovtosCxP = True
End If
'Agrego el RetIVA
If Not ErrorMovtosCxP AndAlso TxtRetIVA.Text.ToDouble > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetIVA.Text.ToDecimal * PorcentajePago, " ", 22, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetIVA.Text.ToDecimal * PorcentajePago) Then ErrorMovtosCxP = True
End If
'Agrego el RetISR
If Not ErrorMovtosCxP AndAlso TxtRetISR.Text.ToDouble > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetISR.Text.ToDecimal * PorcentajePago, " ", 23, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, ImporteMX:=TxtRetISR.Text.ToDecimal * PorcentajePago) Then ErrorMovtosCxP = True
End If
Else
ErrorMovtosCxP = True
End If
Next
Dim ConceptoRenglon As String
'si hay una diferencia entre lo amortizado y el total, se registra la diferencia a proveedores y los ivas por acreditar
If TxtTotal.Text.ToDouble - ImporteAnticipo > 0 Then
PorcentajePago = (TxtTotal.Text.ToDecimal - ImporteAnticipo) / TxtTotal.Text.ToDecimal
'Siempre: Se agrega IVA aunque sea cero
If TxtIVA.Text.ToDouble <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TxtIVA.Text.ToDecimal * PorcentajePago, " ", CveConceptoIVA, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtIVA.Text.ToDecimal * PorcentajePago) Then
ErrorMovtosIVA = True
End If
End If
'Se agregan las Ret IVA
If TxtRetIVA.Text.ToDouble <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetIVA.Text.ToDecimal * PorcentajePago, " ", CveConceptoRetIVA, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetIVA.Text.ToDecimal * PorcentajePago) Then
ErrorMovtosRetIVA = True
End If
End If
'Se agregan las Ret ISR
If TxtRetISR.Text.ToDouble > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetISR.Text.ToDecimal * PorcentajePago, " ", CveConceptoRetISR, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetISR.Text.ToDecimal * PorcentajePago) Then
ErrorMovtosRetISR = True
End If
End If
If UsuarioActual.Empresa.UsaAC Then
If CtaProveedor > 0 Then
ConceptoRenglon = String.Format("GD Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedor, True, TxtTotal.Text.ToDouble - ImporteAnticipo, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
ErrorAC = True
ErrorACMEnsaje.Append("- CtaProveedor > 0 ObjContaAC.AddMovimiento")
End If
Else
Alert(" - El proveedor no tiene cuenta contable.", TipoMensaje.MsgAdvertencia)
ErrorAC = True
End If
End If
End If
'una vez amortizado, se generan los movimientos presupuestales
If UsuarioActual.Empresa.UsaAC AndAlso ImporteAnticipo > 0 Then
PorcentajePago = ImporteAnticipo / TxtTotal.Text.ToDecimal
If ObjCompras.GetPresupuestosCompras(CveCompra) AndAlso ObjCompras.DtResultados.Rows.Count > 0 Then
'DtAC.Merge(ObjConta.DtResultados)
For Each dr As DataRow In ObjCompras.DtResultados.Rows
Total = dr("TotalPresupuesto").ToString.ToDecimal * PorcentajePago
If Total > 0 Then
'EJERCIDO
If True Then
ConceptoRenglon = String.Format("GE {0} F:{1}-{2}", DdlProveedor.SelectedItem.Text, TxtSerie.Text, TxtFolio.Text)
If ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaEjercido").ToString.ToEntero, False, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaDevengado").ToString.ToEntero, True, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
TieneError = True
Exit For
End If
Else
TieneError = True
Exit For
End If
End If
'PAGADO
ConceptoRenglon = String.Format("GP {0} F:{1}-{2}", DdlProveedor.SelectedItem.Text, TxtSerie.Text, TxtFolio.Text)
If ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaPagado").ToString.ToEntero, False, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IdPoliza, dr("IdCuentaEjercido").ToString.ToEntero, True, MultiplicadorNC * Total, "", ConceptoRenglon, 0, TxtFechaPago.Text.ToDate, "") Then
TieneError = True
Exit For
End If
Else
TieneError = True
Exit For
End If
End If
Next
Else
ErrorACMEnsaje.Append("- error al obtener presupuestos 2")
ErrorAC = True
End If
End If
End If
'' F U N C I O N A R I O S Y E M P L E A D O S
If RBLContado.SelectedValue = "2" AndAlso DdlFuncionarioEmpleado.SelectedValue.ToEntero > 0 Then
'Si es con funcionarios empleados Ya existe un registro en Bancos de Ingresos Egresos
TxtDocumentoImporte.Text = TxtDocumentoImporteFE.Text
TxtDocumentoImporteCaja.Text = TxtDocumentoImporteFE.Text
Dim ImportePagadoFE As Decimal = 0
Dim ImporteAPagarFE As Decimal = TxtDocumentoImporteFE.Text.ToDecimal
Dim ImportePagar As Decimal = ImporteAPagarFE
'CvePrePoliza = ObjConta.AddPrePolizas("Banc", 2, ImporteAPagarFE, ImporteAPagarFE, DdlMoneda.SelectedValue.ToEntero, TxtFecha.Text.ToDate, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePoliza > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImportePagar, " ", 29, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CvePersonal:=DdlFuncionarioEmpleado.SelectedValue.ToEntero, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveColectiva:=CveColectiva, CveIE:=CveIE, ImporteMX:=ImportePagar) Then
ErrorMovtosCxP = True
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImportePagar, " ", 17, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CvePersonal:=DdlFuncionarioEmpleado.SelectedValue.ToEntero, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveColectiva:=CveColectiva, CveIE:=CveIE, ImporteMX:=ImportePagar) Then
ErrorMovtosCxP = True
End If
Dim PorcentajePago As Decimal = (ImportePagar) / TxtTotal.Text.ToDecimal
'IVA por Acreditar . siempre se registra aunque sea cero
If Not ErrorMovtosCxP Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TxtIVA.Text.ToDecimal * PorcentajePago, " ", 19, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtIVA.Text.ToDecimal * PorcentajePago) Then ErrorMovtosCxP = True
End If
If Not ErrorMovtosCxP AndAlso TxtRetIVA.Text.ToDouble > 0 Then
'Agrego el RetIVA
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetIVA.Text.ToDecimal * PorcentajePago, " ", 22, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetIVA.Text.ToDecimal * PorcentajePago) Then ErrorMovtosCxP = True
End If
If Not ErrorMovtosCxP AndAlso TxtRetISR.Text.ToDouble > 0 Then
'Agrego el RetISR
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetISR.Text.ToDecimal * PorcentajePago, " ", 23, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, ImporteMX:=TxtRetISR.Text.ToDecimal * PorcentajePago) Then ErrorMovtosCxP = True
End If
'sino alcanzo a cubrir se regitran los ivas por acreditar
If TxtTotal.Text.ToDouble - ImportePagar > 0 Then
PorcentajePago = (TxtTotal.Text.ToDecimal - ImportePagar) / TxtTotal.Text.ToDecimal
'Movimiento, se omite, porque se esta registrando la totalidad de la deuda
'If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtTotal.Text.ToDouble - ImporteAnticipo, " ", 5, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle) Then
' ErrorMovtosCxP = True
'End If
'Siempre: Se agrega IVA aunque sea cero
If TxtIVA.Text.ToDouble <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TxtIVA.Text.ToDecimal * PorcentajePago, " ", CveConceptoIVA, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtIVA.Text.ToDecimal * PorcentajePago) Then
ErrorMovtosIVA = True
End If
End If
'Se agregan las Ret IVA
If TxtRetIVA.Text.ToDouble <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetIVA.Text.ToDecimal * PorcentajePago, " ", CveConceptoRetIVA, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetIVA.Text.ToDecimal * PorcentajePago) Then
ErrorMovtosRetIVA = True
End If
End If
'Se agregan las Ret ISR
If TxtRetISR.Text.ToDouble > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TxtRetISR.Text.ToDecimal * PorcentajePago, " ", CveConceptoRetISR, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtRetISR.Text.ToDecimal * PorcentajePago) Then
ErrorMovtosRetISR = True
End If
End If
End If
Else
ErrorMovtosCxP = True
End If
End If
End If 'Empresa Prueba
'************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
'End If
Else
ErrorMovtosCxP = True
End If
End If
If HdnVCveOC.Value <> "-1" AndAlso HdnCveEstatusOC.Value <> "-1" Then
Dim ArrayCveOC As String() = HdnVCveOC.Value.Split(New Char() {","c})
Dim ArrayCveEstatusOC As String() = HdnCveEstatusOC.Value.Split(New Char() {","c})
If ArrayCveEstatusOC.Count = ArrayCveOC.Count Then
For i = 0 To ArrayCveEstatusOC.Count - 1
If Not ObjOC.UpdateOrdenCompraCompletada(ArrayCveEstatusOC(i).ToEntero, ArrayCveOC(i).ToEntero, UsuarioActual.CveUsuario, "Se vinculó Compra", CveCompra) Then
ErrorOC = True
Exit For
End If
Next
Else
ErrorOC = True
End If
End If
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
End If
'GUARDA BITACORA TIPO CAMBIO OC
If Not ErrorOC And TipoCambioOC > 0 Then
If Not ObjEventos.AddEventoBitacora(String.Format("La vinculación con la orden de compra fue con un tipo de cambio de: ${0}", TipoCambioOC.ToString), "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
ErrorOC = True
End If
End If
If tDTAcarreos.Rows.Count > 0 Then
If TotAcarreos = TxtSubTotal.Text.ToDouble Then
'ACARREOS
For Each tDTAcar As DataRow In tDTAcarreos.Rows
If Not ObjAcar.UpdatePreEstimacion(CInt(tDTAcar("CvePreEstimacion")), CveCompra) Then
ErrorAddAcarreos = True
Exit For
End If
Next
Else
ErrorAddAcarreos = True
End If
End If
'AGREGAR OTROS GASTOS A ORDEN DE CORTE
If CveOrdenCorte > 0 And UsuarioActual.CveEmpresa = 126 Then
If ObjCGame.AddCorteGasto(CveOrdenCorte, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Now, 0, CveCompra) Then
If Not ObjCGame.AddCorteGastoDetalle(ObjCGame.CveCorteGasto, 32, 1, TxtSubTotal.Text.ToDouble()) Then
ErrorOtrosGastos = True
End If
Else
ErrorOtrosGastos = True
End If
End If
'CREDITO COMPRA
Dim CvePrePolizaCredito = 0
If RBLPago.SelectedValue.ToEntero = 2 AndAlso RBLContado.SelectedValue.ToEntero = 3 AndAlso DdlTipoCredito.SelectedValue.ToEntero = 1 AndAlso DdlCredito.SelectedValue.ToEntero > 0 Then
If Not ObjIE.UpdateCreditosCompra(DdlCredito.SelectedValue.ToEntero, CveCompra, UsuarioActual.CveEmpresa) Then
ErrorCreditosCompra = True
End If
If Not ErrorCreditosCompra Then
If ObjIE.GetCreditos(DdlCredito.SelectedValue.ToEntero, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then
CvePrePolizaCredito = ObjConta.AddPrePolizas("Compras/RegistrarCredito", -1, ObjIE.TotalFinanciado, ObjIE.TotalFinanciado, 1, TxtFecha.Text.ToDate, "Vinculación crédito con factura", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If ObjConta.AddPrePolizasDetalle(CvePrePolizaCredito, False, ObjIE.TotalFinanciado.ToDecimal, "", 17, "Vinculación crédito con factura", TxtFecha.Text.ToDate, CtaProveedor, -1, CveProveedor:=CveProveedor, CveCompra:=CveCompra, ImporteMX:=ObjIE.TotalFinanciado.ToDecimal, CvePrePolizaOriginal:=CvePrePolizaCredito) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaCredito, True, ObjIE.TotalFinanciado.ToDecimal, "", 50, "Vinculación crédito con factura", TxtFecha.Text.ToDate, CtaProveedor, -1, CveProveedor:=CveProveedor, CveCompra:=CveCompra, ImporteMX:=ObjIE.TotalFinanciado.ToDecimal, CvePrePolizaOriginal:=CvePrePolizaCredito) Then
ErrorCreditosCompra = True
End If
Else
ErrorCreditosCompra = True
End If
If Not ErrorCreditosCompra Then
ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaCredito)
End If
End If
End If
End If
'VALIDAR ERRORES
If ErrorAC OrElse ErrorPrepoliza OrElse ErrorPrepolizaDescuadre OrElse ErrorDetalles OrElse ErrorMovDev OrElse ErrorMovtosCxP OrElse ErrorMovtosRetIVA OrElse ErrorMovtosRetISR OrElse ErrorMovtosEstimaciones OrElse ErrorMovtosIE OrElse ErrorMovtosIVA OrElse ErrorMovInv OrElse TieneError OrElse ErrorAF OrElse ErrorOC OrElse ErrorBitacora OrElse ErrorAddAcarreos OrElse ErrorCreditosCompra Then
If ErrorDetalles Then
Alert("Ocurrió un Error al agregar un Producto o Servicio a la Factura.<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf ErrorMovtosCxP Then
Alert("Ocurrió un Error al agregar las CxP.<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf ErrorMovtosRetIVA Then
Alert("Ocurrió un Error al agregar las Retenciones de IVA.<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf ErrorMovtosRetISR Then
Alert("Ocurrió un Error al agregar las Retenciones de ISR.<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf ErrorMovtosEstimaciones Then
Alert("Ocurrió un Error al agregar las Estimaciones.<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf ErrorMovtosIE Then
Alert("Ocurrió un Error al agregar el movimiento bancario.<br />Revise sus datos y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf ErrorMovtosIVA Then
Alert("Ocurrió un Error al agregar el IVA.<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf ErrorMovInv Then
Alert("Ocurrió un Error al agregar el Producto o Servicio al Inventario.<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ElseIf TieneError Then
Alert("El total de los IMPORTES del FINANCIAMIENTO debe ser mayor que 0 y menor o igual al total de la compra", TipoMensaje.MsgAdvertencia)
ElseIf ErrorAF Then
Alert("Error al actualizar la vinculacion del Activo Fijo", TipoMensaje.MsgAdvertencia)
ElseIf ErrorAC Then
Alert("Ocurrió un Error al insertar los movimientos contables.", TipoMensaje.MsgError)
GuardaLog($" Error Compras DESCRIPCIÓN DETALLADA: {ErrorACMEnsaje.ToString} {vbCrLf} Usuario={UsuarioActual.CveUsuario}, Empresa={UsuarioActual.CveEmpresa}, CveFactura={CveFactura}, CveProveedor={CveProveedor}")
ElseIf ErrorPrepolizaDescuadre Then
Alert(ObjConta.MensajePolizaDescuadre, TipoMensaje.MsgError)
ElseIf ErrorPrepoliza Then
Alert("Ocurrió un error al verificar los movimientos contables", TipoMensaje.MsgError)
ElseIf ErrorOC Then
Alert("Ocurrió un Error al vincular la Orden(es) de Compra. Por favor vuelva intentar.", TipoMensaje.MsgError)
ElseIf ErrorBitacora Then
Alert("Ocurrió un Error al guardar la refacturación.", TipoMensaje.MsgError)
ElseIf ErrorAddAcarreos Then
Alert("Ocurrio un Error al momento de agregar los acarreos.", TipoMensaje.MsgError)
ElseIf ErrorCreditosCompra Then
Alert("Ocurrió un Error al vincular la compra con el crédito.", TipoMensaje.MsgError)
ElseIf ErrorOtrosGastos Then
Alert("Ocurrió un Error al vincular la compra con la orden de corte.", TipoMensaje.MsgError)
ElseIf ErrorSATPS Then
Alert("Ocurrió un Error al actualizar el producto/servicio SAT.", TipoMensaje.MsgError)
ElseIf ErrorSaldosInvComp Then
Alert("Ocurrió un error al validar la mercancía recibida por adelantado.", TipoMensaje.MsgError)
End If
ViewState("CveCompra") = -1
ObjCompras.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
CargaProveedor(CveProveedor, "-1")
Else
Dim MsgAccionAceptar As String = ""
Dim Msg As New StringBuilder
Msg.Append("La compra se registró correctamente")
'ACTUALIZA CVEFACTURA
If Request("CveFactura") IsNot Nothing Then
If Not ObjCompras.UpdateCompraFactura(CveCompra, Request("CveFactura").ToEntero, TxtSerie.Text.Trim, TxtFolio.Text.Trim) Then
ErrorOC = True
End If
If UsuarioActual.Empresa.UsaAC Then
MsgAccionAceptar = String.Format("window.opener.location.href = window.opener.location.href; window.open(""/Contabilidad/RegPoliza.aspx?IdPoliza={0}""); window.close();", IdPoliza)
Else
MsgAccionAceptar = "if (window.opener){window.opener.location.href = window.opener.location.href; window.close();}"
End If
Else
MsgAccionAceptar = "location.href =""Compras.aspx"""
End If
'Simplificacion de PrePolizas
If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then
If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then
Alert("No se pudo simplificar los movimientos", TipoMensaje.MsgError)
End If
End If
'CUANDO ES REEMBOLSO COMPROBACION Y CAJA CHICA
If UsuarioActual.CveEmpresa.Contiene(1, 119) AndAlso TxtNumeroReembolso.Text.Trim <> "" AndAlso (DdlPersonalReembolso.SelectedValue.ToEntero > 0 Or DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero > 0) Then
If ObjCompras.GetComprobacion(DdlPersonalReembolso.SelectedValue.ToEntero, DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero, TxtNumeroReembolso.Text.Trim, UsuarioActual.CveEmpresa) Then
Dim CvePreComprobacion As Integer
If ObjCompras.DtResultados.Rows.Count = 0 Then
'sino existe, creamos la comprobacion
Dim tConcepto As String = If(DdlPersonalReembolso.SelectedValue.ToEntero > 0, DdlPersonalReembolso.SelectedItem.Text, DdlCuentaCajaChicaReembolso.SelectedItem.Text)
tConcepto = String.Format("{0}-{1}", tConcepto, TxtNumeroReembolso.Text.Trim)
CvePreComprobacion = ObjConta.AddPrePolizas("Compras Comproba", 1, 0, 0, 1, TxtFecha.Text.ToDate, tConcepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If ObjCompras.AddComprobacion(DdlPersonalReembolso.SelectedValue.ToEntero, DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero, TxtNumeroReembolso.Text.Trim, CvePreComprobacion, UsuarioActual.CveEmpresa) > 0 Then
End If
Else
'si ya existe, obtenemos la prepóliza
CvePreComprobacion = ObjCompras.DtResultados.FiltroPrimeroValor("CvePrePoliza").ToEntero
End If
ObjConta.PrePolizaUnificacion(CvePreComprobacion, CvePrePoliza)
End If
End If
'AJUSTA POLIZA
If IdPoliza > 0 Then
ObjContaAC.AjustaPoliza(IdPoliza)
Msg.AppendFormat("<br/><br/><a Class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">Ver Póliza</a>", IdPoliza)
End If
If CveMovimientoInventario > 0 Then
Dim TempParametros = Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoInventario))
Msg.AppendFormat("</br><a class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"">Ver Movimiento de Almacen</a>", CveMovimientoInventario)
Msg.AppendFormat("</br><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Entrada Almacen</a>", TempParametros)
End If
ObjCompras.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, PolizaFolio.ToString, IdPoliza, CvePrePoliza, CveCompra, 0)
If EntregaDirecta Then
Msg.AppendFormat($"</br><a class=""Texto"" target='_blank' href=""/Inventarios/RecepcionAlmacen.aspx?CveCompra={CveCompra}&ED=1"">Recibir mercancía de entrega directa.</a>")
End If
ObjCompras.Commit()
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
Dim CveEvaluacionProveedor As Integer = -1
If Me.RequiereEvaluacion Then
Dim ObjPro As New ClsCompProveedores()
CveEvaluacionProveedor = ObjPro.AddEvaluacionProveedor(CveProveedor, CveCompra, Now, "", Me.CveUsuarioEvaluador, "", "", UsuarioActual.CveEmpresa)
ObjPro.Dispose()
End If
'ENVIO DE CORREO NOTIFICACION A VENDEDORES DE OC
MandaCorreoOCVendedores(CveCompra)
If Not ErrorMovInv Then
For Each intMovimientoAlmacen As Integer In ListaMovimientosAlmacen
MandaCorreoOCVendedoresRecepcionAlmacen(CveCompra, intMovimientoAlmacen)
Next
End If
If CveEvaluacionProveedor > 0 Then
Msg.Append("<br/><br/>El proveedor tiene evaluaciones pendientes<br/>")
Msg.Append("¿Desea realizar una evaluacion al proveedor?")
Msg.AppendFormat($"</br><a class=""Texto"" target='_blank' href=""/Compras/EvaluacionProveedor.aspx?CveEvaluacionProveedor={CveEvaluacionProveedor}"">Evaluar Proveedor.</a>")
End If
Alert(Msg.ToString, TipoMensaje.MsgInformacion, MsgAccionAceptar)
End If
Else
ObjCompras.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrio un error al guardar la compra. Por favor intente nuevamente.", TipoMensaje.MsgError)
End If
Else
Alert("Debe seleccionar un Funcionario/Empleado o Caja Chica para Reembolsos. Por favor vuelva a intentar.", TipoMensaje.MsgError)
ObjCompras.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
End If
Else
Alert("Ocurrió un error al agregar el movimiento bancario.<br />Revise sus datos de pago y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ObjCompras.RollBack()
End If
Catch ex As Exception
ObjCompras.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrió un error al registrar la compra y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgError)
GuardaLog($"Ocurrió un error al registrar la compra y cualquier detalle comuníquese a Soporte Técnico : {ex}")
ViewState("CveCompra") = -1
End Try
ObjAcar.Dispose()
ObjCompras.Dispose()
ObjConta.Dispose()
ObjIE.Dispose()
ObjInventario.Dispose()
ObjAF.Dispose()
ObjOC.Dispose()
ObjProveedores.Dispose()
ObjCGame.Dispose()
ObjProductosServicios.Dispose()
End If
End Sub
Protected Sub TxtCodigo_TextChanged(sender As Object, e As System.EventArgs) Handles TxtCodigo.TextChanged
Dim ObjProveedores As New ClsCompProveedores()
Dim Codigo As String = "-1"
If TxtCodigo.Text.Trim <> String.Empty Then Codigo = TxtCodigo.Text.Trim
If Codigo <> "-1" Then
If ObjProveedores.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, -1, Codigo, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then
If ObjProveedores.DtResultados.Rows.Count > 0 Then
HdnCveProveedor.Value = ObjProveedores.CveProveedor.ToString
Else
Alert("No se encontró el Proveedor con el código: " & TxtCodigo.Text.Trim & ".", Extensiones.TipoMensaje.MsgAdvertencia)
End If
End If
ObjProveedores.Dispose()
BtnBuscarProveedor_Click(sender, e)
End If
End Sub
Protected Sub ImgSubProyecto_Click(sender As Object, e As EventArgs) Handles ImgSubProyecto.Click
DdlAsignarProyecto.SelectedValue = "-1"
CargaSubProyectoAsignado()
RegistraScript(String.Format("$('#{0}').modal('show');", "DivAplicaSubProyecto"))
End Sub
Protected Sub BtnEliminarCompra_Click(sender As Object, e As EventArgs) Handles BtnEliminarCompra.Click
Dim ObjAC As ClsContPAQi = Nothing
Dim Comp As New ClsCompras()
Dim ObjEventos As New ClsOIEventos(Comp.IniciaTransacSQL())
Dim ErrorCompra = False
If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad) AndAlso IdPoliza > 0 Then
ObjAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjAC.IniciaTransacSQL()
If Not ObjAC.RemovePoliza(IdPoliza) Then
ErrorCompra = True
End If
End If
If Not ErrorCompra Then
For Each gvr As GridViewRow In GvEB.Rows
If Not ObjEventos.RemoveEvento(gvr.DataKey("CveEvento").ToString.ToEntero, UsuarioActual.CveEmpresa) Then
ErrorCompra = True
Exit For
End If
Next
End If
If Not ErrorCompra Then
If Not Comp.DeleteCompra(CveCompra, False) Then
ErrorCompra = True
End If
End If
If Not ErrorCompra Then
Alert("La Compra ha sido eliminada.", TipoMensaje.MsgInformacion, "document.location.href=""/Compras/Compras.aspx""")
If ObjAC IsNot Nothing Then ObjAC.Commit()
Comp.Commit()
Else
Alert("La Compra no ha sido eliminada.", TipoMensaje.MsgAdvertencia)
If ObjAC IsNot Nothing Then ObjAC.RollBack()
Comp.RollBack()
End If
If ObjAC IsNot Nothing Then ObjAC.Dispose()
Comp.Dispose()
End Sub
Protected Sub BtnAceptarAnticipos_Click(sender As Object, e As System.EventArgs) Handles BtnAceptarAnticipos.Click
If EstatusAlmacen = 1 Then
Alert("La compra encuentra pendiente de devolución de almacén, por lo cual no se puede amortizar el documento.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'SI TIENE PENDIENTES POR RECIBIR EN ALMACEN, ESTOS PENDIENTES SE PUEDEN QUEMAR CON LAS NC APLICADAS
If CveCompra > 0 And GvInvMov.Rows.Count > 0 And ChkNCInv.Checked Then
CargaNCINV()
Else
GuardaAnticipos(Nothing, Nothing)
End If
End Sub
Private Sub GuardaAnticipos(ByRef ObjComprasParametro As ClsCompras, ByRef ObjContaParametro As ClsContabilidad)
'SI YA VIENE LOS OBJETOS DE CLASE TOMA LOS DE PARAMETROS
Dim ObjCompra As ClsCompras
Dim ObjConta As ClsContabilidad
If ObjComprasParametro IsNot Nothing And ObjContaParametro IsNot Nothing Then
ObjCompra = ObjComprasParametro
ObjConta = ObjContaParametro
Else
ObjCompra = New ClsCompras
ObjConta = New ClsContabilidad(ObjCompra.IniciaTransacSQL)
End If
Dim Contador As Integer = 0
Dim Importe As Double = 0
Dim ErrorMovtosCxP As Integer = 0
Dim Fecha As Date
If ListaDocumentos Is Nothing And Not ListaDocumentos.Count > 0 Then
For Each gvr As GridViewRow In GVAnticipos.Rows
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
Contador += 1
'If gvr.DataKey("Fecha").ToDate > Fecha Then Fecha = gvr.DataKey("Fecha").ToDate 'guardo la fecha mayor
Importe += gvr.FCTextBox("TxtAnticipo").Text.ToDouble
If Math.Round(Importe, 2) - Math.Round(CompraSaldo, 2) > 0.01 Then gvr.FCTextBox("TxtAnticipo").Text = "" : gvr.FCCheckBox("Chk").Checked = False
End If
Next
Else
Contador = 1
End If
'If TxtFecha.Text.ToDate > Fecha Then Fecha = TxtFecha.Text.ToDate
Fecha = TxtFechaEjecucion.Text.ToDate
'Contador = 0
If Contador > 0 Then
If ListaDocumentos Is Nothing And Not ListaDocumentos.Count > 0 Then
If Math.Round(Importe, 2) - Math.Round(CompraSaldo, 2) > 0.01 Then
Alert("El Importe seleccionado excede al importe de la compra", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
ArrAnticipos.Clear()
If CveCompra > 0 Then
'INICIALIZA OBJETOS
If Not (ObjComprasParametro IsNot Nothing And ObjContaParametro IsNot Nothing) Then
ObjCompra = New ClsCompras
ObjConta = New ClsContabilidad(ObjCompra.IniciaTransacSQL)
End If
Dim CveCompraNC, IdCtaContable, CveCuenta As Integer
Dim PorcentajePago, ImporteMovimiento, sumaAmortizacion, sumaAmortizacionCompleto As Decimal
Dim ConceptoPoliza As String = $"Amortización {NombreProveedor} - {TxtSerie.Text}-{TxtFolio.Text}"
Dim CompraUnificada As Boolean = False
Dim IVACompleto As Boolean = False
Dim IdCtaIVAXAcreditar As Integer = 0
Dim IdCtaIVAAcreditable As Integer = 0
'PorcentajeIVA
If GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDT.MAX("IVAPorcentaje").ToDouble).Rows.Count > 0 Then
IdCtaIVAXAcreditar = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDT.MAX("IVAPorcentaje").ToDouble).Rows(0)("IdCtaIVAXAcreditar").ToString.ToEntero
IdCtaIVAAcreditable = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDT.MAX("IVAPorcentaje").ToDouble).Rows(0)("IdCtaIVAAcreditable").ToString.ToEntero
End If
Try
Dim CveIE As Integer = -1
If EmpresaPrueba Then
Dim CvePlantillaPoliza = 52
Dim tipoCambio As Decimal
Dim tipoCambioNC As Decimal
Dim alertaContabilizacion As New StringBuilder
Dim idCuentaContabilizacion As Long = 1
Dim CveCuentaContabilizacion As Long = 1
Dim CvePrepolizaPadre As Integer = CvePrePoliza
Dim CuentasContablesInvalidas As New StringBuilder
Dim CuentasContablesInvalidasSIG As New StringBuilder
If DdlMoneda.SelectedValue.ToString.ToEntero = 2 Then
tipoCambio = GlobalTipoCambio(Fecha).ToString.ToDecimal
Else
tipoCambio = 1
End If
'[IPP] PARCHE PARA AMORTIZACIÓN NC
Dim TipoCambioCompra = Me.TipoCambio.ToDecimal
Dim CvePrePolizaNueva As Integer = ObjConta.AddPrePolizas("Compras/Anticipos", 52, Importe, Importe, DdlMoneda.SelectedValue.ToEntero, Fecha, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
For Each gvr As GridViewRow In GVAnticipos.Rows
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
CveCompraNC = gvr.DataKey("CveCompra").ToEntero
tipoCambioNC = gvr.DataKey("TCCompra").ToDecimal
sumaAmortizacion = 0
If CvePrePolizaNueva > 0 Then
If ObjConta.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPoliza) Then
For Each Row As DataRow In ObjConta.DtResultados.Rows
Dim ConceptoContable = Row("CveConcepto").ToString.ToEntero
Dim TipoMovimiento As Boolean = If(Row("TipoMovto").ToString = "True", True, False)
ImporteMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
Dim Concepto As String = ""
Dim importeMN As Decimal = 0
Dim Multiplicador As Integer = If(Row("Multiplicador").ToString.ToEntero = 1, 1, -1)
Dim PorcentajeImpuesto As Decimal = 0
Dim ConceptoPartida As String = String.Format("{0}-{1}", TxtSerie.Text, TxtFolio.Text)
Select Case ConceptoContable
Case 265 'Amortización Anticipos Compras
If gvr.DataKey("TipoDocto").Contiene("Ant") Then
CveIE = -1
ImporteMovimiento = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal
importeMN = ImporteMovimiento * tipoCambioNC
sumaAmortizacion += ImporteMovimiento
sumaAmortizacionCompleto += ImporteMovimiento
If DdlMoneda.SelectedValue.ToEntero <> 1 Then
IdCtaContable = CtaProveedorAnticiposExtranjera
CveCuenta = CveCuentaProveedorAnticiposExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, "", ConceptoContable, "", Fecha, IdCtaContable, -1, CveCompra:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=ImporteMovimiento, TipoCambio:=tipoCambioNC, CveCompraAmortizacion:=CveCompra, CveCuenta:=CveCuenta) Then
If UsuarioActual.CveEmpresa.Contiene(119) Then
IdCtaContable = CtaProveedorAnticiposComplementaria
CveCuenta = CveCuentaProveedorAnticiposComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, importeMN - ImporteMovimiento, "", 266, "", Fecha, IdCtaContable, -1, CveCompra:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN - ImporteMovimiento, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=ImporteMovimiento, TipoCambio:=tipoCambioNC, CveCompraAmortizacion:=CveCompra, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
Exit Select
End If
End If
Else
ErrorMovtosCxP = 1
Exit Select
End If
Else
IdCtaContable = CtaProveedorAnticipos
CveCuenta = CveCuentaProveedorAnticipos
If ImporteMovimiento <> 0 Then
PorcentajePago = ImporteMovimiento / TxtTotal.Text.ToDecimal
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, "", ConceptoContable, "", Fecha, IdCtaContable, -1, CveCompra:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=If(tipoCambio = 1, 0, ImporteMovimiento), CveCompraAmortizacion:=CveCompra, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
End If
End If
End If
End If
ImporteMovimiento = 0
Case 60 'Nota de Credito
If gvr.DataKey("TipoDocto").Contiene("NC", "DEV") Then
CveIE = -1
ImporteMovimiento = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal
importeMN = ImporteMovimiento * tipoCambioNC
sumaAmortizacion += ImporteMovimiento
sumaAmortizacionCompleto += ImporteMovimiento
If DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, ConceptoPartida, ConceptoContable, ConceptoPartida, Fecha, IdCtaContable, -1, CveCompra:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=ImporteMovimiento, TipoCambio:=tipoCambioNC, CveCompraAmortizacion:=CveCompra, CveCuenta:=CveCuenta) Then
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, importeMN - ImporteMovimiento, ConceptoPartida, 235, ConceptoPartida, Fecha, IdCtaContable, -1, CveCompra:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN - ImporteMovimiento, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=ImporteMovimiento, TipoCambio:=tipoCambioNC, CveCompraAmortizacion:=CveCompra, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
Exit Select
End If
Else
ErrorMovtosCxP = 1
Exit Select
End If
Else
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
If ImporteMovimiento <> 0 Then
PorcentajePago = ImporteMovimiento / TxtTotal.Text.ToDecimal
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, ConceptoPartida, ConceptoContable, ConceptoPartida, Fecha, IdCtaContable, -1, CveCompra:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=If(tipoCambio = 1, 0, ImporteMovimiento), CveCompraAmortizacion:=CveCompra, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
End If
End If
End If
End If
ImporteMovimiento = 0
Case 21 'Anticipo
If gvr.DataKey("TipoDocto") = "Egsc" Then
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
ImporteMovimiento = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal
sumaAmortizacion += ImporteMovimiento
sumaAmortizacionCompleto += ImporteMovimiento
IdCtaContable = CtaProveedorAnticipos
CveCuenta = CveCuentaProveedorAnticipos
If ImporteMovimiento <> 0 Then
PorcentajePago = ImporteMovimiento / TxtTotal.Text.ToDecimal
Dim TipoCambioAnt = gvr.DataKey("TCCompra").ToDecimal
Dim usacomplementariaAnticipo As Boolean = False
usacomplementariaAnticipo = If(TipoCambioAnt > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False)
Dim ImporteAnt As Decimal = ImporteMovimiento
Dim ImporteAntMN As Decimal = ImporteAnt * TipoCambioAnt
If usacomplementariaAnticipo Then
IdCtaContable = CtaProveedorAnticiposComplementaria
CveCuenta = CveCuentaProveedorAnticiposComplementaria
ImporteAntMN = TipoCambioAnt * ImporteAnt - ImporteAnt
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteAnt, "", 266, ConceptoPartida, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=CveCompraNC, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, ImporteMX:=ImporteAntMN, ImporteME:=ImporteAnt, TipoCambio:=TipoCambioAnt, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
End If
ImporteAntMN = ImporteAnt
End If
If TipoCambioAnt > 1 Then
IdCtaContable = CtaProveedorAnticiposExtranjera
CveCuenta = CveCuentaProveedorAnticiposExtranjera
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteAnt, "", ConceptoContable, ConceptoPartida, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteAntMN, CvePrePolizaOriginal:=CvePrePolizaNueva, ImporteME:=If(tipoCambio = 1, 0, ImporteAnt), CveCompraAmortizacion:=CveCompraNC, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
End If
If tipoCambio <> TipoCambioAnt Then
Dim importeFluctuacion = (ImporteAnt * tipoCambio) - (ImporteAnt * TipoCambioAnt)
If importeFluctuacion > 0 Then
ConceptoContable = 64
TipoMovimiento = True
IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria
ElseIf importeFluctuacion < 0 Then
ConceptoContable = 65
TipoMovimiento = False
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
End If
importeFluctuacion = importeFluctuacion.Abs.RoundSQL()
If importeFluctuacion <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, importeFluctuacion, "", ConceptoContable, ConceptoPartida, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeFluctuacion, CvePrePolizaOriginal:=CvePrePolizaNueva, ImporteME:=0, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
End If
End If
End If
End If
End If
ImporteMovimiento = 0
Case 37 'Deudores Diversos
If gvr.DataKey("TipoDocto") = "DD" Then
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
ImporteMovimiento = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal
sumaAmortizacion += ImporteMovimiento
sumaAmortizacionCompleto += ImporteMovimiento
IdCtaContable = CtaProveedorDeudores
CveCuenta = CveCuentaProveedorDeudores
If ImporteMovimiento <> 0 Then
PorcentajePago = ImporteMovimiento / TxtTotal.Text.ToDecimal
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, "", ConceptoContable, "", Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento * tipoCambio, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=If(tipoCambio = 1, 0, ImporteMovimiento), CveCompraAmortizacion:=CveCompraNC, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
End If
End If
End If
ImporteMovimiento = 0
Case 17 'Pago Proveedores
Dim TipoCambio17 = tipoCambio
If gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant", "Egsc") Then
TipoCambio17 = TipoCambioCompra
End If
If gvr.DataKey("TipoDocto").Contiene("NC", "DEV") Then
ConceptoContable = 272
End If
ImporteMovimiento = sumaAmortizacion
importeMN = ImporteMovimiento * TipoCambio17
If DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then
IdCtaContable = CtaProveedorExtranjera
CveCuenta = CveCuentaProveedorExtranjera
If ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, Concepto, ConceptoContable, Concepto, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=ImporteMovimiento, TipoCambio:=TipoCambio17, CveCuenta:=CveCuenta) Then
IdCtaContable = CtaProveedorComplementaria
CveCuenta = CveCuentaProveedorComplementaria
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, importeMN - ImporteMovimiento, Concepto, 206, Concepto, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN - ImporteMovimiento, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=ImporteMovimiento, TipoCambio:=TipoCambio17, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
Exit Select
End If
Else
ErrorMovtosCxP = 1
Exit Select
End If
Else
IdCtaContable = CtaProveedor
CveCuenta = CveCuentaProveedor
If ImporteMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, Concepto, ConceptoContable, Concepto, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveCompraAmortizacion:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=If(TipoCambio17 = 1, 0, ImporteMovimiento), CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
Exit For
End If
End If
End If
ImporteMovimiento = 0
Case 14 'Iva X Acreditar
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If UsuarioActual.Empresa.Funcionalidad(521) = "1" Then
If sumaAmortizacion = CompraSaldo Then
ImporteMovimiento = TxtIVA.Text.ToDecimal
IVACompleto = True
Else
ImporteMovimiento = 0
End If
Else
ImporteMovimiento = Math.Round(PorcentajePago * TxtIVA.Text.ToDecimal, 2)
End If
importeMN = ImporteMovimiento * tipoCambio
PorcentajeImpuesto = TmpDT.MAX("IVAPorcentaje").ToDecimal
IdCtaContable = If(IdCtaIVAXAcreditar > 0, IdCtaIVAXAcreditar, 0)
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditar").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIVAxAcreditarSIG").ToString.ToEntero
End If
End If
End If
Case 19 'Iva Acreditado
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If UsuarioActual.Empresa.Funcionalidad(521) = "1" Then
If sumaAmortizacion = CompraSaldo Then
ImporteMovimiento = TxtIVA.Text.ToDecimal
IVACompleto = True
Else
ImporteMovimiento = 0
End If
Else
ImporteMovimiento = Math.Round(PorcentajePago * TxtIVA.Text.ToDecimal, 2)
End If
importeMN = ImporteMovimiento * tipoCambio
PorcentajeImpuesto = TmpDT.MAX("IVAPorcentaje").ToDecimal
IdCtaContable = If(IdCtaIVAAcreditable > 0, IdCtaIVAAcreditable, 0)
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIVAAcreditable").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIVAAcreditableSIG").ToString.ToEntero
End If
End If
End If
Case 15 'RetIVA x Acreditar Honorarios/Serv. Prof.
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 1 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(307).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(307).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 22 'RetIVA Acreditable Honorarios/Serv. Prof.
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 1 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(308).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(308).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 183 'RetIVA x Acreditar Fletes P.F.
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 2 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(309).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(309).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 184 'RetIVA Acreditable Fletes P.F.
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 2 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(310).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(310).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 185 'RetIVA x Acreditar Fletes P.M.
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 3 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(311).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(311).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 186 'RetIVA Acreditable Fletes P.M.
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 3 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(312).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(312).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 248 'RetIVA x Acreditar Arrendamiento
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 4 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(313).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(313).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 249 'RetIVA Acreditable Arrendamiento
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetIVAConcepto.Items.Count > 0 Then
If DdlRetIVAConcepto.SelectedValue.ToEntero = 4 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetIVA > 0 Then
IdCtaContable = CtaProveedorRetIVA
CveCuenta = CveCuentaProveedorRetIVA
ElseIf UsuarioActual.Empresa.Funcionalidad(314).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(314).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
End If
Case 16 'RetISR x Acreditar
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 1 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetISR.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(315).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(315).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
Case 23 'RetISR Acreditable
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 1 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetISR.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(316).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(316).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
Case 243 'RetISR X Acreditar Terceros y Arrendamiento
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 2 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetISR.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(317).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(317).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
Case 244 'RetISR Acreditable Terceros y Arrendamiento
If Not gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then
If DdlRetISRConcepto.Items.Count > 0 AndAlso DdlRetISRConcepto.SelectedValue.ToEntero = 2 Then
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetISR.Text.ToDecimal, 2)
importeMN = ImporteMovimiento * tipoCambio
If CtaProveedorRetISR > 0 Then
IdCtaContable = CtaProveedorRetISR
CveCuenta = CveCuentaProveedorRetISR
ElseIf UsuarioActual.Empresa.Funcionalidad(318).ToEntero > 0 Then
IdCtaContable = UsuarioActual.Empresa.Funcionalidad(318).ToEntero
Else
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacionSIG").ToString.ToEntero
End If
End If
End If
End If
End If
Case 64 'GANANCIA
If gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then 'SOLO SE IMPLEMENTÓ PARA NC
If DdlMoneda.SelectedValue.ToEntero <> 1 Or gvr.DataKey("CveMoneda").ToEntero <> 1 Then
IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria
If TipoCambioCompra > tipoCambioNC Then
ImporteMovimiento = (sumaAmortizacion * TipoCambioCompra) - (sumaAmortizacion * tipoCambioNC)
ImporteMovimiento = ImporteMovimiento.RoundSQL()
importeMN = ImporteMovimiento
End If
If ImporteMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, Concepto, ConceptoContable, Concepto, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=0, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
Exit For
End If
End If
End If
End If
ImporteMovimiento = 0
Case 65 'PERDIDA
If gvr.DataKey("TipoDocto").Contiene("NC", "DEV", "Ant") Then 'SOLO SE IMPLEMENTÓ PARA NC
If DdlMoneda.SelectedValue.ToEntero <> 1 Or gvr.DataKey("CveMoneda").ToEntero <> 1 Then
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
If tipoCambioNC > TipoCambioCompra Then
ImporteMovimiento = (sumaAmortizacion * tipoCambioNC) - (sumaAmortizacion * TipoCambioCompra)
ImporteMovimiento = ImporteMovimiento.RoundSQL()
importeMN = ImporteMovimiento
End If
If ImporteMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, Concepto, ConceptoContable, Concepto, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=0, CveCuenta:=CveCuenta) Then
ErrorMovtosCxP = 1
Exit For
End If
End If
End If
End If
ImporteMovimiento = 0
End Select
If ImporteMovimiento <> 0 Then
'Conta ContPAQ
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
idCuentaContabilizacion = 0
End If
'Conta SIG
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
CveCuentaContabilizacion = 0
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteMovimiento, Concepto, ConceptoContable, Concepto, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=importeMN, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=If(tipoCambio = 1, 0, ImporteMovimiento), CveCuenta:=CveCuenta, PorcentajeImpuesto:=PorcentajeImpuesto) Then
ErrorMovtosCxP = 1
Exit For
End If
End If
Next
End If
End If
'[IPP] COMENTADO PORQUE REUNIFICABA AMORTIZACIÓN NC 27/Agosto/2018
'If Not CompraUnificada Then
' 'Unificacion de PrePolizas
' If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then
' If Not ObjConta.PrePolizaUnificacion(gvr.DataKey("CvePrePoliza").ToEntero, CvePrepolizaPadre) Then
' ErrorMovtosCxP = 1
' Alert("No se pudo unificar la prepoliza", TipoMensaje.MsgError)
' End If
' End If
'End If
End If
Next
'Si el importe total de la amortizacion es igual al saldo de la compra se registra IVA
If IVACompleto = False AndAlso UsuarioActual.Empresa.Funcionalidad(521) = "1" Then
If sumaAmortizacionCompleto = CompraSaldo Then
Dim PorcentajeImpuesto As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, True, TxtIVA.Text.ToDecimal, "", 14, "", Fecha, IdCtaIVAXAcreditar, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=TxtIVA.Text.ToDecimal * tipoCambio, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=If(tipoCambio = 1, 0, TxtIVA.Text.ToDecimal), CveCuenta:=CveCuenta, PorcentajeImpuesto:=PorcentajeImpuesto) Then
ErrorMovtosCxP = 1
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, False, TxtIVA.Text.ToDecimal, "", 19, "", Fecha, IdCtaIVAAcreditable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=TxtIVA.Text.ToDecimal * tipoCambio, CvePrePolizaOriginal:=CvePrePoliza, ImporteME:=If(tipoCambio = 1, 0, TxtIVA.Text.ToDecimal), CveCuenta:=CveCuenta, PorcentajeImpuesto:=PorcentajeImpuesto) Then
ErrorMovtosCxP = 1
End If
End If
End If
'Unificacion de PrePolizas
If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then
If Not ObjConta.PrePolizaUnificacion(CvePrepolizaPadre, CvePrePolizaNueva) Then
ErrorMovtosCxP = 1
Alert("No se pudo unificar la prepoliza", TipoMensaje.MsgError)
End If
End If
'Simplificacion de PrePolizas
If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then
If Not ObjConta.PrePolizaSimplificacion(CvePrepolizaPadre, UsuarioActual.CveEmpresa) Then
ErrorMovtosCxP = 1
Alert("No se pudo simplificar los movimientos", TipoMensaje.MsgError)
End If
End If
'Validacion de prepolizas
If ObjConta.ValidacionPrePolizaCuadre(CvePrePolizaNueva, 4) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
GuardaLogAD($"Compras/Compras-Anticipos | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
'ErrorMovtosCxP = 1
End If
End If
'Conta ContPAQ
If UsuarioActual.Empresa.Funcionalidad(200) = "1" And ErrorMovtosCxP = 0 And UsuarioActual.Empresa.UsaContabilidad Then
If idCuentaContabilizacion > 0 Then
If ObjConta.ContabilizarPrePoliza(CvePrePolizaNueva, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then
alertaContabilizacion.AppendFormat("<a class='Texto' href = '/Contabilidad/RegPoliza.aspx?IdPoliza={0}'>{1}<\a><br>", ObjConta.ContaIdPoliza, ObjConta.ContaFolio)
Else
ErrorMovtosCxP = 1
End If
If ErrorMovtosCxP = 0 Then
Alert("Se enviaron correctamente las siguientes pólizas:<br><br>" & alertaContabilizacion.ToString, ModExtensiones.TipoMensaje.MsgInformacion)
Else
Alert($"Ocurrio un error al contabilizar {ObjConta.AlertaMensaje}", TipoMensaje.MsgAdvertencia)
End If
Else
Alert(String.Format("No se puede contabilizar la Prepoliza debido a que las siguientes cuentas son inválidas: <br>{0}", CuentasContablesInvalidas), TipoMensaje.MsgAdvertencia)
End If
End If
Else 'Empresa Prueba
For Each gvr As GridViewRow In GVAnticipos.Rows
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
CveCompraNC = gvr.DataKey("CveCompra").ToEntero
If CvePrePoliza > 0 Then
Dim CveConceptoCompra As Integer = 60
Dim CveConceptoPago As Integer = 17
Dim TipoMovimientoCompra As Boolean = True
Select Case gvr.DataKey("TipoDocto")
Case "NC", "DEV"
CveConceptoCompra = 60
CveIE = -1
CveConceptoPago = 272
Case "Egsc"
CveConceptoCompra = 21
'vinculo la compra actual, y no la compra como si fuera nota de credito
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
Case "DD"
CveConceptoCompra = 37
'vinculo la compra actual, y no la compra como si fuera nota de credito
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
End Select
PorcentajePago = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal / TxtTotal.Text.ToDecimal
'Se agrega la nota de credito
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimientoCompra, gvr.FCTextBox("TxtAnticipo").Text.ToDecimal, " ", CveConceptoCompra, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompraNC, CveProveedor:=CveProveedor, CveIE:=CveIE, CveCompraAmortizacion:=CveCompraNC, ImporteMX:=gvr.FCTextBox("TxtAnticipo").Text.ToDecimal) Then
ErrorMovtosCxP = 1
Exit For
End If
'movimiento de pago proveedor
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoCompra, gvr.FCTextBox("TxtAnticipo").Text.ToDecimal, " ", CveConceptoPago, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, CveCompraAmortizacion:=CveCompraNC, ImporteMX:=gvr.FCTextBox("TxtAnticipo").Text.ToDecimal) Then
ErrorMovtosCxP = 1
Exit For
End If
'si tiene iva y su proporcion
ImporteMovimiento = Math.Round(PorcentajePago * TxtIVA.Text.ToDecimal, 2)
If ImporteMovimiento > 0 Then
Dim PorcentajeImpuesto As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, " ", 14, " ", TxtFechaPago.Text.ToDate, IdCtaIVAXAcreditar, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento, PorcentajeImpuesto:=PorcentajeImpuesto) Then ErrorMovtosCxP = 1 : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, " ", 19, " ", TxtFechaPago.Text.ToDate, IdCtaIVAAcreditable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento, PorcentajeImpuesto:=PorcentajeImpuesto) Then ErrorMovtosCxP = 1 : Exit For
End If
'si tiene Ret iva y su proporcion
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetIVA.Text.ToDecimal, 2)
If ImporteMovimiento > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, " ", 15, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento) Then ErrorMovtosCxP = 1 : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, " ", 22, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento) Then ErrorMovtosCxP = 1 : Exit For
End If
'si tiene Ret ISR y su proporcion
ImporteMovimiento = Math.Round(PorcentajePago * TxtRetISR.Text.ToDecimal, 2)
If ImporteMovimiento > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, " ", 16, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento) Then ErrorMovtosCxP = 1 : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, " ", 23, " ", TxtFechaPago.Text.ToDate, 0, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteMovimiento) Then ErrorMovtosCxP = 1 : Exit For
End If
'actualizo una tabla de vinculaciones
'actualizo la cantidad en amortizaciones
If gvr.DataKey("TipoDocto").Contiene("NC", "DEV") Then
If Not ObjCompra.AmortizarCompra(CveCompra, CveCompraNC, gvr.FCTextBox("TxtAnticipo").Text.ToDouble, UsuarioActual.CveUsuario) Then
ErrorMovtosCxP = 2
Exit For
End If
End If
End If
End If
Next
End If 'Empresa Prueba
Select Case ErrorMovtosCxP
Case 0
Alert("El movimiento se aplicó correctamente.", TipoMensaje.MsgInformacion)
ObjCompra.Commit()
Dim dtnc As DataTable = Nothing
If ObjCompra.GetComprasNotasCredito(CveCompra, -1) Then
dtnc = ObjCompra.DtResultados
End If
GvAnticiposSel.DataSource = dtnc
GvAnticiposSel.DataBind()
LblAmortizacion.Text = (LblAmortizacion.Text.ToDouble + Importe).FormatoNumero
CompraSaldo = CompraSaldo - Importe
HdnCompraSaldo.Value = CompraSaldo.ToString
If CompraSaldo > 0 Then CargaAnticipos(CveProveedor)
If CveCompra > 0 Then VisualizaEstatusCompraSaldo(DdlTipoComprobante.SelectedValue, CompraSaldo.ToDecimal, TxtTotal.Text.ToDecimal)
UpAnticipos.Update()
UpPS.Update()
dtnc.Dispose()
Case 1
Alert("Ocurrió un error al amortizar la nota de crédito<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ObjCompra.RollBack()
Case 2
Alert("Ocurrió un error al amortizar la nota de crédito<br />Revise su factura y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia)
ObjCompra.RollBack()
End Select
Catch ex As Exception
ObjCompra.RollBack()
End Try
ObjCompra.Dispose()
Else
'sino se ha guardado la compra, se registra temporal que anticpos van a cargarle
For Each gvr As GridViewRow In GVAnticipos.Rows
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
ArrAnticipos.Add(New Anticipos With {.CvePrePoliza = gvr.DataKey("CvePrePoliza").ToEntero, .CveIE = gvr.DataKey("CveIE").ToString.ToEntero, .CveCompra = gvr.DataKey("CveCompra").ToEntero, .Importe = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal, .TCCompra = gvr.DataKey("TCCompra").ToDecimal, .TipoMovto = gvr.DataKey("TipoDocto")})
End If
Next
Dim ImporteAnticipo As Decimal = 0
If ArrAnticipos.Count > 0 Then
For Each Ant As Anticipos In ArrAnticipos
ImporteAnticipo += Ant.Importe
Next
End If
LblAmortizacion.Text = ImporteAnticipo.FormatoNumero
UpPS.Update()
End If
RegistraScript(String.Format("$('#{0}').modal('hide');", "DivAnticipos"))
Else
Alert("No hay movimientos seleccionados para aplicar", TipoMensaje.MsgAdvertencia)
End If
UPPAnticiposSel.Update()
End Sub
Protected Sub ImgClasificacion_Click(sender As Object, e As EventArgs) Handles ImgClasificacion.Click
If CveCompra > 0 Then
Dim SiSelecciono As Boolean = False
For Each gvr As GridViewRow In GvPS.Rows
If gvr.FCCheckBox("CheckClasificacion").Checked = True Then
SiSelecciono = True
Exit For
End If
Next
If SiSelecciono = False Then
Alert("Tiene que seleccionar algun Producto o Servicio", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
DdlAplicaClasificacion.SelectedValue = "-1"
RegistraScript(String.Format("$('#{0}').modal('show');", "DivClasificacion"))
Else
RegistraScript(String.Format("$('#{0}').modal('show');", "DivClasificacion"))
End If
End Sub
Protected Sub BtnActualizar_Click(sender As Object, e As EventArgs) Handles BtnActualizar.Click
'VALIDA IMPORTES
If CveFactura > 0 Then 'SI NO VIENE DE FACTURA/XML NO VALIDA TOTALES
If Not ValidaTotalesGuardar() Then
Exit Sub
End If
End If
For Each Row As DataRow In TmpDT.Rows
If Row("CveSubProyecto").ToString.ToEntero <= 0 Then
Alert("No se ha completado la asignacion de proyectos en la compra. ", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If Row("CveClasificacionActualizar").ToString.ToEntero <= 0 Then 'If NotHas117 AndAlso Row("CveClasificacionActualizar").ToString.ToEntero <= 0 Then
Alert("Hay productos que no tienen clasificación asignada.<br> Favor de asignarle una y darle guardar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If UsuarioActual.Empresa.Funcionalidad(527) = "1" Then
If Row("CveTipoGasto").ToString.ToEntero <= 0 Then
Alert("No se ha completado la asignacion de tipos de gasto en la compra.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
Next
Dim ObjCompra As New ClsCompras
Dim ObjProveedores As New ClsCompProveedores(ObjCompra.IniciaTransacSQL())
Dim ObjInventario As New ClsInventarios(ObjCompra.IniciaTransacSQL)
Dim ObjContabilidad As New ClsContabilidad(ObjCompra.IniciaTransacSQL)
Dim ObjAF As New ClsAF(ObjCompra.IniciaTransacSQL)
Dim ObjContaAC As ClsContPAQi = New ClsContPAQi(UsuarioActual.Empresa)
Dim Retorno As Boolean = True
Dim CveEstatusFactura As Integer = HdnCveEstatusFactura.Value.ToEntero
Dim MultiplicadorNC = If(DdlTipoComprobante.SelectedValue = "NC", -1, 1)
Dim ErrorAC = False
Dim IDPolizaComprometido = 0
If ChkProgramarPago.Checked AndAlso CveEstatusFactura = 1 Then
CveEstatusFactura = 2
End If
If Not ChkProgramarPago.Checked AndAlso CveEstatusFactura = 2 Then
CveEstatusFactura = 1
End If
Try
'Revisamos que los cambios hechos mantengan la interidad de los numeros
If HFDiferenciaCompra.Value = TxtTotal.Text Or CveFactura < 1 Or CveCompra < 1 Then
'PORCENTAJE IVA
Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal
If ObjCompra.UpdateCompra(TxtDescripcion.Text.Trim, TxtFolioSecundario.Text.Trim, TxtFechaPago.Text.ToDate, ChkAplicaNotaCredito.Checked, TxtObsFact.Text.Trim, CveEstatusFactura,
TxtDescuento.Text.ToDouble, TxtSubTotal.Text.ToDouble, TxtIVA.Text.ToDouble, TxtTotal.Text.ToDouble,
UsuarioActual.CveUsuario, CveCompra, CveCajaChica:=DdlRembolsoCajaChica.SelectedValue.ToEntero, CvePersonal:=DdlRembolsoPersonal.SelectedValue.ToEntero, CveProveedorSucursal:=If(DdlProveedorSucursal.SelectedValue.ToEntero > 0, DdlProveedorSucursal.SelectedValue.ToEntero, -1), PorcentajeIVA:=PorcentajeIVA, NumeroReembolso:=TxtRembolsoNumero.Text,
CveTipoCompra:=DdlTipoCompra.SelectedValue.ToEntero, NoDeducible:=EsNoDeducible) Then
If Not ComparaDatatables() Then
'Regeneramos el concepto 6 de PrePolizas
'If UsuarioActual.Empresa.Funcionalidad(207) = "1" Then
' If Not RegenerarPrePoliza(ObjContabilidad, ObjContaAC, 6, False, MultiplicadorNC) Then
' Retorno = False
' End If
'End If
'If UsuarioActual.Empresa.Funcionalidad(207) = "1" Then
If Not ActualizarPrePoliza(ObjContabilidad, ObjCompra) Then
Retorno = False
End If
'End If
''EMPIEZA: SI USA AC
If UsuarioActual.Empresa.UsaAC And IdPoliza > 0 Then
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
'ELIMINA TODOS LOS MOVIMIENTOS DE LA POLIZA
ObjContaAC.RemoveAllMovimientos(IdPoliza)
'INSERTA LOS NUEVOS MOVIMIENTOS DE LA POLIZA
If IdPoliza > 0 Then
Dim CuentaAbono As Integer
Dim Importe As Decimal = 0
Dim TotalDetalle As Decimal = 0
'CUENTA PROVEEDOR
If CtaProveedor <= 0 Then
If ObjContaAC.GetCuentas(-1, "021120000000000000", -1) Then
Dim drCuenta As DataRow = ObjContaAC.DtResultados.FiltroPrimero("")
If drCuenta IsNot Nothing Then
CuentaAbono = drCuenta("Id").ToString.ToEntero
Dim FolioProveedor = ObjContaAC.GetFolioProveedores("021120000000000000").ToString
ViewState("CtaProveedor") = ObjContaAC.AddCuenta(String.Format("02112{0}000000000", FolioProveedor.PadLeft(4, "0"c)), NombreProveedor, "D", 2, 0, 1, 0, "", 1, CuentaAbono)
ObjProveedores.UpdateProveedorIdCuentaAC(CveProveedor, CtaProveedor)
Else
ErrorAC = True
End If
Else
ErrorAC = True
End If
End If
Dim ConceptoRenglon As String = ""
If Not ErrorAC Then
Dim tTotalIVA, tTotalGral, tDiferenciaIVA, tIVA, tRetIVA, tRetISR As Decimal
Dim ipresup As Integer = 0
'COMIENZA: PRUEBA AGRUPACION CONCEPTOS
Dim Presup = From gvr As DataRow In TmpDT.Rows.Cast(Of DataRow)()
Group gvr By Grp = New With {
Key .CvePresupuestoEgreso = gvr("CvePresupuestoEgreso").ToString.ToEntero,
Key .CveActivoFijo = If(gvr("TipoAF").ToString.ToEntero = 2, gvr("CveActivoFijo").ToString.ToEntero, -1)
} Into Group
Select Grp.CvePresupuestoEgreso, Grp.CveActivoFijo,
TotalImporte = Group.Sum(Function(r) r("Total").ToString.ToDecimal)
Dim Fecha As Date = TxtFecha.Text.ToDate
'PresupuestoEgresos
Dim DtPresupuestosTemp As DataTable
Dim IdCuentaComprometido, IdCuentaPorEjercer, IdCuentaDevengado, IdCuentaMatriz As Integer
'Dim tTotalIVA, tTotalGral, tDiferenciaIVA, tIVA As Double
tTotalIVA = TxtIVA.Text.ToDecimal
tRetIVA = TxtRetIVA.Text.ToDecimal
tRetISR = TxtRetISR.Text.ToDecimal
'tTotalIVA = tTotalIVA - tRetIVA - tRetISR
tTotalGral = TxtTotal.Text.ToDecimal + tRetIVA + tRetISR ' EL TOTAL GENERAL DEBE DE SER EL SUBTOTAL + IVA, NO SE DEBEN DE INCLUIR LAS RETENCIONES, POR ESO SE RESTA
tDiferenciaIVA = tTotalIVA
tIVA = 0
ipresup = 0
'INVENTARIOS EN AC
Dim CuentaMatrizAlmacen As Integer
Dim ContadorInventario As Integer = GvInv.Rows.Cast(Of GridViewRow)().Count(Function(gvr) gvr.FCCheckBox("cbInv").Checked)
'COMENTADO 15/3/2016
'cuando hay algo que ingresar a inventarios
'Dim x As Integer = 0
'For Each Dr As DataRow In TmpDT.Rows
' If GvInv.Rows.Count > 0 Then
' If GvInv.Rows(x).FCCheckBox("cbInv").Checked Then
' Dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero
' Else 'limpio el valor para que no truene en linq mas abajo
' Dr("CveAlmacen") = 0
' End If
' x = x + 1
' Else
' Exit For
' End If
'Next
''previamente si hay un ingreso a inventarios
'Dim CtaAlmacen As Integer
'If ContadorInventario > 0 Then
' Dim drr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", TmpDT.Rows(0)("CveAlmacen").ToString))
' If drr IsNot Nothing Then
' CtaAlmacen = drr("IdCtaContable").ToString.ToEntero
' End If
'End If
Dim CtaAlmacen As Integer
If ContadorInventario > 0 Then
Dim drr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", GvInv.HeaderRow.FCDropDownList("ddlAlmacen").SelectedValue.ToString.ToEntero))
If drr IsNot Nothing Then
CtaAlmacen = drr("IdCtaContable").ToString.ToEntero
End If
End If
Dim DescuentoConIVA As Double
Dim tPorIVA As Decimal = tTotalIVA / (tTotalGral - tTotalIVA)
Dim tAjusteTotal As Decimal = 0
For Each grp In Presup
Importe = grp.TotalImporte
TotalDetalle += Importe
ipresup += 1
If Importe > 0 Then
'saco la proporcion de iva que le corresponde
tIVA = Math.Round(Importe * tPorIVA, 2)
tDiferenciaIVA -= tIVA
'identifico si es el ultimo registro, para ver si es necesario un ajuste
If ipresup = Presup.Count Then
If Math.Round(TotalDetalle - tTotalGral, 2) <= 0.01 AndAlso tDiferenciaIVA > 0 Then
tIVA += tDiferenciaIVA
End If
End If
'le sumo el iva al concepto
Importe += tIVA
'codigo Provisional, para cuand tenga descuento, solo tome el subtotal * el iva,RMF
If TxtDescuento.Text.ToDouble > 0 Then
Importe = grp.TotalImporte * (1 + tPorIVA)
End If
tAjusteTotal += Importe
'valido que la sumas de lo detalles no exceda al totalgeneral
If Math.Round(tAjusteTotal, 2) > tTotalGral Then
'le resto la diferencia
Importe -= (tAjusteTotal - tTotalGral)
End If
'Presupuesto Egresos
DtPresupuestosTemp = DtPresupuestos.FiltraParametros(String.Format("CvePresupuestoEgreso = {0}", grp.CvePresupuestoEgreso))
If DtPresupuestosTemp.Rows.Count <> 1 Then
ErrorAC = True
Exit For
End If
IdCuentaComprometido = DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString.ToEntero
IdCuentaPorEjercer = DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero
IdCuentaDevengado = DtPresupuestosTemp.Rows(0)("IdCuentaDevengado").ToString.ToEntero
IdCuentaMatriz = DtPresupuestosTemp.Rows(0)("IdCuentaMatriz").ToString.ToEntero
'COMPROMETIDO DEPENDIENTE SI EXISTE SU POLIZA
If IDPolizaComprometido = 0 Then
ConceptoRenglon = String.Format("GC Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If ObjContaAC.AddMovimiento(IdPoliza, IdCuentaComprometido, False, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
If Not ObjContaAC.AddMovimiento(IdPoliza, IdCuentaPorEjercer, True, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
Exit For
End If
Else
ErrorAC = True
Exit For
End If
End If
ConceptoRenglon = String.Format("GD Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
'DEVENGADO
If ObjContaAC.AddMovimiento(IdPoliza, IdCuentaDevengado, False, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
If Not ObjContaAC.AddMovimiento(IdPoliza, IdCuentaComprometido, True, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
Exit For
End If
Else
ErrorAC = True
Exit For
End If
If ContadorInventario > 0 Then
Dim tImporte, ttIVA As Double
For Each gvr As GridViewRow In GvPS.Rows
'registra los movimientos del presupuesto asignado, para que no se duplique si hay varios presupeusto dentro de la compra
If gvr.DataKey("CvePresupuestoEgreso").ToEntero = grp.CvePresupuestoEgreso Then
'saco la proporcion de iva que le corresponde
tImporte = gvr.FCLiteral("LtlTotal").Text.ToDouble
ttIVA = Math.Round(tImporte * tTotalIVA / tTotalGral, 2)
' tDiferenciaIVA -= tIVA
' 'identifico si es el ultimo registro, para ver si es necesario un ajuste
' If ipresup = GvPS.Rows.Count Then
' If Math.Round(TotalDetalle - tTotalGral, 2) <= 0.01 AndAlso tDiferenciaIVA > 0 Then
' tIVA += tDiferenciaIVA
' End If
' End If
' ' 'le sumo el iva al concepto
tImporte += ttIVA
'PU = tImporte / gvr.DataKey("Cantidad").ToDouble
'If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.DataKey("Cantidad").ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1) Then
' ErrorAC = True
' Exit For
'End If
End If
Next
CuentaMatrizAlmacen = CtaAlmacen
ElseIf grp.CveActivoFijo > 0 Then
Dim CtaAF = -1
Dim AF = ""
Dim CuentaInicial = -1
If ObjAF.GetActivosFijos(grp.CveActivoFijo, UsuarioActual.CveEmpresa, "-1", "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1, UsuarioActual.CveEmpresa) Then
CtaAF = ObjAF.Cuenta
AF = ObjAF.Descripcion
CuentaInicial = ObjAF.CuentaInicial
Else
ErrorAC = True
Exit For
End If
If Not CuentaInicial > 0 Then
CuentaInicial = 1241
End If
'CUENTA AF
If CtaAF <= 0 Then
If ObjContaAC.GetCuentas(-1, String.Format("0{0}0000000000000", CuentaInicial), -1) Then
Dim drCuenta As DataRow = ObjContaAC.DtResultados.FiltroPrimero("")
If drCuenta IsNot Nothing Then
CuentaAbono = drCuenta("Id").ToString.ToEntero
Dim FolioAF = ObjContaAC.GetFolioProveedores(String.Format("0{0}0000000000000", CuentaInicial)).ToString
CtaAF = ObjContaAC.AddCuenta(String.Format("0{0}{1}000000000", CuentaInicial, FolioAF.PadLeft(4, "0"c)), AF, "A", 2, 0, 1, 0, "", 1, CuentaAbono)
ObjAF.UpdateActivosFijosCuentaAC(grp.CveActivoFijo, CtaAF, UsuarioActual.CveUsuario)
Else
ErrorAC = True
End If
Else
ErrorAC = True
End If
End If
CuentaMatrizAlmacen = CtaAF
Else
CuentaMatrizAlmacen = IdCuentaMatriz
End If
''AFECTAR MATRIZ EGRESOS
If ObjContaAC.AddMovimiento(IdPoliza, CuentaMatrizAlmacen, False, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
''VERIFICA SI TIENE DESCUENTO (AMORTIZACION)
If TxtDescuento.Text.ToDouble > 0 AndAlso CtaProveedorAnticipos > 0 Then
DescuentoConIVA = TxtDescuento.Text.ToDecimal * 1.16
'Valida que el descuento con iva cuadre en los totales
If Math.Abs(DescuentoConIVA - (Importe - TxtTotal.Text.ToDouble)) < 0.02 Then
DescuentoConIVA = Importe - TxtTotal.Text.ToDouble
ElseIf DescuentoConIVA <> (Importe - TxtTotal.Text.ToDecimal) Then
ErrorAC = True
Exit For
End If
'actualizo el idcuenta del presupuesto
If ObjContaAC.AddMovimiento(IdPoliza, CtaProveedor, True, MultiplicadorNC * (Importe - DescuentoConIVA), "", ConceptoRenglon, 0, Fecha, "") Then
'agrego a la cuenta contable anticipos
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedorAnticipos, True, MultiplicadorNC * DescuentoConIVA, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
Exit For
End If
Else
ErrorAC = True
Exit For
End If
Else
'actualizo el idcuenta del
End If
Else
ErrorAC = True
Exit For
End If
''TERMINA AFECTAR MATRIZ EGRESOS
Else
ErrorAC = True
Exit For
End If
Next
If Not ErrorAC Then
'registro un solo movimiento a proveedores
Importe = TxtTotal.Text.ToDecimal
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedor, True, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
End If
End If
If tRetISR > 0 Then
ConceptoRenglon = String.Format("GD Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedorRetISR, True, MultiplicadorNC * tRetISR, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
End If
End If
End If
Else
ErrorAC = True
End If
'CUADRA LA POLIZA
ObjContaAC.AjustaPoliza(IdPoliza)
End If
''TERMINA: SI USA AC
If Not ErrorAC Then
Dim Cont As Integer = 0
For Each Row As DataRow In TmpDT.Rows
'actualizar las clasificaciones, que se hallan hecho
If Row("CveClasificacionActualizar").ToString.ToEntero > 0 Then
'REGISTRO EL PRODUCTO
Dim PSS As New ClsProductosServicios
If Not PSS.UpdateClasificacionPS(Row("CveClasificacionActualizar").ToString.ToEntero, UsuarioActual.CveUsuario, Row("CvePS").ToString.ToEntero) Then
Retorno = False
Exit For
End If
'Row("CvePS") = 20184 'PSS.DtResultados.FiltraParametros("PS = '" & Row("PS").ToString & "' AND CveEmpresa = " & UsuarioActual.CveEmpresa).Rows(0)("CvePS").ToString
PSS.Dispose()
End If
Dim CvePersonal = GvPersonal.Rows(Cont).FCDropDownList("DdlPersonalGv").SelectedValue.ToEntero
Dim Referencia = GvPersonal.Rows(Cont).FCTextBox("TxtReferencia").Text
Cont = Cont + 1
'Si es AF-INSUMO se guarda en CveActivoFIjo
Dim CveAF = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 1, Row("CveActivoFijo").ToString.ToEntero, -1)
'Si es AF-COMPRA se guarda en CveActivoFijoCompra
Dim CveAFCompra = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 2, Row("CveActivoFijo").ToString.ToEntero, -1)
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 = "True" AndAlso EsNoDeducible, True, False)) Then
Retorno = False
Exit For
End If
'If Not ObjCompra.VerificaPrepolizas(UsuarioActual.CveEmpresa, CveCompra) Then
' Retorno = False
'End If
If Retorno Then
'AGREGA AF COMPRA - Cuando es Compra se guarda CveCompraDetalle en AF
If Row("TipoAF").ToString.ToEntero = 2 Then
If Not ObjAF.UpdateActivosFijosCompra(Row("CveActivoFijo").ToString.ToEntero, Row("CveCompraDetalle").ToString.ToEntero, Row("TipoAF").ToString.ToEntero, Row("Total").ToString.ToDouble, TxtFecha.Text.Trim.ToDate) Then
Retorno = False
Exit For
End If
End If
End If
Next
For Each item As String In ClavesBorradas
Dim ObjCompras As New ClsCompras
If Not ObjCompras.DeleteCompraDetalle(item.ToEntero) Then
Retorno = False
End If
Next
If Retorno Then
If ViewState("IdPoliza").ToString.ToEntero > 0 Then
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
If Not ObjContabilidad.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveEmpresa, UsuarioActual.Empresa, MinFecha, String.Format("{0}-{1}", Serie, Folio), ObjContaAC, pIDPoliza:=ViewState("IdPoliza").ToString.ToEntero) Then
Retorno = False
End If
End If
End If
Else
Retorno = False
End If
'Retorno = True
'Alert("La Compra se actualizó correctamente.")
End If
Else
Retorno = False
End If
Else
Alert("La compra no se puede actualizar debido a que los totales no son iguales, verifique sus cambios", TipoMensaje.MsgError)
End If
Catch ex As Exception
Alert("Ocurrió un error al actualizar la compra", TipoMensaje.MsgError)
ObjCompra.RollBack()
ObjContaAC.RollBack()
Finally
If Retorno Then
If ObjContabilidad.MensajePolizaDescuadre IsNot Nothing AndAlso ObjContabilidad.MensajePolizaDescuadre.ToString <> "" Then
Alert(ObjContabilidad.MensajePolizaDescuadre.ToString)
End If
ObjCompra.Commit()
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
Dim Msg As New StringBuilder()
Msg.Append("La Compra se actualizó correctamente")
Alert(Msg.ToString())
Else
ObjCompra.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrió un error al actualizar la compra, por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia)
End If
If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose()
End Try
ObjCompra.Dispose()
ObjProveedores.Dispose()
ObjInventario.Dispose()
ObjContabilidad.Dispose()
ObjAF.Dispose()
If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose()
CargaGvBitacora()
UpBitacora.Update()
End Sub
Private Function ComparaDatatables() As Boolean
Dim NumRow As Integer = 0
For Each row1 As DataRow In TmpDT.Rows
Dim NumRow2 As Integer = 0
For Each row2 As DataRow In TmpDTOriginal.Rows
If NumRow2 = NumRow Then
If (row1("CveSubProyecto").ToString.ToEntero <> row2("CveSubProyecto").ToString.ToEntero) Or
(row1("CveClasificacion").ToString.ToEntero <> row2("CveClasificacion").ToString.ToEntero) Or
(row1("CveTipoGasto").ToString.ToEntero <> row2("CveTipoGasto").ToString.ToEntero) Or
(row1("Total").ToString.ToDouble <> row2("Total").ToString.ToDouble) Or
(row1("NoDeducible").ToString <> row2("NoDeducible").ToString) Or
(row1("CvePS").ToString.ToEntero <> row2("CvePS").ToString.ToEntero) Then
Return False
End If
End If
NumRow2 += 1
Next
NumRow += 1
Next
Return True
End Function
Private Function ActualizarPrePoliza(ObjConta As ClsContabilidad, ObjCompra As ClsCompras) As Boolean
Dim Retorno = True, ErrorPrepoliza = False
Dim CvePlantillaPrePoliza As Integer
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
CvePlantillaPrePoliza = 60
Else
CvePlantillaPrePoliza = 1
End If
Dim tIdContaProveedor As Integer = CtaProveedor
Dim ImporteAnticipo As Decimal = 0
If (ArrAnticipos.Count > 0 And CveCompra > 0) Or (ArrAnticipos.Count > 0 And UsuarioActual.Empresa.UsaAC) Then '-- ESTO SE QUITO - IPP - 04 NOVIMEBRE 2016
CvePlantillaPrePoliza = 52
'cuenta de anticipos
tIdContaProveedor = CtaProveedorAnticipos
For Each Ant As Compras_Compras.Anticipos In ArrAnticipos
ImporteAnticipo += Ant.Importe
Next
If Math.Round(ImporteAnticipo, 2) > TxtTotal.Text.ToDouble Then
Alert("El Importe seleccionado es mayor a la compra", TipoMensaje.MsgAdvertencia)
Return False
End If
End If
If RBLContado.SelectedValue = "2" AndAlso DdlFuncionarioEmpleado.SelectedValue.ToEntero > 0 Then
If EmpresaPrueba Then
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
CvePlantillaPrePoliza = 60
Else
CvePlantillaPrePoliza = 1
End If
Else
CvePlantillaPrePoliza = 9
End If
End If
Dim CveMovimientoInventario As Integer = CveMovimientoAlmacen
Dim DT As DataTable
Dim tipoCambioActual, tipoCambioPago As Decimal
Dim FechaMovimiento As Date = TxtFecha.Text.ToDate
If DdlMoneda.SelectedValue.ToString.ToEntero = 2 Then
tipoCambioActual = GlobalTipoCambio(FechaMovimiento).ToString.ToDecimal
tipoCambioActual = If(DivTC.Visible Or TipoCambio.ToDecimal > 0, TipoCambio.ToDecimal, tipoCambioActual)
tipoCambioPago = GlobalTipoCambio(TxtFechaPago.Text.ToDate).ToString.ToDecimal
Else
tipoCambioActual = 1
tipoCambioPago = 1
End If
If ObjConta.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPrePoliza) Then
For Each Row As DataRow In ObjConta.DtResultados.Rows
Dim ConceptoContable = Row("CveConcepto").ToString.ToEntero
Dim TipoMovimiento As Boolean = If(Row("TipoMovto").ToString = "True", True, False)
Dim importeMovimiento As Decimal = 0
Dim IdCtaContable As Integer = 0
Dim CveCuenta As Integer = 0
Dim importeMN As Decimal = 0
Dim Multiplicador As Integer = If(Row("Multiplicador").ToString.ToEntero = 1, 1, -1)
Dim Referencia As String = $"{TxtSerie.Text}-{TxtFolio.Text}" ' concatenation interpolation
Select Case ConceptoContable
Case 6
Dim CveProveedorConcepto As Integer = 0, CveAcreedor As Integer = 0, CveIE As Integer = 0, CveColectiva As Integer = 0, CveCreditoDetalle As Integer = 0
Dim ConceptoPersonal As String = "", Concepto As String = ""
If Not ObjConta.GetPrePolizasDetalle(CvePrePoliza) Then
ErrorPrepoliza = True
Else
If ObjConta.DtResultados.FiltraParametros("CveConceptoContable IN (6,68,49,205,176)").Rows.Count > 0 Then
CveProveedorConcepto = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveProveedor").ToString.ToEntero
CveAcreedor = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveAcreedor").ToString.ToEntero
CveIE = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveIE").ToString.ToEntero
CveColectiva = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveColectiva").ToString.ToEntero
CveCreditoDetalle = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveCreditoDetalle").ToString.ToEntero
Concepto = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("Concepto").ToString
End If
End If
If CveProveedorConcepto <= 0 Then
CveProveedorConcepto = DdlProveedor.SelectedValue.ToEntero
End If
'Removemos los conceptos de la prepoliza
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 6, CveCompra, 1) 'GASTO
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 68, CveCompra, 1) 'ALMACEN
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 49, CveCompra, 1) 'AF
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 205, CveCompra, 1) 'PS YA RECIBIDO
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 230, CveCompra, 1) 'PS YA RECIBIDO
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 231, CveCompra, 1) 'PS YA RECIBIDO
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 176, CveCompra, 1) 'PS NO RECIBIDO
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 228, CveCompra, 1) 'PS NO RECIBIDO
ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 229, CveCompra, 1) 'PS NO RECIBIDO
'OBTIENE METODO DE CONTABILIZACIÓN AL GUARDAR
Dim ConceptoContabilizacionAlmacen = 0
If ObjCompra.GetCompras(CveCompra, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjCompra.DtResultados.Rows.Count > 0 Then
ConceptoContabilizacionAlmacen = ObjCompra.DtResultados.FiltroPrimeroValor("CveConceptoContableAlmacen").ToEntero
End If
'AF
DT = TmpDT.FiltraParametros("ISNULL(TipoAF,0) = 2")
If DT.Rows.Count > 0 AndAlso DdlTipoComprobante.SelectedValue <> "NC" And ConceptoContabilizacionAlmacen = 0 Then
For Each Row2 As DataRow In DT.Rows
importeMovimiento = Row2("Total").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(49, Row2("CveActivoFijo").ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContActivoFijo").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCtaContActivoFijoSIG").ToString.ToEntero
End If
End If
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Row2("CodAF").ToString, 49, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveActivoFijo:=Row2("CveActivoFijo").ToString.ToEntero, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta) Then
ErrorPrepoliza = True
End If
End If
Next
End If
'LIMPIA
importeMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
'COSTO ALMACEN
Dim DtAlmacenes = GlobalDTAlmacen(UsuarioActual.CveEmpresa)
If UsuarioActual.Empresa.UsaInventarios AndAlso Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And ConceptoContabilizacionAlmacen = 0 Then
DT = TmpDT.FiltraParametros("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) > 0", "", {"CveAlmacen"})
'RECORREMOS PARA DETECTAR LA MODALIDAD DEL ALMACEN, EN CASO DE SER SOLO EXISTENCIA LIMPIAMOS CVEALMACEN
For Each Dr As DataRow In DT.Rows
If DtAlmacenes.FiltroPrimeroValor("Modalidad", $"CveAlmacen = {Dr("CveAlmacen").ToString.ToEntero}").ToString = "Solo Existencia" Then
Dr("CveAlmacen") = 0
End If
Dr.AcceptChanges()
Next
DT.AcceptChanges()
DT = DT.FiltraParametros("ISNULL(CveAlmacen,0) > 0")
If DT.Rows.Count > 0 AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then
For Each Row2 As DataRow In DT.Rows
importeMovimiento = TmpDT.SUM("Total", $"CveAlmacen = {Row2("CveAlmacen")}").ToString.ToDecimal + TmpDT.SUM("CostoIndirectoAlmacen", $"CveAlmacen = {Row2("CveAlmacen")}").ToString.ToDecimal 'Row2("Total").ToString.ToDecimal + Row2("CostoIndirectoAlmacen").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(68, GvInv.HeaderRow.FCDropDownList("ddlAlmacen").SelectedValue.ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCtaContableSIG").ToString.ToEntero
End If
End If
If importeMovimiento <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveMovimientoAlmacen:=CveMovimientoInventario, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta) Then
ErrorPrepoliza = True
End If
End If
Next
End If
End If
'LIMPIA
importeMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
'INV [MERCANCIA RECIBIDA POR ADELANTADO (OC) | MERCANCIA PENDIENTE POR RECIBIR (COMPRA) ]
If UsuarioActual.CveEmpresa.Contiene(119) And UsuarioActual.Empresa.UsaInventarios And Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And ConceptoContabilizacionAlmacen.Contiene(176, 205) Then
importeMovimiento = TmpDT.SUM("Total", $"ISNULL(TipoAF,0) <> 2 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND CveTipoPS = 2").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(ConceptoContabilizacionAlmacen, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
End If
If importeMovimiento <> 0 Then
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContabilizacionAlmacen, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta) Then
ErrorPrepoliza = True
End If
End If
End If
'NC CON PRODUCTOS - CUENTA PUENTE
If UsuarioActual.CveEmpresa.Contiene(119) And UsuarioActual.Empresa.UsaInventarios And Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And ConceptoContabilizacionAlmacen.Contiene(225) Then
importeMovimiento = TmpDT.SUM("Total", $"ISNULL(TipoAF,0) <> 2 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND CveTipoPS = 2").ToString.ToDecimal
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
If ObjConta.GetRetCuenta(ConceptoContabilizacionAlmacen, UsuarioActual.CveEmpresa) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
End If
If importeMovimiento <> 0 Then
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContabilizacionAlmacen, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta) Then
ErrorPrepoliza = True
End If
End If
End If
'GASTO
DT = TmpDT.Copy
'RECORREMOS PARA DETECTAR LA MODALIDAD DEL ALMACEN, EN CASO DE SER SOLO EXISTENCIA LIMPIAMOS CVEALMACEN
For Each Dr As DataRow In DT.Rows
If DtAlmacenes.FiltroPrimeroValor("Modalidad", $"CveAlmacen = {Dr("CveAlmacen").ToString.ToEntero}").ToString = "Solo Existencia" Then
Dr("CveAlmacen") = 0
End If
Dr.AcceptChanges()
Next
DT.AcceptChanges()
DtAlmacenes.Dispose()
'QUITA 1-[MERCANCIA RECIBIDA POR ADELANTADO (OC) | MERCANCIA PENDIENTE POR RECIBIR (COMPRA)] 2-[NC CON PRODUCTOS]
If UsuarioActual.CveEmpresa.Contiene(119) And UsuarioActual.Empresa.UsaInventarios And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And ConceptoContabilizacionAlmacen > 0 Then
DT = DT.FiltraParametros("CveTipoPS <> 2")
End If
Dim DTDistinct = DT.Copy
If UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
DTDistinct = DTDistinct.FiltraParametros("ISNULL(TipoAF,0) <> 2", "", {"CveClasificacion", "Clasificacion", "SubProyecto", "CveProyecto", "CveSubProyecto", "CveTipoGasto", "TipoGasto"})
Else
DTDistinct = DTDistinct.FiltraParametros("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1", "", {"CveClasificacion", "Clasificacion", "SubProyecto", "CveProyecto", "CveSubProyecto", "CveTipoGasto", "TipoGasto"})
End If
If DTDistinct.Rows.Count > 0 Then
For Each Row2 As DataRow In DTDistinct.Rows
'DETERMINA IMPORTE
If UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
importeMovimiento = DT.SUM("Total", String.Format("ISNULL(TipoAF,0) <> 2 AND CveClasificacion = {0} AND CveSubProyecto = {1} AND ISNULL(CveTipoGasto,0) = {2}", Row2("CveClasificacion").ToString.ToEntero, Row2("CveSubProyecto").ToString.ToEntero, Row2("CveTipoGasto").ToString.ToEntero)).ToString.ToDecimal
Else
importeMovimiento = DT.SUM("Total", String.Format("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND CveClasificacion = {0} AND CveSubProyecto = {1} AND ISNULL(CveTipoGasto,0) = {2}", Row2("CveClasificacion").ToString.ToEntero, Row2("CveSubProyecto").ToString.ToEntero, Row2("CveTipoGasto").ToString.ToEntero)).ToString.ToDecimal
End If
importeMN = importeMovimiento * tipoCambioActual * Multiplicador
'CLASIFICACION
If Row2("CveClasificacion").ToString.ToEntero > 0 Then
If ObjConta.GetRetCuenta(6, Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 AndAlso ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaGastoSIG").ToString.ToEntero
Else
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
End If
End If
End If
'SEGMENTO DE NEGOCIO
Dim IdSegmentoNegocio As Integer = -1
Dim drT As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero).FiltroPrimero(String.Format("CveSubProyecto = {0} ", Row2("CveSubProyecto").ToString.ToEntero))
If drT IsNot Nothing Then
IdSegmentoNegocio = drT("IdSegNeg").ToString.ToEntero
End If
'AGREGA MOVIMIENTO
If importeMovimiento <> 0 Then
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero) Then
ErrorPrepoliza = True
End If
End If
Next
End If
'LIMPIA
importeMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
End Select
Next
End If
If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, 4) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
ErrorPrepoliza = True
GuardaLogAD($"Compras/Compras-Actualizar | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
End If
End If
If Not ErrorPrepoliza Then
Retorno = True
Else
Retorno = False
End If
Return Retorno
End Function
Protected Sub ImgActualizarProyecto_Click(sender As Object, e As EventArgs) Handles ImgActualizarProyecto.Click
'actualizo los proyectos
Dim Compra As New ClsCompras
Dim Retorno As Boolean = True
Compra.IniciaTransacSQL()
For Each Row As DataRow In TmpDT.Rows
If Not Compra.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("Observaciones").ToString, Row("CveSubProyecto").ToString.ToEntero, Row("CvePresupuestoEgreso").ToString.ToEntero, -2, Row("CveCompraDetalle").ToString.ToEntero, CveTipoGasto:=Row("CveTipoGasto").ToString.ToEntero) Then
Retorno = False
Exit For
End If
Next
If Retorno Then
Compra.Commit()
Alert("La Compra se actualizó correctamente.")
Else
Compra.RollBack()
End If
Compra.Dispose()
End Sub
Protected Sub BtnVerAmortizacion_Click(sender As Object, e As EventArgs) Handles BtnVerAmortizacion.Click
BtnVerAmortizacion.Visible = False
'BtnAmortizar.Visible = True
'activo el cuadro para amortizar
RBLPago.SelectedValue = "2" ' selecciono contado
PnlContado.Visible = True
PnlContadoBancos.Visible = False
RBLContado.Items.Clear()
RBLContado.Items.Add(New ListItem("Deudores", "4"))
RBLContado.SelectedValue = "4" 'selecciono deudores
PnlContadoDeudores.Visible = True
CargaDeudores()
End Sub
Protected Sub ImgAjusteSobreTotal_Click(sender As Object, e As ImageClickEventArgs) Handles ImgAjustaSobreTotal.Click
'realizo el ajuste de los productos
'total - iva
Dim Diferencia As Decimal = TxtTotal.Text.ToDecimal() - TxtIVA.Text.ToDecimal + TxtRetIVA.Text.ToDecimal + TxtRetISR.Text.ToDecimal - (TxtSubTotal2.Text.ToDecimal)
AjustaImporteUltimoConcepto(Diferencia)
BtnGuardar.Enabled = True
UpFacturar.Update()
End Sub
#End Region
#Region "CargaXML"
Private Function ValorXML(n As XmlNode, Campo As String, Optional Retorno As String = "") As String
Dim o As XmlNode = n.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, Campo, True) = 0)
If o Is Nothing Then
Return Retorno
Else
Return o.Value
End If
End Function
Private Sub CargaComprobanteXML(XMLDoc As XmlDocument)
Dim nodo As XmlNode = XMLDoc.DocumentElement
_Serie = ValorXML(nodo, "serie")
If _Serie <> "" Then _Serie = _Serie
Version = ValorXML(nodo, "version")
_Folio = ValorXML(nodo, "folio")
_Fecha = ValorXML(nodo, "fecha")
SubTotal = ValorXML(nodo, "subTotal").ToDecimal
Total = ValorXML(nodo, "total").ToDecimal
Descuentos = ValorXML(nodo, "descuento").ToDecimal
_Moneda = ValorXML(nodo, "Moneda")
_TipoComprobante = ValorXML(nodo, "tipoDeComprobante")
TipoCambio = ValorXML(nodo, "TipoCambio", "1").ToDouble
If Version = "3.3" Then
Dim drm As DataRow = GlobalDTVtaMetodoPago.FiltroPrimero(String.Format("ClaveMetodoPagoSAT = '{0}'", ValorXML(nodo, "MetodoPago")))
If drm IsNot Nothing Then
CveMetodoPago = drm("CveMetodoPago").ToString.ToEntero
MetodoPago = drm("MetodoPagoSAT").ToString
End If
End If
Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2"
namespaces.AddNamespace(Prefijo, cfdVer)
namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
Dim node As XmlNode
node = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces)
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
EmisorRFC = ValorXML(node, "RFC")
'EmisorNombre = ValorXML(node, "nombre")
End If
node = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces)
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
ReceptorRFC = ValorXML(node, "RFC")
End If
node = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces)
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
If ValorXML(node, "TipoRelacion").ToString.Contiene("04", "07") Then
Dim nodeDocumentosRelacionados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:CfdiRelacionado", Prefijo), namespaces)
For Each documento As XmlNode In nodeDocumentosRelacionados
If documento.Attributes("UUID").Value <> "" Then
ListaDocumentos.Add(documento.Attributes("UUID").Value)
End If
Next
End If
End If
node = XMLDoc.SelectSingleNode(String.Format("//{0}:Impuestos", Prefijo), namespaces)
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Retenciones/{0}:Retencion", Prefijo), namespaces)
TotalRetenciones = ValorXML(node, "totalImpuestosRetenidos", "0").ToDecimal
If Version = "3.3" Then
For Each retencion As XmlNode In nodeRetenciones
If retencion.Attributes("Impuesto").Value = "002" Then
RetencionIVA += retencion.Attributes("Importe").Value.ToDecimal
End If
If retencion.Attributes("Impuesto").Value = "001" Then
RetencionISR += retencion.Attributes("Importe").Value.ToDecimal
End If
' Do something.
Next
GvOC1.Columns(6).Visible = True
GvOC2.Columns(4).Visible = True
Else
For Each retencion As XmlNode In nodeRetenciones
If retencion.Attributes("impuesto").Value = "IVA" Then
RetencionIVA += retencion.Attributes("importe").Value.ToDecimal
End If
If retencion.Attributes("impuesto").Value = "ISR" Then
RetencionISR += retencion.Attributes("importe").Value.ToDecimal
End If
' Do something.
Next
End If
SumaTotalRetenciones += RetencionIVA
SumaTotalRetenciones += RetencionISR
TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDecimal
Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Traslados/{0}:Traslado", Prefijo), namespaces)
If Version = "3.3" Then
For Each traslado As XmlNode In nodeTraslados
If traslado.Attributes("Impuesto").Value = "002" Then
TrasladoIVA += traslado.Attributes("Importe").Value.ToDecimal
End If
If traslado.Attributes("Impuesto").Value = "003" Then
TrasladoIEPS += traslado.Attributes("Importe").Value.ToDecimal
End If
If traslado.Attributes("Impuesto").Value = "001" Then
'TrasladoISR = traslado.Attributes("importe").Value
End If
' Do something.
Next
Else
For Each traslado As XmlNode In nodeTraslados
If traslado.Attributes("impuesto").Value = "IVA" Then
TrasladoIVA += traslado.Attributes("importe").Value.ToDecimal
End If
If traslado.Attributes("impuesto").Value = "IEPS" Then
TrasladoIEPS += traslado.Attributes("importe").Value.ToDecimal
End If
'If traslado.Attributes("impuesto").Value = "ISR" Then
' TrasladoISR = traslado.Attributes("importe").Value
'End If
' Do something.
Next
End If
SumaTotalTraslados += TrasladoIVA
SumaTotalTraslados += TrasladoIEPS
End If
Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces)
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
_TFDUUID = ValorXML(nodeTFD, "UUID", "")
Dim nodeRF As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CFDIRegistroFiscal ", "registrofiscal"), namespaces)
If nodeRF IsNot Nothing Then
_Folio = ValorXML(nodeRF, "folio").TrimStart("0"c)
End If
node = node.SelectSingleNode(String.Format("//{0}:ImpuestosLocales", "implocal"), namespaces)
If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
OtrosImpuestos = ValorXML(node, "TotaldeTraslados", "0").ToDecimal
OtrosImpuestosRetenciones = ValorXML(node, "TotaldeRetenciones", "0").ToDecimal
'If RetencionIVA <= 0 AndAlso ValorXML(node, "TotaldeRetenciones", "0").ToDouble > 0 Then RetencionIVA = ValorXML(node, "TotaldeRetenciones", "0").ToDecimal
'For Each retencion As XmlNode In nodeImpLocales
' If retencion.Attributes("impuesto").Value = "IVA" Then
' RetencionIVA += retencion.Attributes("importe").Value.ToDouble
' End If
' If retencion.Attributes("impuesto").Value = "ISR" Then
' RetencionISR += retencion.Attributes("importe").Value.ToDouble
' End If
' ' Do something.
'Next
' SumaTotalRetenciones += RetencionIVA
' SumaTotalRetenciones += RetencionISR
'TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDouble
'Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces)
'For Each traslado As XmlNode In nodeTraslados
' If traslado.Attributes("impuesto").Value = "IVA" Then
' TrasladoIVA += traslado.Attributes("importe").Value.ToDouble
' End If
' If traslado.Attributes("impuesto").Value = "IEPS" Then
' TrasladoIEPS += traslado.Attributes("importe").Value.ToDouble
' End If
' 'If traslado.Attributes("impuesto").Value = "ISR" Then
' ' TrasladoISR = traslado.Attributes("importe").Value
' 'End If
' ' Do something.
'Next
'SumaTotalTraslados += TrasladoIVA
'SumaTotalTraslados += TrasladoIEPS
End If
End If
'Try
' _TFDUUID = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces).LastChild.Attributes("UUID").InnerText
'Catch ex As Exception
' _TFDUUID = ""
'End Try
End Sub
#End Region
#Region "GV'S"
Protected Sub GVAnticipos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVAnticipos.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DBCampo("SerieFolio") = "" Then
e.Row.Cells(0).Text = ""
e.Row.Cells(5).Text = ""
e.Row.Cells(0).Width = Unit.Pixel(150)
e.Row.CssClass = "Totales TextCenter"
Select Case e.Row.DBCampo("TipoDocto")
Case "Egsc"
e.Row.Cells(0).Text = "Egreso Por Comprobar"
Case "Ant"
e.Row.Cells(0).Text = "Anticipos"
Case "NC"
e.Row.Cells(0).Text = "Notas de crédito"
Case "DEV"
e.Row.Cells(0).Text = "Devolución"
End Select
ElseIf e.Row.DBCampo("CveProveedor") = "" Then
e.Row.Cells(0).Text = ""
e.Row.Cells(5).Text = ""
e.Row.BackColor = Drawing.Color.LightGray
Else
If e.Row.DBCampo("Saldo").ToDouble < 0 Then e.Row.Cells(3).ForeColor = Drawing.Color.Red
If e.Row.DBCampo("Saldo").ToDouble = 0 Then e.Row.FCLiteral("LtlAnticipos").Text = ""
e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("chkAnt(this,{0},{1},{2});", e.Row.FCTextBox("TxtAnticipo").ClientID, e.Row.DBCampo("Saldo"), If(CveCompra > 0, Saldo, If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDouble)))) 'SI ES UNA COMPRA NUEVA SE PONE EL TOTAL, SI NO EL SALDO
e.Row.FCTextBox("TxtAnticipo").Attributes.Add("onKeyUp", String.Format("FnCambiaAnt({0},this,{1},{2});", e.Row.FCCheckBox("Chk").ClientID, e.Row.DBCampo("Saldo"), If(CveCompra > 0, Saldo, If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDouble)))) 'SI ES UNA COMPRA NUEVA SE PONE EL TOTAL, SI NO EL SALDO
If ChkNCInv.Checked Then
e.Row.FCCheckBox("Chk").CssClass = "ChkAntNC"
End If
If ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 Then
Dim Entro As Boolean = False
For Each Documento In ListaDocumentos
If e.Row.DBCampo("UUID").ToString = Documento Then
Entro = True
End If
Next
If Not Entro Then e.Row.FCCheckBox("Chk").Enabled = False
End If
End If
End If
End Sub
Protected Sub GvPS_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GvPS.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If Not (e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5) Then
If e.Row.RowIndex = 0 Then
e.Row.Cells(0).Width = Unit.Pixel(15)
e.Row.Cells(1).Width = Unit.Pixel(45)
e.Row.Cells(2).Width = Unit.Pixel(70)
e.Row.Cells(3).Width = Unit.Pixel(230)
e.Row.Cells(4).Width = Unit.Pixel(202)
e.Row.Cells(5).Width = Unit.Pixel(155)
e.Row.Cells(6).Width = Unit.Pixel(155)
e.Row.Cells(7).Width = Unit.Pixel(50)
e.Row.Cells(8).Width = Unit.Pixel(80)
e.Row.Cells(9).Width = Unit.Pixel(80)
e.Row.Cells(10).Width = Unit.Pixel(43)
e.Row.Cells(11).Width = Unit.Pixel(43)
If UsuarioActual.Empresa.UsaAC Then 'AndAlso (CveFactura > 0 Or CveCompra > 0)
e.Row.Cells(12).Width = Unit.Pixel(150)
e.Row.Cells(13).Width = Unit.Pixel(150)
e.Row.Cells(14).Width = Unit.Pixel(150)
e.Row.Cells(15).Width = Unit.Pixel(150)
e.Row.Cells(16).Width = Unit.Pixel(100)
End If
End If
'Permite la Regeneracion de las prepolizas
If e.Row.DBCampo("CveClasificacion") <> "" AndAlso e.Row.DBCampo("CveClasificacion").ToEntero > 0 Then
TmpDT.Rows(e.Row.RowIndex)("CveClasificacionActualizar") = e.Row.DBCampo("CveClasificacion")
End If
If CveCompra > 0 AndAlso UsuarioActual.TienePermisoProceso(104) AndAlso e.Row.FCCheckBox("CheckClasificacion") IsNot Nothing Then
e.Row.FCCheckBox("CheckClasificacion").Visible = True
End If
If UsuarioActual.TienePermisoProceso(117) Then
e.Row.FCLinkButton("imgE").Visible = False
End If
'El Eliminar solo debera aparecer cuando se registre manual la compra, cuando viene de una factura se desactiva, o cuando esta registrada la compra
If CveFactura = 0 Then 'CveCompra <= 0 And
e.Row.FCLinkButton("imgD").Visible = True
'If e.Row.FCImageButton("imgE") IsNot Nothing Then e.Row.FCImageButton("imgE").Visible = True
If e.Row.FCTextBox("TxtCantidadEdit") IsNot Nothing Then e.Row.FCTextBox("TxtCantidadEdit").Enabled = True
If e.Row.FCTextBox("TxtPrecioEdit") IsNot Nothing Then e.Row.FCTextBox("TxtPrecioEdit").Enabled = True
End If
'Dejar un PS para ver que hace esto y documentar.
If e.Row.DBCampo("CvePS") = "0" Then
e.Row.Cells(0).ToolTip = "Producto/Servicio NO Registrado"
e.Row.Cells(0).ID = String.Format("tr{0}", e.Row.RowIndex)
e.Row.Cells(0).ClientIDMode = ClientIDMode.Static
e.Row.Cells(0).Attributes.Add("onclick", String.Format("fnAltaPS('{0}','{1}',{2})", String.Format("tr{0}", e.Row.RowIndex), e.Row.DBCampo("PS").Replace("'", "").Replace(Chr(13), "").Replace(Chr(10), ""), e.Row.RowIndex))
If e.Row.FCTextBox("TxtPrecioEdit") IsNot Nothing Then e.Row.FCTextBox("TxtPrecioEdit").Enabled = False
If e.Row.FCTextBox("TxtCantidadEdit") IsNot Nothing Then e.Row.FCTextBox("TxtCantidadEdit").Enabled = False
End If
'VALIDA UNIDAD DE MEDIDA
If e.Row.DBCampo("CvePS").ToString.ToEntero > 0 Then
Dim DtEquivalencias = GlobalDTProductosServiciosEquivalencias(e.Row.DBCampo("CvePS").ToString.ToEntero, -1)
'SI UM NO ESTA REGISTRADA
If e.Row.DBCampo("CveUM").ToString.ToEntero <= 0 Then
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("onclick", $"FncUMEquivalencias(1,'{e.Row.DBCampo("UM").Replace("'", "")}',{e.Row.RowIndex},'{DtEquivalencias.FiltroPrimeroValor("UnidadMedida", "UnidadBase = 1")}','{e.Row.DBCampo("CveSATUnidadMedida")}','{e.Row.DBCampo("SATClaveUnidadMedida")}')")
e.Row.FCLabel("LtlUnidadMedida").CssClass = "label label-danger manita centrarUM"
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("data-toggle", "tooltip")
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("title", "Unidad de medida SIN registrar")
End If
'EQUIVALENCIA
If e.Row.DBCampo("CveUM").ToString.ToEntero > 0 And e.Row.DBCampo("CveTipoPS").ToString.ToEntero = 2 Then
If DtEquivalencias.FiltraParametros($"CveUM = {e.Row.DBCampo("CveUM").ToString.ToEntero}").Rows.Count > 0 Then
If Not DtEquivalencias.FiltraParametros($"CveUM = {e.Row.DBCampo("CveUM").ToString.ToEntero} AND UnidadBase = 1").Rows.Count > 0 Then
'UM NO BASE
e.Row.FCLinkButton("LBAplicarEquivalencia").Visible = True
'e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("onclick", $"FncUMEquivalencias(2,'{e.Row.DBCampo("UM").Replace("'", "")}',{e.Row.RowIndex},'{DtEquivalencias.FiltroPrimeroValor("UnidadMedida", "UnidadBase = 1")}')")
e.Row.FCLabel("LtlUnidadMedida").CssClass = "label label-danger centrarUM"
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("data-toggle", "tooltip")
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("title", "Unidad de medida NO medida base")
End If
Else
'SIN EQUIVALENCIA
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("onclick", $"FncUMEquivalencias(3,'{e.Row.DBCampo("UM").Replace("'", "")}',{e.Row.RowIndex},'{DtEquivalencias.FiltroPrimeroValor("UnidadMedida", "UnidadBase = 1")}','{e.Row.DBCampo("CveSATUnidadMedida")}','{e.Row.DBCampo("SATClaveUnidadMedida")}')")
e.Row.FCLabel("LtlUnidadMedida").CssClass = "label label-danger manita centrarUM"
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("data-toggle", "tooltip")
e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("title", "Unidad de medida SIN equivalencia")
End If
End If
End If
If PermisoEdicionManual Then
If e.Row.FCTextBox("TxtPrecioEdit") IsNot Nothing Then e.Row.FCTextBox("TxtPrecioEdit").Enabled = True
End If
'Esconde Editar y Eliminar cuando tiene una OC Vinculada
If OCVinculada Then
e.Row.FCLinkButton("ImgE").Visible = False
e.Row.FCLinkButton("ImgD").Visible = False
End If
If e.Row.DBCampo("CvePS").ToEntero > 0 AndAlso e.Row.DBCampo("IEPSPSPorcentaje").ToDouble > 0 Then
If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=e.Row.DBCampo("CvePS").ToEntero).Rows.Count > 0 Then
Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=e.Row.DBCampo("CvePS").ToEntero).Rows(0)
If DrPS IsNot Nothing Then
If DrPS("IEPSPorcentaje").ToString.ToDouble <> e.Row.DBCampo("IEPSPSPorcentaje").ToDouble Then
e.Row.CssClass = "danger"
e.Row.ToolTip = "El porcentaje de IEPS del producto no coincide con el especificado."
End If
End If
End If
End If
'CargaPresupuestosEgresos
If UsuarioActual.Empresa.UsaAC Then
e.Row.Cells(13).Visible = True
e.Row.Cells(14).Visible = True
e.Row.Cells(15).Visible = True
e.Row.Cells(16).Visible = True
e.Row.Cells(17).Visible = True
e.Row.FCDropDownList("DdlAC1").Items.Clear()
e.Row.FCDropDownList("DdlAC1").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveProgramaOperativo", "ProgramaOperativo"})
e.Row.FCDropDownList("DdlAC1").DataBind()
e.Row.FCDropDownList("DdlAC1").SelectedValueExist(e.Row.DBCampo("CveProgramaOperativo"))
e.Row.FCDropDownList("DdlAC2").Items.Clear()
e.Row.FCDropDownList("DdlAC2").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveUnidadAdministrativa", "UnidadAdministrativa"}, Orderby:="UnidadAdministrativa")
e.Row.FCDropDownList("DdlAC2").DataBind()
e.Row.FCDropDownList("DdlAC2").SelectedValueExist(e.Row.DBCampo("CveUnidadAdministrativa"))
e.Row.FCDropDownList("DdlAC3").Items.Clear()
e.Row.FCDropDownList("DdlAC3").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveFuenteFinanciamiento", "FuenteFinanciamiento"}, Orderby:="FuenteFinanciamiento")
e.Row.FCDropDownList("DdlAC3").DataBind()
e.Row.FCDropDownList("DdlAC3").SelectedValueExist(e.Row.DBCampo("CveFuenteFinanciamiento"))
e.Row.FCDropDownList("DdlAC4").Items.Clear()
e.Row.FCDropDownList("DdlAC4").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveTipoGasto", "TipoGasto"})
e.Row.FCDropDownList("DdlAC4").DataBind()
e.Row.FCDropDownList("DdlAC4").SelectedValueExist(e.Row.DBCampo("CveTipoGasto"))
e.Row.FCDropDownList("DdlAC5").Items.Clear()
e.Row.FCDropDownList("DdlAC5").Visible = True
e.Row.FCDropDownList("DdlAC5").DataSource = DtPresupuestos.FiltraParametros("NOT CodigoCOG like '1%'", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion") 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros("Afectable = 1 ") 'DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion")
e.Row.FCDropDownList("DdlAC5").DataBind()
e.Row.FCDropDownList("DdlAC5").SelectedValueExist(e.Row.DBCampo("CveClasificacionOG"))
'SI EL PRESUPUESTO DE EGRESOS VIENE DESDE LA OC, SE BLOQUEA PE
If e.Row.DBCampo("CveOrdenCompraDetalle").ToEntero > 0 AndAlso e.Row.DBCampo("CvePresupuestoEgreso").ToEntero > 0 Then
e.Row.Cells(13).Enabled = False
e.Row.Cells(14).Enabled = False
e.Row.Cells(15).Enabled = False
e.Row.Cells(16).Enabled = False
e.Row.Cells(17).Enabled = False
End If
Else
e.Row.Cells(13).Visible = False
e.Row.Cells(14).Visible = False
e.Row.Cells(15).Visible = False
e.Row.Cells(16).Visible = False
e.Row.Cells(17).Visible = False
End If
End If
End If
End Sub
Protected Sub GvPS_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvPS.RowDeleting
Dim DbRow As DataRow = Nothing
DbRow = TmpDT.Rows(e.RowIndex)
'Dim TipoDescuento As Integer = -1
Dim Cantidad, PU, IVA, Descuento As Double
Cantidad = DbRow("Cantidad").ToString.ToDouble
PU = DbRow("PU").ToString.ToDouble
IVA = DbRow("IVA").ToString.ToDouble
'IVA = Math.Round((((TxtSubTotal.Text.ToDouble - (Cantidad * PU - Descuento)) * TxtIVA.Text.ToDouble) / TxtSubTotal.Text.ToDouble), 2)
Descuento = DbRow("Descuento").ToString.ToDouble
If CveCompra > 0 Then
ClavesBorradas.Add(DbRow("CveCompraDetalle").ToString.ToEntero)
End If
TmpDT.Rows.RemoveAt(e.RowIndex)
GvPS.DataSource = TmpDT
GvPS.DataBind()
'GVAF.DataSource = TmpDT
'GVAF.DataBind()
''UpnAF.Update()
CalculaTotales(True)
CargaGvInv()
CargaGVsAF()
CargaGvPersonal()
Alert("El Concepto ha sido eliminado correctamente", TipoMensaje.MsgInformacion)
End Sub
Private Sub GvDeudores_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDeudores.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim total As Double = TxtTotal.Text.ToString.ToDouble
Dim saldo As Double = e.Row.DataKey("Saldo").ToDouble
e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("ClickDeudorChk(this, ""{0}"", ""{1}"", ""{2}"")", e.Row.FCTextBox("TxtSaldoDeudor").ClientID, total, saldo))
e.Row.FCTextBox("TxtSaldoDeudor").Attributes.Add("onKeyUp", String.Format("AjustaTextboxDeudores(this);"))
Dim rv As RangeValidator = CType(e.Row.FindControl("RVSaldoDeudor"), RangeValidator)
If saldo > total Then
rv.MaximumValue = total.ToString
Else
rv.MaximumValue = saldo.ToString
End If
End If
End Sub
#End Region
#Region "METODOS"
Private Sub GeneraGlobalDT(data As Object)
Dim ObjPS As New ClsProductosServicios
If (ObjPS.GetPSSimplificado(-1)) Then
Application("GlobalDTPSSimplificado") = ObjPS.DtResultados.AsEnumerable
End If
If ObjPS.GetPSEquivalencias(-1, -1) Then
GlobalDTProductosServiciosEquivalencias(-1, -1) = ObjPS.DtResultados
End If
ObjPS.Dispose()
End Sub
Private Function notienepresupuesto() As Boolean
Dim notienerecursos = False
Dim SinRecursos As New StringBuilder
SinRecursos.AppendFormat("No se cuenta con los Recursos Suficientes en los siguientes subproyectos ")
Dim subproyectosSr As New List(Of Integer)
Dim filtro As New StringBuilder
'me traigo los proyectos y subproyectos para traer presupuesots de la bd
Dim subproyectos As New List(Of Integer)
For Each Row As DataRow In TmpDT.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows
Dim RowCon As DataRow = GlobalDTContratos.FiltroPrimero(String.Format("CveSubProyecto={0}", Row("CveSubProyecto")))
If Not IsNothing(RowCon) Then
filtro.AppendFormat(",{0}", Row("CveSubProyecto"))
subproyectos.Add(Row("CveSubProyecto").ToString.ToEntero)
End If
Next
'me traigo los presupuestos de la base de datos
Dim dtpresupuestos As New DataTable
Dim objContratos As New ClsContratos
If objContratos.GetContratosPresupuesto(filtro.ToString) Then
dtpresupuestos = objContratos.DtResultados
End If
objContratos.Dispose()
'resto los importes actuales a los presupuestos obtenidos de la bd
For Each dr As DataRow In TmpDT.Rows
Dim psclasificacion As String = String.Format("CveSubFamilia='{0}' AND CveSubProyecto={1}", GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CvePS={0}", dr("CvePS").ToString.ToEntero))("CveSubFamilia").ToString, dr("CveSubProyecto").ToString)
If dtpresupuestos.Rows.Count > 0 AndAlso dtpresupuestos.Select(psclasificacion).Count > 0 Then
Dim rowpresupuesto As DataRow = dtpresupuestos.Select(psclasificacion)(0)
rowpresupuesto("Importe") = rowpresupuesto("Importe").ToString.ToDouble - dr("Total").ToString.ToDouble()
Else
If subproyectos.Contains(dr("CveSubProyecto").ToString.ToEntero) Then
notienerecursos = True
If Not subproyectosSr.Contains(dr("CveSubProyecto").ToString.ToEntero) Then
subproyectosSr.Add(dr("CveSubProyecto").ToString.ToEntero)
SinRecursos.AppendFormat(",{0}", dr("SubProyecto").ToString)
End If
End If
End If
Next
dtpresupuestos.AcceptChanges()
'
For Each rowpresupuesto As DataRow In dtpresupuestos.Rows
If (rowpresupuesto("Importe").ToString.ToDouble() < 0) Then
If Not subproyectosSr.Contains(rowpresupuesto("CveSubProyecto").ToString.ToEntero) Then
subproyectosSr.Add(rowpresupuesto("CveSubProyecto").ToString.ToEntero)
SinRecursos.AppendFormat(",{0}", rowpresupuesto("SubProyecto").ToString)
End If
notienerecursos = True
End If
Next
If (notienerecursos) Then
Alert(SinRecursos.ToString, TipoMensaje.MsgAdvertencia)
End If
dtpresupuestos.Dispose()
Return notienerecursos
End Function
Private Sub CreaDTConceptos()
DTConceptos = New DataTable
DTConceptos.Columns.Add("Consec", GetType(Integer))
DTConceptos.Columns.Add("Cantidad", GetType(Double))
DTConceptos.Columns.Add("UM", GetType(String))
DTConceptos.Columns.Add("CveClasificacion", GetType(Integer))
DTConceptos.Columns.Add("PS", GetType(String))
DTConceptos.Columns.Add("PU", GetType(Double))
DTConceptos.Columns.Add("Descuento", GetType(Double))
DTConceptos.Columns.Add("IVA", GetType(Double))
DTConceptos.Columns.Add("Total", GetType(Double))
End Sub
'Private Sub AddPS(Cantidad As Double, UM As String, PS As String, PU As Double, IVA As Double, Descuento As Double, Optional Total As Double = 0)
' Dim Row As DataRow = Nothing
' Row = DTConceptos.NewRow()
' Row("Consec") = DTConceptos.Rows.Count + 1
' Row("Cantidad") = Cantidad
' Row("UM") = UM
' Row("CveClasificacion") = -1
' Row("PS") = PS
' Row("PU") = PU
' Row("IVA") = IVA
' Row("Total") = If(Total > 0, Total, Cantidad * PU)
' Row("Descuento") = Descuento
' DTConceptos.Rows.Add(Row)
'End Sub
Private Sub CreaDTCompras()
TmpDT = New DataTable
TmpDT.Columns.Add("Consec", GetType(Integer))
TmpDT.Columns.Add("Cantidad", GetType(Decimal))
TmpDT.Columns.Add("Codigo", GetType(String))
TmpDT.Columns.Add("CveUM", GetType(Integer))
TmpDT.Columns.Add("UM", GetType(String))
TmpDT.Columns.Add("CveClasificacion", GetType(Integer))
TmpDT.Columns.Add("Clasificacion", GetType(String))
TmpDT.Columns.Add("CveClasificacionActualizar", GetType(Integer))
TmpDT.Columns.Add("CvePS", GetType(Integer))
TmpDT.Columns.Add("PS", GetType(String))
TmpDT.Columns.Add("Obs", GetType(String))
TmpDT.Columns.Add("PU", GetType(Decimal))
TmpDT.Columns.Add("IVA", GetType(Decimal))
TmpDT.Columns.Add("IVAPorcentaje", GetType(Decimal))
TmpDT.Columns.Add("RetIVA", GetType(Decimal))
TmpDT.Columns.Add("RetIVAPorcentaje", GetType(Decimal))
TmpDT.Columns.Add("RetISR", GetType(Decimal))
TmpDT.Columns.Add("RetISRPorcentaje", GetType(Decimal))
TmpDT.Columns.Add("IEPSPS", GetType(Double))
TmpDT.Columns.Add("IEPSPSPorcentaje", GetType(Double))
TmpDT.Columns.Add("IEPSPSIVA", GetType(Double))
TmpDT.Columns.Add("IEPSPSIVAPorcentaje", GetType(Double))
TmpDT.Columns.Add("Descuento", GetType(Decimal))
TmpDT.Columns.Add("OtrosGastos", GetType(Decimal))
TmpDT.Columns.Add("Total", GetType(Decimal))
TmpDT.Columns.Add("AsientoContableCompras", GetType(Integer))
TmpDT.Columns.Add("IdCtaContCompras", GetType(Integer))
TmpDT.Columns.Add("Proyecto", GetType(String))
TmpDT.Columns.Add("CveProyecto", GetType(Integer))
TmpDT.Columns.Add("CveSubProyecto", GetType(Integer))
TmpDT.Columns.Add("CveContrato", GetType(Integer))
TmpDT.Columns.Add("SubProyecto", GetType(String))
'TmpDT.Columns.Add("CveEq", GetType(Integer))
TmpDT.Columns.Add("CveAlmacen", GetType(Integer))
TmpDT.Columns.Add("CvePersonal", GetType(String))
TmpDT.Columns.Add("Referencia", GetType(String))
'AC
TmpDT.Columns.Add("CveTipoGastoAC", GetType(Integer))
TmpDT.Columns.Add("CvePresupuestoEgreso", GetType(Integer))
TmpDT.Columns.Add("CveProgramaOperativo", GetType(Integer))
TmpDT.Columns.Add("CveUnidadAdministrativa", GetType(Integer))
TmpDT.Columns.Add("CveFuenteFinanciamiento", GetType(Integer))
TmpDT.Columns.Add("CveClasificacionOG", GetType(Integer))
TmpDT.Columns.Add("IdCuentaComprometido", GetType(Integer))
TmpDT.Columns.Add("IdCuentaPorEjercer", GetType(Integer))
TmpDT.Columns.Add("IdCuentaDevengado", GetType(Integer))
TmpDT.Columns.Add("IdCuentaMatriz", GetType(Integer))
'INVENTARIO SERIE/LOTE
TmpDT.Columns.Add("CveMetodoInventario", GetType(Integer))
TmpDT.Columns.Add("CveConcepto", GetType(Integer))
'AF
TmpDT.Columns.Add("CveActivoFijo", GetType(Integer))
TmpDT.Columns.Add("CodAF", GetType(String))
TmpDT.Columns.Add("TipoAF", GetType(Integer))
TmpDT.Columns.Add("AFMedida", GetType(Integer))
TmpDT.Columns.Add("AFTipoMantenimiento", GetType(Integer))
'PS
TmpDT.Columns.Add("CveTipoPS", GetType(Integer))
TmpDT.Columns.Add("CodigoPS", GetType(String))
TmpDT.Columns.Add("PSDescripcion", GetType(String))
'CAMPO ESPECIAL PARA GLUYAS - LEE EL DEL XML - A GLUYAS LE INTERESA EL CODIGO DEL PROVEEDOR
TmpDT.Columns.Add("PSCodigo", GetType(String))
'OC
TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer))
TmpDT.Columns.Add("ProductoOC", GetType(String))
TmpDT.Columns.Add("CantidadF", GetType(Double))
'Consignaciones
TmpDT.Columns.Add("CveAlmacenConsignacion", GetType(Integer))
TmpDT.Columns.Add("NoConsignacion", GetType(Integer))
TmpDT.Columns.Add("CveConsignacion", GetType(Integer))
TmpDT.Columns.Add("HdnPS", GetType(String))
TmpDT.Columns.Add("HdnCvePS", GetType(String))
TmpDT.Columns.Add("HdnClasificacion", GetType(String))
TmpDT.Columns.Add("HdnCveClasificacion", GetType(String))
TmpDT.Columns.Add("HdnCveAlmacen", GetType(String))
'Fletes y Servicios
TmpDT.Columns.Add("AplicaCostoIndirecto", GetType(Integer))
TmpDT.Columns.Add("CostoIndirectoAlmacen", GetType(Decimal))
TmpDT.Columns.Add("CveCompraDetalle", GetType(Integer))
TmpDT.Columns.Add("EntregaDirecta", GetType(Integer))
'SAT
TmpDT.Columns.Add("CveSATPS", GetType(Integer))
TmpDT.Columns.Add("SATClaveProductoServicio", GetType(String))
TmpDT.Columns.Add("CveSATUnidadMedida", GetType(Integer))
TmpDT.Columns.Add("SATClaveUnidadMedida", GetType(String))
'Tipo de Gasto
TmpDT.Columns.Add("CveTipoGasto", GetType(Integer))
TmpDT.Columns.Add("TipoGasto", GetType(String))
TmpDT.Columns.Add("ImporteSinImpuestos", GetType(Double))
TmpDT.Columns.Add("ImporteConImpuestos", GetType(Double))
TmpDT.Columns.Add("NoDeducible", GetType(Boolean))
TmpDTOriginal = New DataTable
TmpDTOriginal.Columns.Add("Consec", GetType(Integer))
TmpDTOriginal.Columns.Add("Cantidad", GetType(Decimal))
TmpDTOriginal.Columns.Add("Codigo", GetType(String))
TmpDTOriginal.Columns.Add("CveUM", GetType(Integer))
TmpDTOriginal.Columns.Add("UM", GetType(String))
TmpDTOriginal.Columns.Add("CveClasificacion", GetType(Integer))
TmpDTOriginal.Columns.Add("Clasificacion", GetType(String))
TmpDTOriginal.Columns.Add("CveClasificacionActualizar", GetType(Integer))
TmpDTOriginal.Columns.Add("CvePS", GetType(Integer))
TmpDTOriginal.Columns.Add("PS", GetType(String))
TmpDTOriginal.Columns.Add("Obs", GetType(String))
TmpDTOriginal.Columns.Add("PU", GetType(Decimal))
TmpDTOriginal.Columns.Add("IVA", GetType(Decimal))
TmpDTOriginal.Columns.Add("IVAPorcentaje", GetType(Decimal))
TmpDTOriginal.Columns.Add("RetIVA", GetType(Decimal))
TmpDTOriginal.Columns.Add("RetIVAPorcentaje", GetType(Decimal))
TmpDTOriginal.Columns.Add("RetISR", GetType(Decimal))
TmpDTOriginal.Columns.Add("RetISRPorcentaje", GetType(Decimal))
TmpDTOriginal.Columns.Add("IEPSPS", GetType(Double))
TmpDTOriginal.Columns.Add("IEPSPSPorcentaje", GetType(Double))
TmpDTOriginal.Columns.Add("IEPSPSIVA", GetType(Double))
TmpDTOriginal.Columns.Add("IEPSPSIVAPorcentaje", GetType(Double))
TmpDTOriginal.Columns.Add("Descuento", GetType(Decimal))
TmpDTOriginal.Columns.Add("OtrosGastos", GetType(Decimal))
TmpDTOriginal.Columns.Add("Total", GetType(Decimal))
TmpDTOriginal.Columns.Add("AsientoContableCompras", GetType(Integer))
TmpDTOriginal.Columns.Add("IdCtaContCompras", GetType(Integer))
TmpDTOriginal.Columns.Add("Proyecto", GetType(String))
TmpDTOriginal.Columns.Add("CveProyecto", GetType(Integer))
TmpDTOriginal.Columns.Add("CveSubProyecto", GetType(Integer))
TmpDTOriginal.Columns.Add("CveContrato", GetType(Integer))
TmpDTOriginal.Columns.Add("SubProyecto", GetType(String))
'TmpDTOriginal.Columns.Add("CveEq", GetType(Integer))
TmpDTOriginal.Columns.Add("CveAlmacen", GetType(Integer))
TmpDTOriginal.Columns.Add("CvePersonal", GetType(String))
TmpDTOriginal.Columns.Add("Referencia", GetType(String))
'AC
TmpDTOriginal.Columns.Add("CveTipoGastoAC", GetType(Integer))
TmpDTOriginal.Columns.Add("CvePresupuestoEgreso", GetType(Integer))
TmpDTOriginal.Columns.Add("CveProgramaOperativo", GetType(Integer))
TmpDTOriginal.Columns.Add("CveUnidadAdministrativa", GetType(Integer))
TmpDTOriginal.Columns.Add("CveFuenteFinanciamiento", GetType(Integer))
TmpDTOriginal.Columns.Add("CveClasificacionOG", GetType(Integer))
TmpDTOriginal.Columns.Add("IdCuentaComprometido", GetType(Integer))
TmpDTOriginal.Columns.Add("IdCuentaPorEjercer", GetType(Integer))
TmpDTOriginal.Columns.Add("IdCuentaDevengado", GetType(Integer))
TmpDTOriginal.Columns.Add("IdCuentaMatriz", GetType(Integer))
'INVENTARIO SERIE/LOTE
TmpDTOriginal.Columns.Add("CveMetodoInventario", GetType(Integer))
TmpDTOriginal.Columns.Add("CveConcepto", GetType(Integer))
'AF
TmpDTOriginal.Columns.Add("CveActivoFijo", GetType(Integer))
TmpDTOriginal.Columns.Add("CodAF", GetType(String))
TmpDTOriginal.Columns.Add("TipoAF", GetType(Integer))
TmpDTOriginal.Columns.Add("AFMedida", GetType(Integer))
TmpDTOriginal.Columns.Add("AFTipoMantenimiento", GetType(Integer))
'PS
TmpDTOriginal.Columns.Add("CveTipoPS", GetType(Integer))
TmpDTOriginal.Columns.Add("CodigoPS", GetType(String))
TmpDTOriginal.Columns.Add("PSDescripcion", GetType(String))
'CAMPO ESPECIAL PARA GLUYAS - LEE EL DEL XML - A GLUYAS LE INTERESA EL CODIGO DEL PROVEEDOR
TmpDTOriginal.Columns.Add("PSCodigo", GetType(String))
'OC
TmpDTOriginal.Columns.Add("CveOrdenCompraDetalle", GetType(Integer))
TmpDTOriginal.Columns.Add("ProductoOC", GetType(String))
TmpDTOriginal.Columns.Add("CantidadF", GetType(Double))
'Consignaciones
TmpDTOriginal.Columns.Add("CveAlmacenConsignacion", GetType(Integer))
TmpDTOriginal.Columns.Add("NoConsignacion", GetType(Integer))
TmpDTOriginal.Columns.Add("CveConsignacion", GetType(Integer))
TmpDTOriginal.Columns.Add("HdnPS", GetType(String))
TmpDTOriginal.Columns.Add("HdnCvePS", GetType(String))
TmpDTOriginal.Columns.Add("HdnClasificacion", GetType(String))
TmpDTOriginal.Columns.Add("HdnCveClasificacion", GetType(String))
TmpDTOriginal.Columns.Add("HdnCveAlmacen", GetType(String))
'Fletes y Servicios
TmpDTOriginal.Columns.Add("AplicaCostoIndirecto", GetType(Integer))
TmpDTOriginal.Columns.Add("CostoIndirectoAlmacen", GetType(Decimal))
TmpDTOriginal.Columns.Add("CveCompraDetalle", GetType(Integer))
TmpDTOriginal.Columns.Add("EntregaDirecta", GetType(Integer))
'SAT
TmpDTOriginal.Columns.Add("CveSATPS", GetType(Integer))
TmpDTOriginal.Columns.Add("SATClaveProductoServicio", GetType(String))
TmpDTOriginal.Columns.Add("CveSATUnidadMedida", GetType(Integer))
TmpDTOriginal.Columns.Add("SATClaveUnidadMedida", GetType(String))
'Tipo de Gasto
TmpDTOriginal.Columns.Add("CveTipoGasto", GetType(Integer))
TmpDTOriginal.Columns.Add("TipoGasto", GetType(String))
TmpDTOriginal.Columns.Add("NoDeducible", GetType(Boolean))
TmpDTOriginal.Columns.Add("Importe", GetType(Double))
End Sub
'Private Sub AddDTEnvio(Cantidad As Double, UM As String, CveUM As Integer, CvePS As Integer, PS As String, PU As Double, CveAlmacen As Integer, CveEq As Integer)
' Dim dr As DataRow = DtInv.NewRow
' dr("Cantidad") = Cantidad
' dr("UM") = UM
' dr("CveUM") = CveUM
' dr("CvePS") = CvePS
' dr("PS") = PS
' dr("PU") = PU
' dr("CveAlmacen") = CveAlmacen
' dr("CveEq") = CveEq
' DtInv.Rows.InsertAt(dr, hdnIndexInv.Value.ToEntero + 1)
' GvInv.DataSource = DtInv
' GvInv.DataBind()
'End Sub
Protected Sub RecargaMaximum_Click(sender As Object, e As System.EventArgs)
CalculaTotales(True)
'RVDocumentoImporte.MaximumValue = (TxtSubTotal.Text.ToDouble - TxtDescuento.Text.ToDouble - LblAmortizacion.Text.Trim.ToDouble + TxtIVA.Text.ToDouble - TxtRetIVA.Text.ToDouble - TxtRetISR.Text.ToDouble).FormatoNumero(2)
'RVDocumentoImporteFE.MaximumValue = RVDocumentoImporte.MaximumValue
'RVDocumentoImporteCaja.MaximumValue = RVDocumentoImporte.MaximumValue
End Sub
Protected Sub AlmacenCambiaPS_Click(sender As Object, e As EventArgs) Handles AlmacenCambiaPS.Click
Dim correcto As Boolean = True
Dim x As Integer = 0
'Dim buid As New StringBuilder
For Each Dr As DataRow In TmpDT.Rows
Dim newps As Integer = GvInv.Rows(x).FCDropDownList("Ddlnewps").SelectedValue.ToEntero
If newps > 0 Then
'buid.Append(String.Format("{0} ---> {1},", Dr("CvePS").ToString, newps))
Dr("CvePS") = newps
'buid.Append(String.Format("{0} ---> {1},</br>", Dr("CvePS").ToString, newps))
Else 'limpio el valor para que no truene en linq mas abajo
correcto = False
Alert("Favor de asociar todos los productos o servicios", TipoMensaje.MsgAdvertencia)
Exit For
End If
x = x + 1
Next
x = 0
For Each Dr As DataRow In DtInv.Rows
Dim newps As Integer = GvInv.Rows(x).FCDropDownList("Ddlnewps").SelectedValue.ToEntero
If newps > 0 Then
'buid.Append(String.Format("{0} ---> {1},", Dr("CvePS").ToString, newps))
Dr("CvePS") = newps
'buid.Append(String.Format("{0} ---> {1},</br>", Dr("CvePS").ToString, newps))
Else 'limpio el valor para que no truene en linq mas abajo
correcto = False
Alert("Favor de asociar todos los productos o servicios", TipoMensaje.MsgAdvertencia)
Exit For
End If
x = x + 1
Next
TmpDT.AcceptChanges()
'Alert(buid.ToString)
If correcto Then
If Not CierrePeriodo Then
BtnGuardar.Visible = True
End If
UpFacturar.Update()
End If
End Sub
Private Sub SetValues()
'Dim um As New ClsUnidadesMedida
TxtFecha.Text = Now.ToShortDateString()
LblUsuarioCaptura.Text = UsuarioActual.Usuario
DdlProveedor.Attributes.Add("onclick", "CargaProveedores();")
'DdlFuncionarioEmpleado.Attributes.Add("onclick", "CargaFuncionariosEmpleados();")
TxtPrecio.Attributes.Add("onKeyUp ", "Recalcula();")
TxtCantidad.Attributes.Add("onKeyUp ", "Recalcula();")
TxtDescuentoModal.Attributes.Add("onKeyUp ", "Recalcula();")
TxtOtrosGastos.Attributes.Add("onKeyUp ", "Recalcula();")
'ImgAmort.Attributes.Add("onclick", "javascript:$('#DivDescP').show(1000); PosicionaObjeto(this.id,'DivDescP');") ' $get('LblTitulo1').style.display = 'none'; $get('LblTituloTipo1').style.display = 'none'; $get('LblTituloTipo2').style.display = ''; $get('LblPrecio1').style.display = 'none'; $get('LblTotalPS1').style.display = 'none'; $get('LblSubTotal1').style.display = 'none'; $get('LblAmort').style.display = ''; $get('BtnAplicarDescP').style.display = 'none'; $get('BtnAplicarDescG').style.display = ''; $get('TrMotivoDescuento').style.display = 'none';")
'If um.GetUnidadesMedida() Then
' GlobalDTUnidadesMedida = um.DtResultados
'End If
'um.Dispose()
'CargaEstatus()
CargaTiposAF()
CargaProyectoAsignado()
CargaClasificaciones()
CargaPS(-1)
CargaProyecto()
CreaDTCompras()
CargaMonedas()
CargarAlmacen()
'CreaDtAF()
'TabOC.Visible = False
'BORRAR OC
'Valores para Vinculacion OC
'If UsuarioActual.Empresa.MetodoOC = 1 Then GvOC2.Columns(2).Visible = False : tdSurtirOC.Visible = False Else GvOC2.Columns(0).Visible = False : tdFolioOC.Visible = False
CveAlmacenConsignacion = -1
CveConsignacion = -1
OCVinculada = False
TipoCambioOC = -1
EstatusAlmacen = -1
CreaDtDetalle()
CargarUMAlias()
End Sub
#End Region
#Region " ALGO DE AF QUE NUNCA SE USABA "
'Protected Sub GVAF_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVAF.RowCreated
' If e.Row.RowType = DataControlRowType.DataRow AndAlso (e.Row.RowState = DataControlRowState.Alternate OrElse e.Row.RowState = DataControlRowState.Normal) Then
' e.Row.FCDropDownList("DdlTipoActivoFijo").DataSource = TmpDTTiposAF
' e.Row.FCDropDownList("DdlTipoActivoFijo").DataBind()
' e.Row.FCDropDownList("DdlSubTipoActivoFijo").DataSource = Nothing
' e.Row.FCDropDownList("DdlSubTipoActivoFijo").DataBind()
' e.Row.FCDropDownList("DdlSubTipoActivoFijo").Items.Insert(0, New ListItem("Seleccione", "-1"))
' e.Row.FCDropDownList("DdlAF").DataSource = Nothing
' e.Row.FCDropDownList("DdlAF").DataBind()
' e.Row.FCDropDownList("DdlAF").Items.Insert(0, New ListItem("Seleccione", "-1"))
' End If
'End Sub
'Protected Sub GVAF_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVAF.RowDataBound
' If e.Row.RowType = DataControlRowType.DataRow Then
' If e.Row.RowIndex = 0 Then
' e.Row.Cells(0).Width = Unit.Pixel(20)
' e.Row.Cells(1).Width = Unit.Pixel(140)
' e.Row.Cells(2).Width = Unit.Pixel(250)
' End If
' e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Right
' e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Left
' e.Row.Cells(2).HorizontalAlign = HorizontalAlign.Left
' End If
'End Sub
'Protected Sub DdlTipoActivoFijo_SelectedIndexChanged(sender As Object, e As System.EventArgs)
' Dim Array() As String = Nothing
' Dim DdlGVSubTipoAF As DropDownList = Nothing
' Array = DirectCast(sender, DropDownList).ClientID.Split("_"c)
' If Array.Length > 0 Then
' DdlGVSubTipoAF = DirectCast(GVAF.Rows(Array(3).ToEntero).Controls(4).Controls(1), DropDownList)
' End If
' If DdlGVSubTipoAF IsNot Nothing Then CargaSubTipoAF(DirectCast(sender, DropDownList), DdlGVSubTipoAF)
'End Sub
'Protected Sub GvOCC2_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvOCC2.RowDataBound
' If e.Row.RowType = DataControlRowType.DataRow Then
' e.Row.Cells(0).Text = (e.Row.RowIndex + 1).ToString
' End If
'End Sub
'Protected Sub chkFuncionariosEmpleados_CheckedChanged(sender As Object, e As EventArgs) Handles chkFuncionariosEmpleados.CheckedChanged
' PnlPagoContado.Visible = Not chkFuncionariosEmpleados.Checked
' PnlFuncionarioEmpleado.Visible = chkFuncionariosEmpleados.Checked
' UPCondicionesPago.Update()
'End Sub
Protected Sub BtnOCAceptar_Click(sender As Object, e As EventArgs) Handles BtnOCAceptar.Click
'carga la OC
Dim CveOC As Integer = -1
For Each gvr As GridViewRow In GvOC.Rows
If gvr.FCCheckBox("Chk").Checked Then
CveOC = gvr.DataKey("CveOrdenCompra").ToEntero
Exit For
End If
Next
Dim dt As DataTable = Nothing
If CveOC > 0 Then
Dim OC As New ClsOC
If OC.GetOC(CveOC, UsuarioActual.CveEmpresa) Then
TxtOC.Text = OC.Folio.ToString
'RegistraScript(String.Format("$get('TxtOC').value = '{0}';tb_remove;", OC.Folio))
RegistraScript("tb_remove();")
If OC.GetOrdenesDetalle(CveOC) Then
dt = OC.DtResultados
End If
End If
OC.Dispose()
End If
'GvOCC.DataSource = TmpDT
'GvOCC.DataBind()
'GvOCC2.DataSource = dt
'GvOCC2.DataBind()
'UpnAF.Update()
End Sub
#End Region
#Region "Estimaciones"
'Private Sub CargaDatosEstimaciones(pCveProveedor As Integer)
' Dim Con As New ClsContratos
' If Con.GetEstimaciones(pCveProveedor, -1, -1, -1, -1, 0, UsuarioActual.CveEmpresa) Then
' GVEst.DataSource = Con.DtResultados
' GVEst.DataBind()
' End If
' UPEstimaciones.Update()
' Con.Dispose()
'End Sub
'Protected Sub GVEst_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVEst.RowDataBound
' If e.Row.RowType = DataControlRowType.DataRow Then
' If e.Row.RowIndex = 0 Then
' e.Row.Cells(0).Width = Unit.Pixel(30)
' e.Row.Cells(1).Width = Unit.Pixel(30) 'Seccion
' e.Row.Cells(2).Width = Unit.Pixel(300) 'SubSeccion
' e.Row.Cells(3).Width = Unit.Pixel(100) 'Cantidad
' End If
' If e.Row.DBCampo("RazonSocial") = "" Then
' e.Row.CssClass = "Totales" : e.Row.Height = 25
' ElseIf e.Row.DBCampo("Contrato") = "" Then
' e.Row.CssClass = "SubTotales2" : e.Row.Height = 25
' ElseIf e.Row.DBCampo("Seccion") = "" Then
' e.Row.CssClass = "SubTotales" : e.Row.Height = 25
' ElseIf e.Row.DBCampo("Clasificacion") = "" Then
' e.Row.CssClass = "SubTotales3" : e.Row.Height = 25
' End If
' End If
'End Sub
#End Region
#Region " ALMACEN "
Private Sub CargaGvInv()
'SI ES CONSIGNACION NO LIMITA POR TIPO PS - PARA GLUYAS
If ChkConsignacion.Checked Then
DtInv = TmpDT.Copy
Else
DtInv = TmpDT.FiltraParametros(String.Format("CveTipoPS = 2")).Copy
End If
GvInv.DataSource = DtInv
GvInv.DataBind()
'If (GvInv.Rows.Count > 0) Then
' GvInv.UseAccessibleHeader = True
' GvInv.HeaderRow.TableSection = TableRowSection.TableHeader
' RegistraScript("OrdenarGVInv();")
'End If
InicializaCargaEvidenciaAlmacen()
'CARGA VALORES YA SELECCIONADOS DE CONSIGNACION
If ChkConsignacion.Checked Then
End If
UpINV.Update()
End Sub
Private Sub CargaFletesAgregados()
CreaDTServicios()
BtnFiltrar_Click(Nothing, Nothing)
End Sub
Protected Sub GVINV_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvInv.RowEditing
CargaGvInv()
End Sub
Protected Sub GVINV_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvInv.RowCancelingEdit
CargaGvInv()
End Sub
Protected Sub GVINV_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvInv.RowUpdating
Dim Cantidad As Double = DirectCast(GvInv.Rows(e.RowIndex).FindControl("txtECantidad"), TextBox).Text.ToDouble
Dim CveUnidadMedida As Integer = DirectCast(GvInv.Rows(e.RowIndex).FindControl("ddlEUnidad"), DropDownList).SelectedValue.ToString.ToEntero
DtInv.Rows.Item(e.RowIndex)("Cantidad") = Cantidad
DtInv.Rows.Item(e.RowIndex)("CveUM") = CveUnidadMedida
CargaGvInv()
End Sub
Protected Sub GVINV_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvInv.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
'SI USA SERIE-LOTE INVENTARIO
If e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then
e.Row.FCButton("BtnSerieLote").Visible = True
e.Row.FCButton("BtnSerieLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("Cantidad"))
e.Row.FCTextBox("TbCantidad").Enabled = False
e.Row.FCCheckBox("cbInv").Enabled = False
Dim Contador = DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", e.Row.DataKey("CvePS"))).Rows.Count
e.Row.FCTextBox("TbCantidad").Text = Contador.ToString
'e.Row.FCTextBox("TbCantidadF").Text = "0"
Else
e.Row.FCButton("BtnSerieLote").Visible = False
e.Row.FCTextBox("TbCantidad").Enabled = True
e.Row.FCTextBox("TbCantidad").Attributes.Add("onblur", String.Format("ValidarCantidad(this,{0})", e.Row.DBCampo("Cantidad")))
End If
'SIEMPRE ENABLED FALSE
e.Row.FCCheckBox("cbInv").Enabled = False
'si ya hay cargada una compra
If CveCompra > 0 AndAlso CveMovimientoAlmacen > 0 Then
If e.Row.DBCampo("AlmacenRegistrado").ToString = "1" Then
e.Row.FCCheckBox("cbInv").Checked = True
End If
e.Row.FCCheckBox("cbInv").Enabled = False
End If
'CONSIGNACIONES
If ChkConsignacion.Checked Then
e.Row.FCTextBox("TbCantidad").Enabled = False
e.Row.FCCheckBox("cbInv").Enabled = False
If Not OCVinculada Then
e.Row.Cells(3).Text = e.Row.DBCampo("PSCodigo").ToString
End If
Else
If e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then
e.Row.FCTextBox("TbCantidad").Enabled = False
Else
e.Row.FCTextBox("TbCantidad").Enabled = True
End If
e.Row.FCCheckBox("cbInv").Enabled = False
End If
If UsuarioActual.Empresa.UsaAC Then
e.Row.FCCheckBox("cbInv").Enabled = False
End If
e.Row.FCDropDownList("ddlEAlmacen").DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (1,2,7,14,19)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
e.Row.FCDropDownList("ddlEAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1"))
e.Row.FCDropDownList("ddlEAlmacen").DataBind()
'e.Row.FCDropDownList("ddlEAlmacen").SelectedValue = If(e.Row.DBCampo("CveAlmacen").ToEntero <= 0, "-1", e.Row.DBCampo("CveAlmacen"))
If UsuarioActual.Empresa.UsaAC Then e.Row.FCDropDownList("ddlEAlmacen").Enabled = False
If Not e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then
e.Row.FCTextBox("TbCantidad").Attributes.Add("onblur", String.Format("ValidarCantidad(this,{0})", If(e.Row.DBCampo("CantidadF").ToString.ToDecimal > e.Row.DBCampo("Cantidad").ToString.ToDecimal, e.Row.DBCampo("Cantidad"), e.Row.DBCampo("CantidadF"))))
e.Row.FCTextBox("TbCantidad").Text = If(e.Row.DBCampo("CantidadF").ToString.ToDecimal > e.Row.DBCampo("Cantidad").ToString.ToDecimal, e.Row.DBCampo("Cantidad"), e.Row.DBCampo("CantidadF"))
End If
'e.Row.FCImageButton("btnImgDestino").Attributes.Add("onclick", "javascript:$('#DivAlmacen').show(500); PosicionaObjeto(this.id,'DivAlmacen'); CargarValores('" & e.Row.RowIndex & "','" & e.Row.DBCampo("Cantidad") & "','" & e.Row.DBCampo("PS").Replace("'", "\'") & "'); ")
' e.Row.FCImageButton("btnImgDestino").ID = e.Row.FCImageButton("btnImgDestino").ID.ToString + e.Row.RowIndex.ToString
'e.Row.Cells(6).ToolTip = "Enviar a otro Almacén."
If e.Row.DBCampo("Consec").ToEntero = 0 Then
e.Row.BackColor = Drawing.Color.PaleGreen
End If
If UsuarioActual.CveEmpresa = 66 Then
e.Row.FCDropDownList("DdlRecibirInv").Items.RemoveAt(1)
End If
'If isAlmacenistaGluyas() Then
' Dim dt As DataTable = Nothing
' dt = GlobalDTProductosServicios(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS=2", "PS")
' e.Row.FCDropDownList("Ddlnewps").DataSource = dt 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
' e.Row.FCDropDownList("Ddlnewps").DataBind()
' e.Row.FCDropDownList("Ddlnewps").Items.Insert(0, New ListItem("Seleccione", "-1"))
' dt.Dispose()
'End If
'Consignaciones
If CveConsignacion > 0 Then
''CARGA ALMACEN CONSIGNACION
e.Row.FCDropDownList("ddlAlmacenConsignacion").DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 4)
e.Row.FCDropDownList("ddlAlmacenConsignacion").DataBind()
If e.Row.DBCampo("CveAlmacenConsignacion").ToEntero > 0 Then
e.Row.FCDropDownList("ddlAlmacenConsignacion").SelectedValueExist(e.Row.DBCampo("CveAlmacenConsignacion"))
End If
''CARGA CONSIGNACIONES
e.Row.FCDropDownList("DdlVinculaConsignacion").DataSource = DtConsignaciones.FiltraParametros(String.Format("CveAlmacenSalida = {0} OR {0} = '-1'", e.Row.FCDropDownList("ddlAlmacenConsignacion").SelectedValue))
e.Row.FCDropDownList("DdlVinculaConsignacion").DataBind()
e.Row.FCDropDownList("DdlVinculaConsignacion").Items.Insert(0, New ListItem("Seleccione", "-1"))
If e.Row.DBCampo("NoConsignacion").ToEntero > 0 Then
e.Row.FCDropDownList("DdlVinculaConsignacion").SelectedValueExist(e.Row.DBCampo("NoConsignacion"))
e.Row.FCHiddenField("HdnNoConsignacion").Value = e.Row.DBCampo("NoConsignacion")
End If
If e.Row.DBCampo("CveConsignacion").ToEntero > 0 Then
e.Row.FCHiddenField("HdnCveConsignacion").Value = e.Row.DBCampo("CveConsignacion")
e.Row.FCHiddenField("HdnPS").Value = e.Row.DBCampo("HdnPS")
e.Row.FCHiddenField("HdnCvePS").Value = e.Row.DBCampo("HdnCvePS")
e.Row.FCHiddenField("HdnClasificacion").Value = e.Row.DBCampo("HdnClasificacion")
e.Row.FCHiddenField("HdnCveClasificacion").Value = e.Row.DBCampo("HdnCveClasificacion")
e.Row.FCHiddenField("HdnCveAlmacen").Value = e.Row.DBCampo("HdnCveAlmacen")
End If
e.Row.FCTextBox("TxtDividir").Visible = True
Else
e.Row.FCTextBox("TxtDividir").Visible = False
End If
If Not UsuarioActual.Empresa.UsaAC Then
e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("FormatoMoneda(this);LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("Cantidad"), e.Row.FCButton("BtnDividirCompra").ClientID))
e.Row.FCTextBox("TxtDividir").Text = ""
If e.Row.DBCampo("Cantidad").ToDouble > 0.02 Then
e.Row.FCButton("BtnDividirCompra").CommandArgument = e.Row.RowIndex.ToString
Else
e.Row.FCButton("BtnDividirCompra").Visible = False
e.Row.FCTextBox("TxtDividir").Visible = False
End If
End If
End If
'HEADER GvInv
If e.Row.RowType = DataControlRowType.Header Then
Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2,7,14,19)"
If UsuarioActual.CveUsuario.Contiene(1397, 1517, 1565) Then ' iliana, horacio, marco, RMF. 2017.03.13
StrAlmacenes = "CveTipoAlmacen IN (1,2,7,14,12,19)"
End If
e.Row.FCDropDownList("ddlAlmacen").DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros(StrAlmacenes) 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
e.Row.FCDropDownList("ddlAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1"))
e.Row.FCDropDownList("ddlAlmacen").DataBind()
'si ya hay cargada una compra
If CveCompra > 0 AndAlso CveMovimientoAlmacen > 0 Then
e.Row.FCCheckBox("cbAll").Enabled = False
End If
''CARGA ALMACEN CONSIGNACION
e.Row.FCDropDownList("ddlAlmacenConsignacionGeneral").DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 4)
e.Row.FCDropDownList("ddlAlmacenConsignacionGeneral").DataBind()
End If
End Sub
Protected Sub ddlAlmacen_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Ddl As DropDownList = CType(sender, DropDownList)
For i As Integer = 0 To GvInv.Rows.Count - 1
GvInv.Rows(i).FCDropDownList("ddlEAlmacen").SelectedValue = Ddl.SelectedValue
Next
InicializaCargaEvidenciaAlmacen()
End Sub
'Protected Sub btnAgregarEq_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
' Dim eq As New ClsProductosServicios
' Dim Unidad As String = TmpDT.Rows.Item(HdnEq.Value.ToEntero)("UM").ToString
' Dim CvePS As Integer = TmpDT.Rows.Item(HdnEq.Value.ToEntero)("CvePS").ToString.ToEntero
' Dim CveUM As Integer = TmpDT.Rows.Item(HdnEq.Value.ToEntero)("CveUM").ToString.ToEntero
' Dim PU As Double = TmpDT.Rows.Item(HdnEq.Value.ToEntero)("PU").ToString.ToDouble
' Dim tCve As Integer = 0
' Dim ErrorUM As Boolean = False
' If UsuarioActual.Empresa.UsaInventarios And CveUM = 0 Then
' Dim UM As New ClsUnidadesMedida
' tCve = UM.AddUnidadMedida(TmpDT.Rows.Item(HdnEq.Value.ToEntero)("UM").ToString, TmpDT.Rows.Item(HdnEq.Value.ToEntero)("UM").ToString, "", "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1)
' If tCve > 0 Then
' TmpDT.Rows.Item(HdnEq.Value.ToEntero)("CveUM") = tCve
' Else
' ErrorUM = True
' End If
' End If
' If Not ErrorUM Then
' If eq.AddPSEquivalencias(CvePS, CveUM, txtCantidadEq.Text.ToDecimal, False, PU, UsuarioActual.CveUsuario) Then
' TmpDT.Rows.Item(HdnEq.Value.ToEntero)("CveEq") = 1
' End If
' End If
' GvPS.DataSource = TmpDT
' GvPS.DataBind()
' eq.Dispose()
' txtCantidadEq.Text = ""
'End Sub
'Protected Sub Enviar_Click(sender As Object, e As ImageClickEventArgs) Handles ImgAdd.Click
' If TbCantidadAlm.Text.ToDouble < DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("Cantidad").ToString.ToDouble And TbCantidadAlm.Text.ToDouble > 0 Then
' DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("Cantidad") = DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("Cantidad").ToString.ToDouble - TbCantidadAlm.Text.ToDouble
' AddDTEnvio(TbCantidadAlm.Text.ToDouble,
' DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("UM").ToString,
' DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CveUM").ToString.ToEntero,
' DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CvePS").ToString().ToEntero,
' DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("PS").ToString,
' DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("PU").ToString.ToDouble,
' ddlAlmacenAdd.SelectedValue.ToEntero, DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CveEq").ToString.ToEntero)
' Else
' Alert("El campo cantidad es necesario que sea mayor que 0 y menor al registro seleccionado.")
' End If
' TbCantidadAlm.Text = ""
' ddlAlmacenAdd.SelectedIndex = 0
' UpINV.Update()
' ' Alert(TmpDT.Rows.Count.ToString)
'End Sub
Protected Sub cbAll_CheckedChanged(sender As Object, e As EventArgs)
For i As Integer = 0 To GvInv.Rows.Count - 1
GvInv.Rows(i).FCCheckBox("cbInv").Checked = GvInv.HeaderRow.FCCheckBox("cbAll").Checked
Next
CalculaTotalPorDevengar()
End Sub
Private Sub InicializaCargaEvidenciaAlmacen()
TableAlmacenEvidencia.Visible = False
If UsuarioActual.CveEmpresa = 13 Then
If GvInv.Rows.Count > 0 AndAlso GvInv.HeaderRow().FCDropDownList("ddlAlmacen").SelectedValue.ToEntero > 0 Then
Dim DrAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", GvInv.HeaderRow().FCDropDownList("ddlAlmacen").SelectedValue.ToEntero))
If DrAlmacen("CveTipoAlmacen").ToString = "7" Then
TableAlmacenEvidencia.Visible = True
End If
End If
End If
UpAlmacenEvidencia.Update()
End Sub
#End Region
#Region "PESTAÑA INFORMACION GENERAL DE BANCO IE"
Private Sub CargaTipoTransaccion()
DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo = 'Egs'")
DdlTipoTransaccion.DataBind()
DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1"))
DdlTipoTransaccionCaja.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo = 'Egs'")
DdlTipoTransaccionCaja.DataBind()
DdlTipoTransaccionCaja.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1"))
End Sub
Private Sub CargaCuentas()
DdlCuenta.Items.Clear()
DdlCuenta.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltraParametros(String.Format("CveMoneda = {0} AND CveTipoCuenta <> 1", DdlMoneda.SelectedValue))
DdlCuenta.DataBind()
DdlCuenta.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlCuentaCaja.Items.Clear()
DdlCuentaCaja.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltraParametros(String.Format("CveMoneda = {0} AND CveTipoCuenta = 1", DdlMoneda.SelectedValue))
DdlCuentaCaja.DataBind()
DdlCuentaCaja.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
#End Region
#Region "FINANCIAMIENTO - AC"
'Private Sub CreaDtAC()
' DtAC = New DataTable
' DtAC.Columns.Add("IdCuenta", GetType(String))
' DtAC.Columns.Add("Cuenta", GetType(String))
' DtAC.Columns.Add("Saldo", GetType(String))
'End Sub
'Protected Sub CargaGvAc(Optional datos As DataTable = Nothing)
' If UsuarioActual.Empresa.UsaAC Then
' GvAC.DataBind()
' GvAC.DataSource = If(datos IsNot Nothing, datos, DtAC)
' GvAC.DataBind()
' Dim Total As Double = GvAC.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("PorDevengar").ToDouble)
' Lbtotalsaldo.Text = Total.ToString.FormatoNumero
' UPPM.Update()
' PnlAC.Visible = True
' End If
'End Sub
'Protected Sub CargaAC()
' Dim Cont As New ClsContPAQi(UsuarioActual.Empresa)
' If Cont.GetACSaldos(UsuarioActual.Empresa.EjercicioActual, 2) Then
' DtAC = Cont.DtResultados.Copy.FiltraParametros("PorDevengar > 0")
' Else
' Alert("Ocurrio un error al cargar los Presupuestos. Por favor vuelva a cargar la pagina")
' End If
' Cont.Dispose()
'End Sub
'Protected Sub GvAC_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvAC.RowDataBound
' If e.Row.RowType = DataControlRowType.DataRow Then
' e.Row.FCTextBox("TxtImporte").Attributes.Add("onkeyup", String.Format("ValidaImporte(this,{0});", e.Row.DBCampo("PorDevengar")))
' End If
'End Sub
#End Region
#Region "TAB - PERSONAL"
Private Sub CargaGvPersonal()
GvPersonal.DataSource = TmpDT
GvPersonal.DataBind()
UpGvPersonal.Update()
End Sub
Protected Sub DdlProyectoPersonal_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, DropDownList)).NamingContainer, GridViewRow)
Dim CveProyecto = If(gvRow.FCDropDownList("DdlProyectoPersonal").SelectedValue.ToEntero > 0, gvRow.FCDropDownList("DdlProyectoPersonal").SelectedValue.ToEntero, -1)
gvRow.FCDropDownList("DdlSubProyectoPersonal").Items.Clear()
If CveProyecto > 0 Or UsuarioActual.Empresa.Tipo_CentroCosto.Contiene(1, 2) Then
gvRow.FCDropDownList("DdlSubProyectoPersonal").DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, CveProyecto, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(CveProyecto, -1, UsuarioActual.CveEmpresa, 1))
End If
gvRow.FCDropDownList("DdlSubProyectoPersonal").DataBind()
gvRow.FCDropDownList("DdlSubProyectoPersonal").Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Protected Sub DdlSubProyectoPersonal_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, DropDownList)).NamingContainer, GridViewRow)
Dim CveProyecto = If(gvRow.FCDropDownList("DdlProyectoPersonal").SelectedValue.ToEntero > 0, gvRow.FCDropDownList("DdlProyectoPersonal").SelectedValue.ToEntero, -1)
Dim CveSubProyecto = If(gvRow.FCDropDownList("DdlSubProyectoPersonal").SelectedValue.ToEntero > 0, gvRow.FCDropDownList("DdlSubProyectoPersonal").SelectedValue.ToEntero, -1)
Dim dr1 As DataRow = TmpDT.Rows(gvRow.RowIndex)
dr1("CveProyecto") = CveProyecto
dr1("CveSubProyecto") = CveSubProyecto
dr1("Proyecto") = If(CveProyecto > 0, gvRow.FCDropDownList("DdlProyectoPersonal").SelectedItem.Text, "")
dr1("SubProyecto") = If(CveSubProyecto > 0, gvRow.FCDropDownList("DdlSubProyectoPersonal").SelectedItem.Text, "")
TmpDT.AcceptChanges()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
End Sub
Private Sub DdlPersonalHeader_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPersonalHeader.SelectedIndexChanged
For Each Gvr As GridViewRow In GvPersonal.Rows
Gvr.FCDropDownList("DdlPersonalGv").SelectedValue = DdlPersonalHeader.SelectedValue
Next
UpGvPersonal.Update()
End Sub
Private Sub CargaDdlPersonal()
'DdlPersonalGv.DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa)
'DdlPersonalGv.DataBind()
DdlPersonalHeader.DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa)
DdlPersonalHeader.DataBind()
UpGvPersonal.Update()
End Sub
Private Sub GvPersonal_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvPersonal.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.FCDropDownList("DdlPersonalGv").DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa)
e.Row.FCDropDownList("DdlPersonalGv").DataBind()
If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then
e.Row.FCDropDownList("DdlSubProyectoPersonal").DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1))
e.Row.FCDropDownList("DdlSubProyectoPersonal").Items.Insert(0, New ListItem("Seleccione", "-1"))
e.Row.FCDropDownList("DdlSubProyectoPersonal").DataBind()
e.Row.FCDropDownList("DdlProyectoPersonal").Visible = False
Else
e.Row.FCDropDownList("DdlProyectoPersonal").DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1).FiltraParametros("", "", {"CveProyecto", "Proyecto"}), GlobalDTProyectos(UsuarioActual.CveEmpresa, -1).FiltraParametros("", "", {"CveProyecto", "Proyecto"}))
e.Row.FCDropDownList("DdlProyectoPersonal").Items.Insert(0, New ListItem("Seleccione", "-1"))
e.Row.FCDropDownList("DdlProyectoPersonal").DataBind()
e.Row.FCDropDownList("DdlProyectoPersonal").SelectedValueExist(e.Row.DBCampo("CveProyecto"))
If e.Row.DBCampo("CveProyecto").ToEntero > 0 Then
e.Row.FCDropDownList("DdlSubProyectoPersonal").DataSource =
If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110),
GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, e.Row.DBCampo("CveProyecto").ToEntero, UsuarioActual.CveEmpresa, -1, 1),
GlobalDTSubProyectos(e.Row.DBCampo("CveProyecto").ToEntero, -1, UsuarioActual.CveEmpresa, 1))
End If
e.Row.FCDropDownList("DdlSubProyectoPersonal").Items.Insert(0, New ListItem("Seleccione", "-1"))
e.Row.FCDropDownList("DdlSubProyectoPersonal").DataBind()
End If
e.Row.FCDropDownList("DdlSubProyectoPersonal").SelectedValueExist(e.Row.DBCampo("CveSubProyecto"))
If CveCompra > 0 Then
If e.Row.DBCampo("CvePersonal").ToEntero <> -1 And e.Row.DBCampo("CvePersonal") <> Nothing Then
e.Row.FCDropDownList("DdlPersonalGv").SelectedValue = e.Row.DBCampo("CvePersonal")
End If
If e.Row.DBCampo("Referencia").ToString <> "" And e.Row.DBCampo("Referencia") <> Nothing Then
e.Row.FCTextBox("TxtReferencia").Text = e.Row.DBCampo("Referencia")
End If
e.Row.FCTextBox("TxtDividir").Enabled = False
End If
e.Row.FCLinkButton("BtnDividirPersonal").Attributes.Add("onclick", String.Format("DividirPersonal('{0}');", e.Row.FCTextBox("TxtDividir").ClientID))
e.Row.FCLinkButton("BtnDividirPersonal").CommandArgument = e.Row.RowIndex.ToString
e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("Cantidad"), e.Row.FCLinkButton("BtnDividirPersonal").ClientID))
End If
End Sub
Protected Sub DividirPersonal(sender As Object, e As EventArgs)
Dim index2 As Integer = 0
For Each Row As DataRow In TmpDT.Rows
If GvPersonal.Rows(index2).FCTextBox("TxtReferencia").Text <> "" Then
Row("Referencia") = GvPersonal.Rows(index2).FCTextBox("TxtReferencia").Text
End If
If GvPersonal.Rows(index2).FCDropDownList("DdlPersonalGv").SelectedValue <> "-1" Then
Row("CvePersonal") = GvPersonal.Rows(index2).FCDropDownList("DdlPersonalGv").SelectedValue
End If
index2 += 1
Next
'index2 = 0
'For Each Row As DataRow In TmpDT.Rows
' If GvAFCompras.Rows(index2).FCHiddenField("HdnCveAF").Value.ToEntero > 0 Then
' Row("CveActivoFijo") = GvAFCompras.Rows(index2).FCHiddenField("HdnCveAF").Value.ToEntero
' Row("CodAF") = GvAFCompras.Rows(index2).FCHiddenField("HdnCodAF").Value.ToString
' Row("TipoAF") = 1
' End If
' index2 += 1
'Next
'Dim Index As Integer = CType(sender, LinkButton).CommandArgument.ToString.ToEntero
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
Dim Index As Integer = gvRow.RowIndex
Dim Cantidad As String = HdnCantidadPersonal.Value
Dim dr1 As DataRow = TmpDT.Rows(Index)
Dim dr As DataRow = TmpDT.NewRow
dr.ItemArray = dr1.ItemArray
Dim IVA = dr1("IVA").ToString.ToDouble / (dr1("Cantidad").ToString.ToDouble * dr1("PU").ToString.ToDouble)
dr1("Cantidad") = (dr1("Cantidad").ToString.ToDouble - Cantidad.ToDouble)
dr1("IVA") = IVA * dr1("Cantidad").ToString.ToDouble * dr1("PU").ToString.ToDouble
dr1("Total") = dr1("PU").ToString.ToDouble * dr1("Cantidad").ToString.ToDouble
TmpDT.AcceptChanges()
dr("CvePersonal") = 0
dr("Referencia") = ""
dr("CveActivoFijo") = 0
dr("CodAF") = 0
dr("Cantidad") = Cantidad.ToDouble
dr("IVA") = IVA * dr("Cantidad").ToString.ToDouble * dr("PU").ToString.ToDouble
dr("Total") = dr("PU").ToString.ToDouble * Cantidad.ToDouble
TmpDT.Rows.InsertAt(dr, Index)
TmpDT.AcceptChanges()
index2 = 0
For Each Row As DataRow In TmpDT.Rows
Row("Consec") = index2
index2 += 1
Next
TmpDT.AcceptChanges()
CargaGvPersonal()
'TmpDT = DtAFInsumos.Copy
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
'Afecta GVINV y GvAF
CargaGvInv()
CargaGVsAF()
CalculaTotales(True)
index2 = 0
For Each Row As DataRow In TmpDT.Rows
If Row("Referencia").ToString <> "" Then
GvPersonal.Rows(index2).FCTextBox("TxtReferencia").Text = Row("Referencia").ToString
End If
If Row("CvePersonal").ToString <> "" Then
GvPersonal.Rows(index2).FCDropDownList("DdlPersonalGv").SelectedValue = Row("CvePersonal").ToString
End If
index2 += 1
Next
End Sub
#End Region
#Region "TAB - ACTIVOS FIJOS -AF"
Protected Sub CargarGvActivosFijos(sender As Object, e As EventArgs)
Tab.ActiveTabIndex = 3
If GvAFInsumos.Rows.Count > 0 Then
llenaDtsAF()
End If
CargaGVsAF()
End Sub
Protected Sub llenaDtsAF()
Dim index As Integer = 0
For Each Row As DataRow In TmpDT.Rows
If Row("TipoAF").ToString.ToEntero = 1 AndAlso GvAFInsumos.Rows(index).FCHiddenField("HdnCveAF").Value.ToEntero > 0 Then
Row("CveActivoFijo") = GvAFInsumos.Rows(index).FCHiddenField("HdnCveAF").Value.ToEntero
Row("CodAF") = If(GvAFInsumos.Rows(index).FCHiddenField("HdnCodAF").Value.ToString = "", "SN", GvAFInsumos.Rows(index).FCHiddenField("HdnCodAF").Value.ToString)
'Row("TipoAF") = 1
End If
index += 1
Next
index = 0
For Each Row As DataRow In TmpDT.Rows
If Row("TipoAF").ToString.ToEntero = 2 AndAlso GvAFCompras.Rows(index).FCHiddenField("HdnCveAF").Value.ToEntero > 0 Then
Row("CveActivoFijo") = GvAFCompras.Rows(index).FCHiddenField("HdnCveAF").Value.ToEntero
Row("CodAF") = If(GvAFCompras.Rows(index).FCHiddenField("HdnCodAF").Value.ToString = "", "SN", GvAFCompras.Rows(index).FCHiddenField("HdnCodAF").Value.ToString)
'Row("TipoAF") = 2
End If
index += 1
Next
End Sub
Private Sub CargaGVsAF()
GvAFInsumos.DataSource = TmpDT
GvAFInsumos.DataBind()
UPDatosAFInsumos.Update()
GvAFCompras.DataSource = TmpDT
GvAFCompras.DataBind()
UPDatosAFCompras.Update()
End Sub
Protected Sub GvAFCompras_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvAFCompras.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim SinValor = True
If e.Row.DBCampo("TipoAF").ToEntero = 2 Then
If e.Row.DBCampo("CveActivoFijo").ToEntero > 0 Then
e.Row.FCTextBox("LblCodigo").Text = e.Row.DBCampo("CodAF").ToString
e.Row.FCHiddenField("HdnCveAF").Value = e.Row.DBCampo("CveActivoFijo").ToString
e.Row.FCHiddenField("HdnCodAF").Value = e.Row.DBCampo("CodAF").ToString
SinValor = False
End If
End If
If SinValor Then
e.Row.FCTextBox("LblCodigo").Text = ""
e.Row.FCHiddenField("HdnCveAF").Value = "0"
e.Row.FCHiddenField("HdnCodAF").Value = "0"
End If
'e.Row.FCButton("BtnDividirInsumo").Attributes.Add("onclick", String.Format("DividirInsumo('{0}');", e.Row.FCTextBox("TxtDividir").ClientID))
'e.Row.FCButton("BtnDividirInsumo").CommandArgument = e.Row.RowIndex.ToString
e.Row.FCHiddenField("HdnIndex").Value = e.Row.RowIndex.ToString
e.Row.FCHyperLink("HLBuscarAF").Attributes.Add("onclick", String.Format("LimpiaAF(2, '{0}');", e.Row.FCHiddenField("HdnCveConcepto").Value))
e.Row.FCHyperLink("HLBuscarAF").NavigateUrl = String.Format("javascript:AbrirVentana('/AF/PopUpBuscarAF.aspx?L={0}&H1={1}&H2={2}',730,450,'N');", e.Row.FCTextBox("LblCodigo").ClientID, e.Row.FCHiddenField("HdnCveAF").ClientID, e.Row.FCHiddenField("HdnCodAF").ClientID)
'e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("Cantidad"), e.Row.FCButton("BtnDividirInsumo").ClientID))
e.Row.FCTextBox("LblCodigo").Attributes.Add("onkeyup", String.Format("LimpiaAF(2, '{0}'); EnterAFEdit(event,this,{1},{2},{3});", e.Row.FCHiddenField("HdnCveConcepto").Value, e.Row.FCHiddenField("HdnCveAF").ClientID, e.Row.FCHiddenField("HdnCodAF").ClientID, e.Row.RowIndex.ToString))
e.Row.FCTextBox("LblCodigo").Attributes.Add("onblur", String.Format("LimpiaAF(2, '{0}'); AFBlurEdit(this,{1},{2},{3});", e.Row.FCHiddenField("HdnCveConcepto").Value, e.Row.FCHiddenField("HdnCveAF").ClientID, e.Row.FCHiddenField("HdnCodAF").ClientID, e.Row.RowIndex.ToString))
End If
End Sub
Protected Sub GvAFInsumos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvAFInsumos.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim SinValor = True
If e.Row.DBCampo("TipoAF").ToEntero = 1 Then
If e.Row.DBCampo("CveActivoFijo").ToEntero > 0 Then
e.Row.FCTextBox("LblCodigo").Text = e.Row.DBCampo("CodAF").ToString
e.Row.FCLabel("LblValido").Attributes("display") = ""
e.Row.FCHiddenField("HdnCveAF").Value = e.Row.DBCampo("CveActivoFijo").ToString
e.Row.FCHiddenField("HdnCodAF").Value = e.Row.DBCampo("CodAF").ToString
SinValor = False
End If
End If
If SinValor Then
e.Row.FCTextBox("LblCodigo").Text = ""
e.Row.FCHiddenField("HdnCveAF").Value = "0"
e.Row.FCHiddenField("HdnCodAF").Value = "0"
e.Row.FCLabel("LblValido").Attributes("display") = "none"
End If
If e.Row.DBCampo("AFTipoMantenimiento").ToEntero > 0 Then
e.Row.FCDropDownList("DdlTipoMantemiento").SelectedValueExist(e.Row.DBCampo("AFTipoMantenimiento"))
End If
e.Row.FCButton("BtnDividirInsumo").Attributes.Add("onclick", String.Format("DividirInsumo('{0}');", e.Row.FCTextBox("TxtDividir").ClientID))
e.Row.FCButton("BtnDividirInsumo").CommandArgument = e.Row.RowIndex.ToString
e.Row.FCHiddenField("HdnIndex").Value = e.Row.RowIndex.ToString
e.Row.FCHyperLink("HLBuscarAF").Attributes.Add("onclick", String.Format("LimpiaAF(1, '{0}');", e.Row.FCHiddenField("HdnCveConcepto").Value))
e.Row.FCHyperLink("HLBuscarAF").NavigateUrl = String.Format("javascript:AbrirVentana('/AF/PopUpBuscarAF.aspx?L={0}&H1={1}&H2={2}',730,450,'N');", e.Row.FCTextBox("LblCodigo").ClientID, e.Row.FCHiddenField("HdnCveAF").ClientID, e.Row.FCHiddenField("HdnCodAF").ClientID)
e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("Cantidad"), e.Row.FCButton("BtnDividirInsumo").ClientID))
e.Row.FCTextBox("LblCodigo").Attributes.Add("onkeyup", String.Format("LimpiaAF(1, '{0}'); EnterAFEdit(event,this,{1},{2},{3});", e.Row.FCHiddenField("HdnCveConcepto").Value, e.Row.FCHiddenField("HdnCveAF").ClientID, e.Row.FCHiddenField("HdnCodAF").ClientID, e.Row.RowIndex.ToString))
e.Row.FCTextBox("LblCodigo").Attributes.Add("onblur", String.Format("LimpiaAF(1, '{0}'); AFBlurEdit(this,{1},{2},{3});", e.Row.FCHiddenField("HdnCveConcepto").Value, e.Row.FCHiddenField("HdnCveAF").ClientID, e.Row.FCHiddenField("HdnCodAF").ClientID, e.Row.RowIndex.ToString))
e.Row.FCTextBox("TxtAFMedida").Attributes.Add("onblur", String.Format("AFInsumosMedida(this,{0});", e.Row.RowIndex))
End If
End Sub
Protected Sub BtnLimpiaAF_Click(sender As Object, e As EventArgs)
LimpiaAF(HdnTipoAF.Value.ToEntero, HdnCveConceptoAF.Value)
End Sub
Protected Sub LimpiaAF(TipoCompra As Integer, CveConcepto As String)
llenaDtsAF()
For Each Row As DataRow In TmpDT.Rows
If Row("CveConcepto").ToString = CveConcepto Then
Row("TipoAF") = TipoCompra
End If
Next
TmpDT.AcceptChanges()
llenaDtsAF()
CargaGVsAF()
End Sub
Protected Sub DivirInsumo(sender As Object, e As EventArgs)
Dim index2 As Integer = 0
'LLena el AF vinculado para no perderlo
For Each Row As DataRow In TmpDT.Rows
If GvAFInsumos.Rows(index2).FCHiddenField("HdnCveAF").Value.ToEntero > 0 Then
Row("CveActivoFijo") = GvAFInsumos.Rows(index2).FCHiddenField("HdnCveAF").Value.ToEntero
Row("CodAF") = GvAFInsumos.Rows(index2).FCHiddenField("HdnCodAF").Value.ToString
Row("TipoAF") = 1
End If
index2 += 1
Next
index2 = 0
For Each Row As DataRow In TmpDT.Rows
If GvAFCompras.Rows(index2).FCHiddenField("HdnCveAF").Value.ToEntero > 0 Then
Row("CveActivoFijo") = GvAFCompras.Rows(index2).FCHiddenField("HdnCveAF").Value.ToEntero
Row("CodAF") = GvAFCompras.Rows(index2).FCHiddenField("HdnCodAF").Value.ToString
Row("TipoAF") = 1
End If
index2 += 1
Next
Dim Index As Integer = CType(sender, Button).CommandArgument.ToString.ToEntero
Dim Cantidad As String = HdnCantidadInsumo.Value
Dim dr1 As DataRow = TmpDT.Rows(Index)
Dim dr As DataRow = TmpDT.NewRow
dr.ItemArray = dr1.ItemArray
dr1("Cantidad") = (dr1("Cantidad").ToString.ToDouble - Cantidad.ToDouble)
dr1("Total") = dr1("PU").ToString.ToDouble * dr1("Cantidad").ToString.ToDouble
TmpDT.AcceptChanges()
dr("CveActivoFijo") = 0
dr("CodAF") = ""
dr("Cantidad") = Cantidad.ToDouble
dr("Total") = dr("PU").ToString.ToDouble * Cantidad.ToDouble
TmpDT.Rows.InsertAt(dr, Index + 1)
For Index = 0 To TmpDT.Rows.Count - 1
TmpDT.Rows(Index)("Consec") = Index + 1
Next
CargaGVsAF()
'TmpDT = DtAFInsumos.Copy
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
'Afecta GVINV
CargaGvInv()
CargaGvPersonal()
End Sub
Protected Sub BtnVinculaAFEdit_Click(sender As Object, e As EventArgs)
Dim ObjAF As New ClsAF
Dim Index As Integer = HdnIndexTmpDT.Value.ToEntero()
If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, HdnCodAFEdit.Value, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1, UsuarioActual.CveEmpresa) Then
If ObjAF.DtResultados.Rows.Count = 1 Then
'VERIFICAR QUE EL ACTIVO FIJO ESTE ACTIVO. que no este en baja, inactivo.
If HdnTipoAF.Value.ToEntero = 1 Then
GvAFInsumos.Rows(Index).FCHiddenField("HdnCveAF").Value = ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString
GvAFInsumos.Rows(Index).FCHiddenField("HdnCodAF").Value = ObjAF.DtResultados.Rows(0)("Codigo").ToString
RegistraScript(String.Format("MuestraCheckAF('{0}','');", GvAFInsumos.Rows(Index).FCLabel("LblValido").ClientID), "A2")
ElseIf HdnTipoAF.Value.ToEntero = 2 Then
GvAFCompras.Rows(Index).FCHiddenField("HdnCveAF").Value = ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString
GvAFCompras.Rows(Index).FCHiddenField("HdnCodAF").Value = ObjAF.DtResultados.Rows(0)("Codigo").ToString
RegistraScript(String.Format("MuestraCheckAF('{0}','');", GvAFCompras.Rows(Index).FCLabel("LblValido").ClientID), "A2")
End If
'COMENTADO IPP 15 JUNIO 2017
'RegistraScript(String.Format("EnterAFEditOK('{0}','{1}');", ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString, ObjAF.DtResultados.Rows(0)("Codigo").ToString))
LimpiaAF(HdnTipoAF.Value.ToEntero, HdnCveConceptoAF.Value)
Else
If HdnTipoAF.Value.ToEntero = 1 Then
GvAFInsumos.Rows(Index).FCHiddenField("HdnCveAF").Value = "-1"
GvAFInsumos.Rows(Index).FCHiddenField("HdnCodAF").Value = "-1"
RegistraScript(String.Format("MuestraCheckAF('{0}','none');", GvAFInsumos.Rows(Index).FCLabel("LblValido").ClientID), "A2")
ElseIf HdnTipoAF.Value.ToEntero = 2 Then
GvAFCompras.Rows(Index).FCHiddenField("HdnCveAF").Value = "-1"
GvAFCompras.Rows(Index).FCHiddenField("HdnCodAF").Value = "-1"
RegistraScript(String.Format("MuestraCheckAF('{0}','none');", GvAFCompras.Rows(Index).FCLabel("LblValido").ClientID), "A2")
End If
Alert("No se encontró un Activo Fijo con el código proporcionado.", TipoMensaje.MsgAdvertencia)
End If
End If
ObjAF.Dispose()
End Sub
Protected Sub DdlTipoMantemiento_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim dr = TmpDT.Rows(CType(CType(sender, DropDownList).NamingContainer, GridViewRow).RowIndex)
dr("AFTipoMantenimiento") = CType(CType(sender, DropDownList).NamingContainer, GridViewRow).FCDropDownList("DdlTipoMantemiento").SelectedValue.ToEntero
End Sub
Protected Sub BtnAFMedida_Click(sender As Object, e As EventArgs)
TmpDT(HdnIndexTmpDT.Value.ToEntero)("AFMedida") = HdnTxtAFMedida.Value
End Sub
#End Region
#Region "C O N T R A T O S"
'Protected Sub ImgBtnBuscarContrato_Click(sender As Object, e As ImageClickEventArgs) Handles ImgBtnBuscarContrato.Click
' If CveProveedor <= 0 Then
' Alert("Debe de Seleccionar un proveedor")
' Exit Sub
' End If
' RegistraScript(String.Format("AbrirVentana('/Contratos/PopUpBuscarContrato.aspx?V=VCCOMP',730,300,'N');"))
'End Sub
'Protected Sub CargaVContrato(sender As Object, e As EventArgs)
' CargaVContrato2(HdnVCveContrato.Value)
'End Sub
'Protected Sub CargaVContrato2(CveContrato As String)
' If TxtContrato.Text <> "" Then
' Dim ObjContratos As New ClsContratos
' Dim DTContratosTemp As DataTable = Nothing
' GvContratos1.DataSource = TmpDT
' GvContratos1.DataBind()
' UPGVContratos1.Update()
' Dim ArrayCveContratos As String() = HdnVCveContrato.Value.Split(New Char() {","c})
' For i As Integer = 1 To ArrayCveContratos.Count
' If ObjContratos.GetContratosDetalle(ArrayCveContratos(i - 1).ToEntero) Then
' If IsNothing(DTContratosTemp) Then
' DTContratosTemp = ObjContratos.DtResultados.Copy
' Else
' DTContratosTemp.Merge(ObjContratos.DtResultados)
' End If
' Else
' Alert("Ocurrio un ERROR al cargar el Contrato")
' DTContratosTemp.Rows.Clear()
' Exit For
' End If
' Next
' GvContratos2.DataSource = DTContratosTemp
' GvContratos2.DataBind()
' UPGVContratos2.Update()
' ObjContratos.Dispose()
' End If
'End Sub
#End Region
#Region "TAB ALMACEN - INVENTARIOS ISRAEL PIÑA - 5 FEBRERO 2015"
Protected Sub CalculaTotalPorDevengar()
Dim total = TxtTotal.Text.ToDouble
For Each Gvr As GridViewRow In GvInv.Rows
If Gvr.FCCheckBox("cbInv").Checked = True And Gvr.FCDropDownList("DdlRecibirInv").SelectedValue = "1" Then
total -= Math.Round(Gvr.FCTextBox("TbCantidad").Text.ToDouble * Gvr.DataKey("PU").ToDouble, 4)
End If
Next
'LbTotalPorDevengar.Text = total.ToString.FormatoNumero
'UPPM.Update()
End Sub
Protected Sub CambiaTotalDevengar(sender As Object, e As EventArgs)
CalculaTotalPorDevengar()
End Sub
#End Region
#Region " AJUSTA IMPORTES "
Private Sub AjustaImporteUltimoConcepto(ImporteAjuste As Decimal, Optional EsCarga As Boolean = False)
'Dim TempSubTotal = TxtSubTotal.Text.ToDouble
If TmpDT.Rows.Count > 0 Then ' si hay movimientos y si esta afectando al total, que se haga el ajuste
'Dim ImporteAjuste As Decimal = Total - (SubTotal2 + IVA - RetencionIVA - RetencionIVA - RetencionISR + IEPS + OtrosImpuestos)
Dim Indice As Integer = If(TmpDT.Rows(TmpDT.Rows.Count - 1)("CvePS").ToString = UsuarioActual.Empresa.Funcionalidad(112).ToString, TmpDT.Rows.Count - 2, TmpDT.Rows.Count - 1)
Dim tPU As Decimal
If TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal > 0 Then
tPU = ImporteAjuste / TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal
Else
tPU = 0
End If
TmpDT.Rows(Indice)("PU") = TmpDT.Rows(Indice)("PU").ToString.ToDouble + tPU
TmpDT.Rows(Indice)("Total") = TmpDT.Rows(Indice)("Total").ToString.ToDouble + ImporteAjuste
TmpDT.AcceptChanges()
End If
SubTotal = TmpDT.SUM("Total").ToString.ToDecimal
If Not EsCarga Then
Descuentos = TmpDT.SUM("Descuento").ToString.ToDecimal
End If
TxtSubTotal.Text = (SubTotal + Descuentos).FormatoNumero()
TxtSubTotal2.Text = SubTotal.FormatoNumero
TxtDescuento.Text = Descuentos.FormatoNumero()
SubTotalConceptos = SubTotal
GvPS.DataSource = TmpDT : GvPS.DataBind()
If TxtOtrosImpuestos.Text.ToDouble > 0 Then TxtOtrosImpuestos.Text = "" : TrOtrosImpuestos.Visible = False
'EN ESPERA DE ALGUN CASO QUE LO NECESITE - IPP 5 DICIEMBRE 2016
'TempSubTotal = TempSubTotal - SubTotal
'If TempSubTotal > 0 Then
' TxtTotal.Text = TempSubTotal.ToString.FormatoNumero
'End If
'GVAF.DataSource = TmpDT : GVAF.DataBind()
End Sub
Protected Sub ImgAjustePorcentaje_Click(sender As Object, e As ImageClickEventArgs) Handles ImgAjustePorcentaje.Click
'realizo el ajuste de los productos
AjustaConceptos()
For Each Row As GridViewRow In GvPS.Rows
If UsuarioActual.TienePermisoProceso(143) Then
Row.FCLinkButton("ImgE").Visible = True
Row.FCLinkButton("ImgD").Visible = True
End If
Next
End Sub
Private Sub AjustaConceptos(Optional AjusteForzoso As Boolean = False)
'SE COMENTO POR PORCENTAJE DE DESCUENTO 0.00 - IPP 3 ENERO 2017
'If TxtAjustePorcentaje.Text.ToDecimal <> 0 Or AjusteForzoso Then
'End If
If TxtAjustePorcentaje.Text.ToDecimal <> 0 Then
For Each Dr As DataRow In TmpDT.Rows
'Dr("PU") = Dr("PU").ToString.ToDecimal * ((100 - TxtAjustePorcentaje.Text.ToDecimal) / 100)
Dim TotalAnterior = Dr("Total").ToString.ToDecimal
Dr("Total") = Dr("Total").ToString.ToDecimal * ((100 - TxtAjustePorcentaje.Text.ToDecimal) / 100)
Dr("Descuento") = TotalAnterior - Dr("Total").ToString.ToDecimal
Next
'TxtDescuento.Text = Descuentos.ToString
End If
'verifico las sumas
If TxtSubTotal2.Text.ToDecimal <> TmpDT.SUM("Total") Then
Dim i As Integer = TmpDT.Rows.Count - 1
'verifico si el ultimo dato, es diferente de cero, sino tomo el anterior
If TmpDT.Rows(i)("Total").ToString.ToDecimal <= 0 AndAlso i - 1 >= 0 Then i = i - 1
'sino se hizo el ajuste, lo aplico al ultimo registro la diferencia
'para ajustar el PU, de la diferencia la divido entre la cantidad
TmpDT.Rows(i)("PU") = TmpDT.Rows(i)("PU").ToString.ToDecimal + ((TxtSubTotal2.Text.ToDecimal - TmpDT.SUM("Total")) / TmpDT.Rows(i)("Cantidad").ToString.ToDecimal)
TmpDT.Rows(i)("Total") = TmpDT.Rows(i)("Total").ToString.ToDecimal + TxtSubTotal2.Text.ToDecimal - TmpDT.SUM("Total")
End If
TxtSubTotal.Text = (TmpDT.SUM("Total") + TmpDT.SUM("Descuento")).FormatoNumero
TxtSubTotal2.Text = TmpDT.SUM("Total").FormatoNumero
SubTotalOriginal = TmpDT.SUM("Total") + TmpDT.SUM("Descuento")
SubTotal2Original = TmpDT.SUM("Total")
BtnGuardar.Enabled = True
UpFacturar.Update()
PnlAjusteProductos.Visible = False
'habilito la busqueda de oc
ImgBtnBuscarOC.Visible = True
TxtOC.Enabled = True
UpParametros.Update()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
End Sub
#End Region
#Region "DDL'S"
Protected Sub DdlCredito_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCredito.SelectedIndexChanged
CargaCreditosDetalle(DdlCredito.SelectedValue.ToEntero)
CargaCreditosDisponibles()
End Sub
Protected Sub DdlDeudor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlDeudor.SelectedIndexChanged
TxtContadoDeudor.Text = "0"
If DdlDeudor.SelectedValue.ToEntero > 0 Then
Dim Deudores As New ClsMovimientos
If RBLTipoDeudor.SelectedValue.ToEntero = 1 Then
If Deudores.GetDeudoresSaldosDetalle(DdlDeudor.SelectedValue.ToEntero, DdlMoneda.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
DtDeudoresDetalle = Deudores.DtResultados.FiltraParametros("CveProveedor > 0 AND Saldo > 0")
GvDeudores.DataSource = DtDeudoresDetalle
GvDeudores.DataBind()
End If
Else
If Deudores.GetDeudoresComisionesSaldosDetalle(DdlDeudor.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
DtDeudoresDetalle = Deudores.DtResultados.FiltraParametros("CveProveedor > 0 AND Saldo > 0")
GvDeudores.DataSource = DtDeudoresDetalle
GvDeudores.DataBind()
End If
End If
If CompraSaldo < TxtTotal.Text.ToDouble Then
RVContadoDeudor.MaximumValue = CompraSaldo.ToString
Else
RVContadoDeudor.MaximumValue = TxtTotal.Text
End If
UPDeudores.Update()
Deudores.Dispose()
TxtContadoDeudor.Attributes.Add("readonly", "readonly")
End If
End Sub
Protected Sub DdlAcreedor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAcreedor.SelectedIndexChanged
If DdlAcreedor.SelectedValue.ToEntero > 0 Then
Dim dr As DataRow
dr = DtAcreedores.FiltroPrimero(String.Format("CveProveedor = {0}", DdlAcreedor.SelectedValue))
'If EmpresaPrueba Then
' dr = DtAcreedores.FiltroPrimero(String.Format("CveProveedor = {0}", DdlAcreedor.SelectedValue))
'Else
' dr = DtAcreedores.FiltroPrimero(String.Format("CveProveedor = {0}", DdlDeudor.SelectedValue))
'End If
If dr IsNot Nothing Then
Dim tSaldo As Double = dr("Saldo").ToString.ToDouble
RVContadoAcreedor.MaximumValue = tSaldo.ToString
'si el saldo es mayor de la compra poner el valor de la compra sino el valor del saldo
TxtContadoAcreedor.Text = If(tSaldo > TxtTotal.Text.ToDouble, TxtTotal.Text, tSaldo.ToString).FormatoNumero
LblDetalle.Visible = True
DdlAcreedorDetalle.Visible = True
Dim ObjMov As New ClsMovimientos
Dim ObjProveedor As New ClsCompProveedores()
If ObjMov.GetAcreedoresSaldosDetalles(-1, CveMoneda, UsuarioActual.CveEmpresa) Then
DdlAcreedorDetalle.DataSource = ObjMov.DtResultados.FiltraParametros(String.Format("CveProveedor = {0}", DdlAcreedor.SelectedValue))
DdlAcreedorDetalle.DataBind()
DdlAcreedorDetalle.Items.Insert(0, New ListItem("Seleccione Acreedor", "-1"))
UpContado.Update()
End If
If ObjProveedor.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, DdlAcreedor.SelectedValue.ToEntero, "-1", "-1", "-1", "-1", "-1", "-1", "-1", 1, UsuarioActual.CveEmpresa) Then
ViewState("CtaProveedorAcreedores") = ObjProveedor.IdCtaContAcreedor
ViewState("CveCuentaProveedorAcreedores") = ObjProveedor.CveCuentaAcreedor
End If
ObjProveedor.Dispose()
ObjMov.Dispose()
End If
Else
TxtContadoAcreedor.Text = "0"
End If
End Sub
Protected Sub DdlPersonal_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPersonal.SelectedIndexChanged
ViewState("CvePersonal") = DdlPersonal.SelectedValue
End Sub
Protected Sub DdlCajaChica_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCajaChica.SelectedIndexChanged
ViewState("CveCajaChica") = DdlCajaChica.SelectedValue
End Sub
Protected Sub DdlTipoCredito_SelectedIndexChanged(sender As Object, e As EventArgs)
CargaCreditos()
Select Case DdlTipoCredito.SelectedValue.ToEntero
Case 1
DivCreditoMensualidad.Visible = False
Case 2
DivCreditoMensualidad.Visible = True
End Select
End Sub
Protected Sub DdlProveedor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProveedor.SelectedIndexChanged
ViewState("CveProveedor") = DdlProveedor.SelectedValue.ToEntero
HdnCveProveedor.Value = CveProveedor.ToString
CargaProveedor(HdnCveProveedor.Value.ToEntero, "-1", False)
If DdlPS.ddl.SelectedIndex > 0 Then
DdlPS_SelectedIndexChanged(sender, e)
DdlPS.Focus()
Else
TxtCantidad.Focus()
End If
If DdlProveedor.SelectedValue.ToEntero > 0 Then
ChkConsignacion.Enabled = True
Else
ChkConsignacion.Enabled = False
End If
If GlobalDTProveedorSucursales(DdlProveedor.SelectedValue.ToEntero).Rows.Count > 0 Then
RowProveedorSucursal.Visible = True
DdlProveedorSucursal.Items.Clear()
DdlProveedorSucursal.DataSource = GlobalDTProveedorSucursales(DdlProveedor.SelectedValue.ToEntero)
DdlProveedorSucursal.DataBind()
DdlProveedorSucursal.Items.Insert(0, New ListItem("Selecciona una Sucursal", "-1"))
DdlProveedorSucursal.Items.Insert(0, New ListItem("Matriz", "0"))
Else
DdlProveedorSucursal.Items.Clear()
DdlProveedorSucursal.Items.Insert(0, New ListItem("N/O", "-1"))
DdlProveedorSucursal.DataBind()
RowProveedorSucursal.Visible = False
End If
UpEstatus.Update()
UpTabs.Update()
'DdlProveedor.Attributes.Add("onclick", "CargaProveedores();")
End Sub
Protected Sub DdlCuenta_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCuenta.SelectedIndexChanged
Dim Folio As Long
Dim dr As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltroPrimero("CveCuenta = " & DdlCuenta.SelectedValue)
If dr IsNot Nothing Then
CveMoneda = dr("CveMoneda").ToString.ToEntero
IdCuentaBancaria = dr("IdCtaContable").ToString.ToEntero
CveCuentaBancaria = dr("IdCtaContableSIG").ToString.ToEntero
If dr("UsaTarjeta").ToString = "True" Then
CargaGridTarjetas()
Else
DivTarjeta.Visible = False
End If
End If
If UsuarioActual.Empresa.Funcionalidad(505) <> "1" Then
Dim Banco As New ClsBancos
Folio = Banco.GetNextFolio(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero)
Banco.Dispose()
TxtDocumentoFolio.Text = Folio.ToString
End If
End Sub
Protected Sub DdlCuentaCaja_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCuentaCaja.SelectedIndexChanged
Dim Folio As Long
Dim dr As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltroPrimero("CveCuenta = " & DdlCuentaCaja.SelectedValue)
If dr IsNot Nothing Then
CveMoneda = dr("CveMoneda").ToString.ToEntero
IdCuentaBancaria = dr("IdCtaContable").ToString.ToEntero
CveCuentaBancaria = dr("IdCtaContableSIG").ToString.ToEntero
End If
If UsuarioActual.Empresa.Funcionalidad(505) <> "1" Then
Dim Banco As New ClsBancos
Folio = Banco.GetNextFolio(DdlCuentaCaja.SelectedValue.ToEntero, DdlTipoTransaccionCaja.SelectedValue.ToEntero)
Banco.Dispose()
TxtDocumentoFolioCaja.Text = Folio.ToString
End If
End Sub
Protected Sub DdlFuncionarioEmpleado_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlFuncionarioEmpleado.SelectedIndexChanged
If DdlFuncionarioEmpleado.SelectedValue.ToEntero > 0 Then
Dim ObjMovtos As New ClsMovimientos
RowCheque.Visible = True
ObjMovtos.GetEgresosSinComprobarPersonalDetalle(DdlFuncionarioEmpleado.SelectedValue.ToEntero, UsuarioActual.CveEmpresa)
DtCheques = ObjMovtos.DtResultados.FiltraParametros("CveIE > 0", "FechaDocumento, FolioFecha")
'Limpia Ddl Cheques
DDlCheques.Items.Clear()
If DtCheques.Rows.Count > 0 Then
DDlCheques.DataSource = DtCheques
End If
ObjMovtos.Dispose()
DDlCheques.DataBind()
DDlCheques_SelectedIndexChanged(DDlCheques, EventArgs.Empty)
Else
RowCheque.Visible = False
lblSaldoFE.Text = "0.00"
End If
End Sub
Protected Sub DDlCheques_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DDlCheques.SelectedIndexChanged
Dim saldo As Double = DtCheques.Rows(DDlCheques.SelectedIndex)("Saldo").ToString.ToDecimal
TxtDocumentoImporteFE.Text = If(saldo < TxtTotal.Text.ToDouble, saldo.FormatoNumero, TxtTotal.Text)
lblSaldoFE.Text = saldo.FormatoNumero
RVDocumentoImporteFE.MaximumValue = saldo.ToString
UPCondicionesPago.Update()
End Sub
#End Region
#Region "CHK'S"
Protected Sub RBLCajaChica_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLCajaChica.SelectedIndexChanged
Select Case RBLCajaChica.SelectedValue
Case "1" : DdlCajaChica.Visible = False : DdlPersonal.Visible = True
Case "2" : DdlCajaChica.Visible = True : DdlPersonal.Visible = False
End Select
End Sub
Protected Sub ChkReembolso_CheckedChanged(sender As Object, e As EventArgs) Handles ChkReembolso.CheckedChanged
PnlReemb.Visible = ChkReembolso.Checked
End Sub
Protected Sub RBLPago_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLPago.SelectedIndexChanged
CambiaTipoPago(True)
End Sub
Private Sub CambiaTipoPago(MostrarModal As Boolean)
DdlPersonalReembolso.Visible = False
DdlCuentaCajaChicaReembolso.Visible = False
Select Case RBLPago.SelectedValue
Case "1" 'Credito
PnlContado.Visible = False
If Not UsuarioActual.Empresa.UsaAC Then
TxtNumeroReembolso.Text = ""
tdNumeroReembolso.Visible = False
End If
EsContado = False
romCreditosTabla.Visible = False
Case "2" 'Contado
PnlContado.Visible = True
TxtNumeroReembolso.Text = ""
tdNumeroReembolso.Visible = False
RBLContado.Items(0).Enabled = True
RBLContado.Items(3).Enabled = True
RBLContado.Items(4).Enabled = True
RBLContado.Items(5).Enabled = True
If UsuarioActual.Empresa.CvePlataforma = 2 Then
RBLContado.Items.Clear()
RBLContado.Items.Insert(0, New ListItem("Bancos", "1"))
RBLContado.Items.Insert(1, New ListItem("Caja Chica", "6"))
RBLContado.Items.Insert(2, New ListItem("Deudores", "4"))
RBLContado.SelectedIndex = 0
'RBLContado.Items.Item(2).Enabled = False
'RBLContado.Items.Item(4).Enabled = False
'RBLContado.Items.Item(5).Enabled = False
End If
'If EmpresaPrueba Then
' RBLContado.Items(5).Enabled = False
'End If
EsContado = True
romCreditosTabla.Visible = False
Case "3" 'Reembolso/Comprobacion
PnlContado.Visible = True
''AGARRA VALORES DE SESSION PARA REEMBOLSO -- SI YA ESTA REGISTRADA LA COMPRA IGNORA DATOS DE REEMBOLSO
If Not CveCompra > 0 Then
If UsuarioActual.Sesion("Comp-NumeroReembolso") <> Nothing AndAlso UsuarioActual.Sesion("Comp-NumeroReembolso").ToString <> "" Then
'RBLPago.SelectedValue = "3" ' [IPP] SE COMENTO POR NO PODER MOSTRAR LO SELECCIONADO
'RBLPago_SelectedIndexChanged(RBLPago, EventArgs.Empty)
'CambiaTipoPago(False)
tdNumeroReembolso.Visible = True
TxtNumeroReembolso.Text = UsuarioActual.Sesion("Comp-NumeroReembolso").ToString
TxtDescripcion.Text = UsuarioActual.Sesion("Comp-Descripcion").ToString
If UsuarioActual.Sesion("Comp-CveFYE") <> Nothing AndAlso UsuarioActual.Sesion("Comp-CveFYE").ToString.ToEntero > 0 Then
RBLContado.SelectedValue = "2"
RBLContado_SelectedIndexChanged(RBLContado, EventArgs.Empty)
DdlPersonalReembolso.SelectedValueExist(UsuarioActual.Sesion("Comp-CveFYE").ToString)
ViewState("CvePersonal") = UsuarioActual.Sesion("Comp-CveFYE").ToString
Else
RBLContado.SelectedValue = "6"
End If
Else
UsuarioActual.Sesion("Comp-NumeroReembolso") = ""
UsuarioActual.Sesion("Comp-CveFYE") = ""
UsuarioActual.Sesion("Comp-Descripcion") = ""
TxtNumeroReembolso.Text = ""
tdNumeroReembolso.Visible = True
RBLContado.SelectedValue = "6"
End If
End If
RBLContado.Items(0).Enabled = False
RBLContado.Items(3).Enabled = True
RBLContado.Items(4).Enabled = False
RBLContado.Items(5).Enabled = False
EsContado = False
'Valida Proceso 118 para ROL Administrador - Si es REEMBOLSO: Selecciona FyE y Relacionado con UsuarioActual cuando tiene CvePersonal
If UsuarioActual.TienePermisoProceso(118) Then
RBLContado.SelectedValue = "2"
RBLContado.Items(1).Enabled = False
End If
Select Case RBLContado.SelectedValue
Case "2"
DdlPersonalReembolso.Visible = True
Case "6"
DdlCuentaCajaChicaReembolso.Visible = True
End Select
romCreditosTabla.Visible = False
Case "4"
CargaCreditosDisponibles()
Exit Select
End Select
UpGvCreditos.Update()
If Not RBLPago.SelectedValue = "1" And MostrarModal And RBLPago.SelectedValue <> "4" Then
RegistraScript(String.Format("$('#{0}').modal('show');", "DivContadoModal"))
End If
LtlTituloPago.Text = If(EsContado, "Contado", "Reembolso")
DivContado.Visible = EsContado
DivReembolso.Visible = Not EsContado
CargaContado()
End Sub
Protected Sub RBLContado_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLContado.SelectedIndexChanged
CargaContado()
End Sub
Private Sub RBLTipoDeudor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLTipoDeudor.SelectedIndexChanged
GvDeudores.DataSource = Nothing
GvDeudores.DataBind()
UpContado.Update()
CargaDeudores()
End Sub
Private Sub CargaContado()
'ESCONDE TODO
PnlContadoBancos.Visible = False
PnlContadoFyE.Visible = False
PnlContadoCreditos.Visible = False
PnlContadoDeudores.Visible = False
PnlContadoAcreedores.Visible = False
PnlContadoCajaChica.Visible = False
DdlPersonalReembolso.Visible = False
DdlCuentaCajaChicaReembolso.Visible = False
If GvDeudores IsNot Nothing Then
GvDeudores.DataSource = Nothing
GvDeudores.DataBind()
UPDeudores.Update()
End If
'Reembolsos
If RBLPago.SelectedValue = "3" Then
Select Case RBLContado.SelectedValue
Case "2"
DdlPersonalReembolso.Visible = True
Case "6"
DdlCuentaCajaChicaReembolso.Visible = True
End Select
'Valida Proceso 118 para ROL Administrador - Si es REEMBOLSO: Selecciona FyE y Relacionado con UsuarioActual cuando tiene CvePersonal
If UsuarioActual.TienePermisoProceso(118) Then
If UsuarioActual.CvePersonal > 0 Then
DdlPersonalReembolso.SelectedValueExist(UsuarioActual.CvePersonal.ToString)
ViewState("CvePersonal") = DdlPersonalReembolso.SelectedValue
End If
DdlPersonalReembolso.Enabled = False
End If
End If
'CONTADO
Select Case RBLContado.SelectedValue
Case "1" ' Bancos
PnlContadoBancos.Visible = True
TxtDocumentoImporte.Text = TxtTotal.Text
Case "2" ' F y E
PnlContadoFyE.Visible = True
CargaFuncionariosEmpleados()
Case "3" ' Creditos
PnlContadoCreditos.Visible = True
CargaCreditos()
Case "4" ' Deudores
PnlContadoDeudores.Visible = True
CargaDeudores()
Case "5" ' ACREEDORES
PnlContadoAcreedores.Visible = True
CargaAcreedores()
Case "6" ' Caja Chica
PnlContadoCajaChica.Visible = True
TxtDocumentoImporteCaja.Text = TxtTotal.Text
End Select
UpContado.Update()
End Sub
Protected Sub RblRembolso_SelectedIndexChanged(sender As Object, e As EventArgs)
TrRembolsoCajaChica.Visible = False
TrRembolsoPersonal.Visible = False
DdlRembolsoCajaChica.SelectedValueExist("-1")
DdlRembolsoPersonal.SelectedValueExist("-1")
If RblRembolso.SelectedValue.ToEntero = 1 Then
TrRembolsoPersonal.Visible = True
ElseIf RblRembolso.SelectedValue.ToEntero = 2 Then
TrRembolsoCajaChica.Visible = True
End If
End Sub
#End Region
#Region "ARMONIZACION CONTABLE - AC - SIMPLIFICADO"
Private Sub CargaPresupuestosEgresos(Optional CargaTodo As Boolean = True)
'Seccion Grid
GvPS.Width = 1760
GvPS.Columns(12).Visible = True
GvPS.Columns(13).Visible = True
GvPS.Columns(14).Visible = True
GvPS.Columns(15).Visible = True
GvPS.Columns(16).Visible = True
'Panel General
UpPresupuestosAC.Visible = True
DdlACGeneral1.Items.Clear()
DdlACGeneral1.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveProgramaOperativo", "ProgramaOperativo"})
DdlACGeneral1.DataBind()
DdlACGeneral2.Items.Clear()
DdlACGeneral2.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveUnidadAdministrativa", "UnidadAdministrativa"}, Orderby:="UnidadAdministrativa")
DdlACGeneral2.DataBind()
DdlACGeneral3.Items.Clear()
DdlACGeneral3.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveFuenteFinanciamiento", "FuenteFinanciamiento"}, Orderby:="FuenteFinanciamiento")
DdlACGeneral3.DataBind()
DdlACGeneral4.Items.Clear()
DdlACGeneral4.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveTipoGasto", "TipoGasto"})
DdlACGeneral4.DataBind()
DdlACGeneral5.Items.Clear()
DdlACGeneral5.DataSource = DtPresupuestos.FiltraParametros("NOT CodigoCOG like '1%'", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion")
If UsuarioActual.CveEmpresa.Contiene(120) Then
DdlACGeneral5.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion")
Else
DdlACGeneral5.DataSource = DtPresupuestos.FiltraParametros("NOT CodigoCOG like '1%'", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion")
End If
DdlACGeneral5.DataBind()
If CveCompra > 0 Then
RegistraScript("$get('DivPresupuestoEgresosGeneral').style.display = 'none';")
BtnVerPE.Visible = True
End If
If CargaTodo Then
CalculaSaldoACGeneral()
UpPresupuestosAC.Update()
End If
End Sub
Private Sub ConservaAC()
'Guarda valores AC en TmpDT
Dim Index = 0
For Each gvr As GridViewRow In GvPS.Rows
TmpDT.Rows(Index)("CveProgramaOperativo") = gvr.FCDropDownList("DdlAC1").SelectedValue.ToEntero
TmpDT.Rows(Index)("CveUnidadAdministrativa") = gvr.FCDropDownList("DdlAC2").SelectedValue.ToEntero
TmpDT.Rows(Index)("CveFuenteFinanciamiento") = gvr.FCDropDownList("DdlAC3").SelectedValue.ToEntero
TmpDT.Rows(Index)("CveTipoGastoAC") = gvr.FCDropDownList("DdlAC4").SelectedValue.ToEntero
TmpDT.Rows(Index)("CveClasificacionOG") = gvr.FCDropDownList("DdlAC5").SelectedValue.ToEntero
Index += 1
Next
End Sub
Protected Sub CompruebaSaldoAC(sender As Object, e As EventArgs)
ConservaAC()
CompruebaAgregar()
End Sub
Protected Sub CambiaACGeneral(sender As Object, e As EventArgs)
If ChkACGeneral.Checked Then
'CAMBIA LOS COMBOS DE TODOS LOS DETALLES DEL GRID
For Each gvr As GridViewRow In GvPS.Rows
'SI VIENE DESDE OC EL PE NO SE MUEVE
If Not gvr.DataKey("CveOrdenCompraDetalle").ToEntero > 0 Then
gvr.FCDropDownList("DdlAC1").SelectedValue = DdlACGeneral1.SelectedValue
gvr.FCDropDownList("DdlAC2").SelectedValue = DdlACGeneral2.SelectedValue
gvr.FCDropDownList("DdlAC3").SelectedValue = DdlACGeneral3.SelectedValue
gvr.FCDropDownList("DdlAC4").SelectedValue = DdlACGeneral4.SelectedValue
gvr.FCDropDownList("DdlAC5").SelectedValue = DdlACGeneral5.SelectedValue
End If
Next
ConservaAC()
CompruebaAgregar()
UpPS.Update()
End If
CalculaSaldoACGeneral()
UpPresupuestosAC.Update()
End Sub
Private Sub CalculaSaldoACGeneral()
Dim ContPaq As New ClsContPAQi(UsuarioActual.Empresa)
Dim DtPresupuestosTemp = DtPresupuestos.FiltraParametros(String.Format("CveProgramaOperativo = {0} and CveUnidadAdministrativa = {1} and CveFuenteFinanciamiento = {2} and CveTipoGasto= {3} and CveClasificacion = {4}", DdlACGeneral1.SelectedValue.ToString, DdlACGeneral2.SelectedValue.ToString, DdlACGeneral3.SelectedValue.ToString, DdlACGeneral4.SelectedValue.ToString, DdlACGeneral5.SelectedValue.ToString))
If DtPresupuestosTemp.Rows.Count > 0 Then
Dim IdCuenta = If(HdnVCveOC.Value <> "-1", DtPresupuestosTemp.Rows(0)("IdCuentaDevengado").ToString.ToEntero, DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero)
LbACGeneralSaldo.Text = ContPaq.GetSaldoCuenta(IdCuenta, 0, TxtFecha.Text.ToDate.Year).ToString.FormatoNumero(2)
Else
LbACGeneralSaldo.Text = "0.00"
End If
ContPaq.Dispose()
End Sub
Private Sub CargaHidendsAC()
Dim DtPresupuestosTemp As DataTable
Dim Filtro As New StringBuilder
For Each grid As GridViewRow In GvPS.Rows
Filtro.AppendFormat("CveProgramaOperativo = {0} and CveUnidadAdministrativa = {1} and CveFuenteFinanciamiento = {2} and CveTipoGasto= {3} and CveClasificacion = {4}", grid.FCDropDownList("DdlAC1").SelectedValue.ToString, grid.FCDropDownList("DdlAC2").SelectedValue.ToString, grid.FCDropDownList("DdlAC3").SelectedValue.ToString, grid.FCDropDownList("DdlAC4").SelectedValue.ToString, grid.FCDropDownList("DdlAC5").SelectedValue.ToString)
DtPresupuestosTemp = DtPresupuestos.FiltraParametros(Filtro.ToString)
Filtro.Clear()
If DtPresupuestosTemp.Rows.Count > 0 Then
TmpDT.Rows(grid.RowIndex)("CvePresupuestoEgreso") = DtPresupuestosTemp.Rows(0)("CvePresupuestoEgreso").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaComprometido") = DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaPorEjercer") = DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaDevengado") = DtPresupuestosTemp.Rows(0)("IdCuentaDevengado").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaMatriz") = DtPresupuestosTemp.Rows(0)("IdCuentaMatriz").ToString
Else
Alert("Ocurrió un error al vincular el Presupuesto de Egreso. Por favor intente de nuevo.", TipoMensaje.MsgAdvertencia)
End If
Next
End Sub
Private Sub CompruebaAgregar()
Dim ContPaq As New ClsContPAQi(UsuarioActual.Empresa)
Dim disponible As Double
Dim ErrorPresupuesto = False
Dim Conceptos As New StringBuilder
Dim Ddl1 As DropDownList
Dim Ddl2 As DropDownList
Dim Ddl3 As DropDownList
Dim Ddl4 As DropDownList
Dim Ddl5 As DropDownList
Dim Total As Double
Dim DtPresupuestosTemp As DataTable
Dim Filtro As New StringBuilder
For Each grid As GridViewRow In GvPS.Rows
Ddl1 = grid.FCDropDownList("DdlAC1")
Ddl2 = grid.FCDropDownList("DdlAC2")
Ddl3 = grid.FCDropDownList("DdlAC3")
Ddl4 = grid.FCDropDownList("DdlAC4")
Ddl5 = grid.FCDropDownList("DdlAC5")
Total = grid.Cells(8).ToString.ToDouble
Filtro.AppendFormat("CveProgramaOperativo = {0} and CveUnidadAdministrativa = {1} and CveFuenteFinanciamiento = {2} and CveTipoGasto= {3} and CveClasificacion = {4}", Ddl1.SelectedValue.ToString, Ddl2.SelectedValue.ToString, Ddl3.SelectedValue.ToString, Ddl4.SelectedValue.ToString, Ddl5.SelectedValue.ToString)
DtPresupuestosTemp = DtPresupuestos.FiltraParametros(Filtro.ToString)
Filtro.Clear()
If DtPresupuestosTemp IsNot Nothing AndAlso DtPresupuestosTemp.Rows.Count > 0 Then
disponible = ContPaq.GetSaldoCuenta(If(OCVinculada, DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString.ToEntero, DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero), 0, TxtFecha.Text.ToDate.Year)
If (disponible > 0 AndAlso disponible >= Total) Or DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
'Alert("Si hay dinero: ")
TmpDT.Rows(grid.RowIndex)("CvePresupuestoEgreso") = DtPresupuestosTemp.Rows(0)("CvePresupuestoEgreso").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaComprometido") = DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaPorEjercer") = DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaDevengado") = DtPresupuestosTemp.Rows(0)("IdCuentaDevengado").ToString
TmpDT.Rows(grid.RowIndex)("IdCuentaMatriz") = DtPresupuestosTemp.Rows(0)("IdCuentaMatriz").ToString
grid.Cells(7).BackColor = Drawing.Color.Green
Else
'Alert("No hay presupuesto asignado", TipoMensaje.MsgAdvertencia)
Conceptos.AppendFormat("<br> #{0} - {1} - {2}", grid.RowIndex + 1, grid.DataKey("Clasificacion"), grid.DataKey("PS"))
grid.Cells(7).BackColor = Drawing.Color.Red
ErrorPresupuesto = True
End If
TmpDT.Rows(grid.RowIndex)("CvePresupuestoEgreso") = DtPresupuestosTemp.Rows(0)("CvePresupuestoEgreso").ToString
Else
TmpDT.Rows(grid.RowIndex)("CvePresupuestoEgreso") = "-1"
'Alert("No hay presupuesto asignado", TipoMensaje.MsgAdvertencia)
Conceptos.AppendFormat("<br> #{0} - {1} - {2}", grid.RowIndex + 1, grid.DataKey("Clasificacion"), grid.DataKey("PS"))
grid.Cells(7).BackColor = Drawing.Color.Red
ErrorPresupuesto = True
End If
Next
If ErrorPresupuesto Then
Alert(String.Format("No hay presupuesto asignado para los siguientes conceptos: {0}", Conceptos), TipoMensaje.MsgAdvertencia)
BtnGuardar.Enabled = False
Else
BtnGuardar.Enabled = True
End If
UpFacturar.Update()
ContPaq.Dispose()
End Sub
Private Sub GuardaAC()
Dim dr As DataRow
For Each gvr As GridViewRow In GvPS.Rows
dr = TmpDT.Rows(gvr.RowIndex)
'DtDetalle.Rows(gvr.RowIndex)("CveClasificacionOG") = gvr.FCDropDownList("DdlAC5").SelectedValue.ToEntero
'DtDetalle.Rows(gvr.RowIndex)("CveProgramaOperativo") = gvr.FCDropDownList("DdlAC1").SelectedValue.ToEntero
'DtDetalle.Rows(gvr.RowIndex)("CveUnidadAdministrativa") = gvr.FCDropDownList("DdlAC2").SelectedValue.ToEntero
'DtDetalle.Rows(gvr.RowIndex)("CveFuenteFinanciamiento") = gvr.FCDropDownList("DdlAC3").SelectedValue.ToEntero
'DtDetalle.Rows(gvr.RowIndex)("CveTipoGasto") = gvr.FCDropDownList("DdlAC4").SelectedValue.ToEntero
dr("CveProgramaOperativo") = gvr.FCDropDownList("DdlAC1").SelectedValue.ToEntero
dr("CveUnidadAdministrativa") = gvr.FCDropDownList("DdlAC2").SelectedValue.ToEntero
dr("CveFuenteFinanciamiento") = gvr.FCDropDownList("DdlAC3").SelectedValue.ToEntero
dr("CveTipoGastoAC") = gvr.FCDropDownList("DdlAC4").SelectedValue.ToEntero
dr("CveClasificacionOG") = gvr.FCDropDownList("DdlAC5").SelectedValue.ToEntero
'dr("CvePresupuestoEgreso") = gvr.FCHiddenField("HdnCvePresupuestoEgreso").Value.ToString.ToEntero
Next
TmpDT.AcceptChanges()
End Sub
Protected Sub BtnCambiaFecha_Click(sender As Object, e As EventArgs)
CambiaEjercicioAC()
End Sub
Private Sub CambiaEjercicioAC(Optional CargaTodo As Boolean = True)
Dim Ejercicio = If(IsDate(TxtFecha.Text), Year(TxtFecha.Text.ToDate), UsuarioActual.Empresa.EjercicioActual)
If Ejercicio <> EjercicioAC Then
Dim AC As New ClsAC
If AC.GetPresupuestoEgresos(-1, True, Ejercicio, UsuarioActual.CveEmpresa, True) Then
DtPresupuestos = AC.DtResultados.Copy
CargaPresupuestosEgresos(CargaTodo)
ConservaAC()
GvPS.DataSource = TmpDT
GvPS.DataBind()
'CAMBIA LOS COMBOS DE TODOS LOS DETALLES DEL GRID
For Each gvr As GridViewRow In GvPS.Rows
gvr.FCDropDownList("DdlAC1").SelectedValue = DdlACGeneral1.SelectedValue
gvr.FCDropDownList("DdlAC2").SelectedValue = DdlACGeneral2.SelectedValue
gvr.FCDropDownList("DdlAC3").SelectedValue = DdlACGeneral3.SelectedValue
gvr.FCDropDownList("DdlAC4").SelectedValue = DdlACGeneral4.SelectedValue
gvr.FCDropDownList("DdlAC5").SelectedValue = DdlACGeneral5.SelectedValue
Next
If CargaTodo Then CompruebaAgregar()
UpPS.Update()
UpPresupuestosAC.Update()
Else
Alert("Ocurrio un error al cargar los Presupuestos. Por favor vuelva a cargar la página")
End If
AC.Dispose()
EjercicioAC = Ejercicio
End If
End Sub
#End Region
#Region "E V E N T O - B I T A C O R A"
Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEB.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.RowIndex = 0 Then
e.Row.Cells(0).Width = Unit.Pixel(200)
e.Row.Cells(1).Width = Unit.Pixel(200)
e.Row.Cells(2).Width = Unit.Pixel(100)
e.Row.Cells(3).Width = Unit.Pixel(500)
End If
If e.Row.DBCampo("Archivo").ToString <> "" Then
e.Row.FCLinkButton("LinkArchivo").Visible = True
e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString)
ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione
End If
e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Left
End If
End Sub
Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click
Dim ObjEventoBitacora As New ClsOIEventos
Dim FileExtension As String = "-1"
Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos
Dim Filename As String = ""
For Each fileItem As Archivo In Filesgral
FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "")
Filename = fileItem.filename
Next
If ObjEventoBitacora.AddEventoBitacora(TxtEventoDescripcion.Text.Trim, String.Format(".{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
If Filename <> "" Then
Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("Empresas\{0}\OI", UsuarioActual.CveEmpresa))
End If
GvEB.DataSource = ObjEventoBitacora.DtResultados
TxtEventoDescripcion.Text = ""
Anexo.Text = "[]"
Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion)
RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal")
End If
ObjEventoBitacora.Dispose()
GvEB.DataBind()
UPEventoBitacora.Update()
CargaEventoBitacora()
UPAddEventoBitacora.Update()
End Sub
'Protected Sub CargarArchivo(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AFU.UploadedComplete
' If AFU.HasFile Then
' Dim UploadFolder As String = String.Format("{0}\Temp\", UsuarioActual.Empresa.Ruta)
' UploadFolder.DirectoryExistsCreate()
' Dim Extension As String = System.IO.Path.GetExtension(AFU.PostedFile.FileName)
' If File.Exists(String.Format("{0}{1}{2}", UploadFolder, UsuarioActual.CveUsuario.ToString, Extension)) Then File.Delete(String.Format("{0}{1}{2}", UploadFolder, UsuarioActual.CveUsuario.ToString, Extension))
' AFU.SaveAs(UploadFolder & UsuarioActual.CveUsuario.ToString & Extension)
' Session("FileUpload") = UploadFolder & UsuarioActual.CveUsuario.ToString & Extension
' Session("FileExtension") = Extension
' Session("FileFolder") = UploadFolder
' End If
'End Sub
Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs)
Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument)
Dim Archivo As New System.IO.FileInfo(filePath)
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.ContentType = "application/octet-stream"
HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath))
HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString())
HttpContext.Current.Response.TransmitFile(filePath)
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.End()
Archivo = Nothing
End Sub
Private Sub CargaEventoBitacora()
Dim ObjEventoBitacora As New ClsOIEventos()
If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
GvEB.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento = 6 OR CveTipoEvento = 2")
Else
GvEB.DataSource = Nothing
End If
ObjEventoBitacora.Dispose()
GvEB.DataBind()
End Sub
#End Region
#Region " C O N T A B I L I D A D "
Protected Sub BtnDescontabilizar_Click(sender As Object, e As EventArgs)
'Alert("Hola entre", TipoMensaje.MsgError)
'Exit Sub
Dim ObjConta As New ClsContabilidad
Dim Movimientos = ObjConta.GetMovimientosPoliza(IdPoliza, UsuarioActual.CveEmpresa)
'Verifica que solo exista 1 compra asociada
If Movimientos = 1 Then
EliminaPoliza()
Else
RegistraScript("ConfirmEliminarPolizaMultiple();")
End If
ObjConta.Dispose()
End Sub
Protected Sub LBContabilizarAC_Click(sender As Object, e As EventArgs)
Dim ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
Dim ObjCompras As New ClsCompras
Dim ObjProveedores As New ClsCompProveedores(ObjCompras.IniciaTransacSQL())
Dim ObjAF As New ClsAF(ObjCompras.IniciaTransacSQL())
Dim ErrorAC = False
Dim IDPolizaComprometido = If(TxtOC.Text.Length > 0, 1, 0)
''EMPIEZA: SI USA AC
If UsuarioActual.Empresa.UsaAC Then
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
'ELIMINA TODOS LOS MOVIMIENTOS DE LA POLIZA
If IdPoliza > 0 Then
ObjContaAC.RemoveAllMovimientos(IdPoliza)
Else
Dim TotalPorDevengar = Math.Round(TxtTotal.Text.ToDouble, 2)
IdPoliza = ObjContaAC.AddPoliza(3, TxtDescripcion.Text.Trim, TotalPorDevengar, TotalPorDevengar, UsuarioActual.CveUsuario, TxtFecha.Text.ToDate)
End If
'INSERTA LOS NUEVOS MOVIMIENTOS DE LA POLIZA
If IdPoliza > 0 Then
Dim CuentaAbono As Integer
Dim Importe As Decimal = 0
Dim TotalDetalle As Decimal = 0
'CUENTA PROVEEDOR
If CtaProveedor <= 0 Then
If ObjContaAC.GetCuentas(-1, "021120000000000000", -1) Then
Dim drCuenta As DataRow = ObjContaAC.DtResultados.FiltroPrimero("")
If drCuenta IsNot Nothing Then
CuentaAbono = drCuenta("Id").ToString.ToEntero
Dim FolioProveedor = ObjContaAC.GetFolioProveedores("021120000000000000").ToString
ViewState("CtaProveedor") = ObjContaAC.AddCuenta(String.Format("02112{0}000000000", FolioProveedor.PadLeft(4, "0"c)), NombreProveedor, "D", 2, 0, 1, 0, "", 1, CuentaAbono)
ObjProveedores.UpdateProveedorIdCuentaAC(CveProveedor, CtaProveedor)
Else
ErrorAC = True
End If
Else
ErrorAC = True
End If
End If
Dim ConceptoRenglon As String = ""
If Not ErrorAC Then
Dim tTotalIVA, tTotalGral, tDiferenciaIVA, tIVA, tRetIVA, tRetISR As Decimal
Dim ipresup As Integer = 0
'COMIENZA: PRUEBA AGRUPACION CONCEPTOS
Dim Presup = From gvr As DataRow In TmpDT.Rows.Cast(Of DataRow)()
Group gvr By Grp = New With {
Key .CvePresupuestoEgreso = gvr("CvePresupuestoEgreso").ToString.ToEntero,
Key .CveActivoFijo = If(gvr("TipoAF").ToString.ToEntero = 2, gvr("CveActivoFijo").ToString.ToEntero, -1)
} Into Group
Select Grp.CvePresupuestoEgreso, Grp.CveActivoFijo,
TotalImporte = Group.Sum(Function(r) r("Total").ToString.ToDecimal)
Dim Fecha As Date = TxtFecha.Text.ToDate
'PresupuestoEgresos
Dim DtPresupuestosTemp As DataTable
Dim IdCuentaComprometido, IdCuentaPorEjercer, IdCuentaDevengado, IdCuentaMatriz As Integer
'Dim tTotalIVA, tTotalGral, tDiferenciaIVA, tIVA As Double
tTotalIVA = TxtIVA.Text.ToDecimal
tRetIVA = TxtRetIVA.Text.ToDecimal
tRetISR = TxtRetISR.Text.ToDecimal
'tTotalIVA = tTotalIVA - tRetIVA - tRetISR
tTotalGral = TxtTotal.Text.ToDecimal + tRetIVA + tRetISR ' EL TOTAL GENERAL DEBE DE SER EL SUBTOTAL + IVA, NO SE DEBEN DE INCLUIR LAS RETENCIONES, POR ESO SE RESTA
tDiferenciaIVA = tTotalIVA
tIVA = 0
ipresup = 0
'INVENTARIOS EN AC
Dim CuentaMatrizAlmacen As Integer
Dim ContadorInventario As Integer = GvInv.Rows.Cast(Of GridViewRow)().Count(Function(gvr) gvr.FCCheckBox("cbInv").Checked)
Dim CtaAlmacen As Integer
If ContadorInventario > 0 Then
Dim drr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", GvInv.HeaderRow.FCDropDownList("ddlAlmacen").SelectedValue.ToString.ToEntero))
If drr IsNot Nothing Then
CtaAlmacen = drr("IdCtaContable").ToString.ToEntero
End If
End If
Dim DescuentoConIVA As Double
Dim tPorIVA As Decimal = tTotalIVA / (tTotalGral - tTotalIVA)
Dim tAjusteTotal As Decimal = 0
For Each grp In Presup
Importe = grp.TotalImporte
TotalDetalle += Importe
ipresup += 1
If Importe > 0 Then
'saco la proporcion de iva que le corresponde
tIVA = Math.Round(Importe * tPorIVA, 2)
tDiferenciaIVA -= tIVA
'identifico si es el ultimo registro, para ver si es necesario un ajuste
If ipresup = Presup.Count Then
If Math.Round(TotalDetalle - tTotalGral, 2) <= 0.01 AndAlso tDiferenciaIVA > 0 Then
tIVA += tDiferenciaIVA
End If
End If
'le sumo el iva al concepto
Importe += tIVA
'codigo Provisional, para cuand tenga descuento, solo tome el subtotal * el iva,RMF
If TxtDescuento.Text.ToDouble > 0 Then
Importe = grp.TotalImporte * (1 + tPorIVA)
End If
tAjusteTotal += Importe
'valido que la sumas de lo detalles no exceda al totalgeneral
If Math.Round(tAjusteTotal, 2) > tTotalGral Then
'le resto la diferencia
Importe -= (tAjusteTotal - tTotalGral)
End If
'Presupuesto Egresos
DtPresupuestosTemp = DtPresupuestos.FiltraParametros(String.Format("CvePresupuestoEgreso = {0}", grp.CvePresupuestoEgreso))
If DtPresupuestosTemp.Rows.Count <> 1 Then
ErrorAC = True
Exit For
End If
IdCuentaComprometido = DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString.ToEntero
IdCuentaPorEjercer = DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero
IdCuentaDevengado = DtPresupuestosTemp.Rows(0)("IdCuentaDevengado").ToString.ToEntero
IdCuentaMatriz = DtPresupuestosTemp.Rows(0)("IdCuentaMatriz").ToString.ToEntero
'COMPROMETIDO DEPENDIENTE SI EXISTE SU POLIZA
If IDPolizaComprometido = 0 Then
ConceptoRenglon = String.Format("GC Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If ObjContaAC.AddMovimiento(IdPoliza, IdCuentaComprometido, False, Importe, "", ConceptoRenglon, 0, Fecha, "") Then
If Not ObjContaAC.AddMovimiento(IdPoliza, IdCuentaPorEjercer, True, Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
Exit For
End If
Else
ErrorAC = True
Exit For
End If
End If
ConceptoRenglon = String.Format("GD Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
'DEVENGADO
If ObjContaAC.AddMovimiento(IdPoliza, IdCuentaDevengado, False, Importe, "", ConceptoRenglon, 0, Fecha, "") Then
If Not ObjContaAC.AddMovimiento(IdPoliza, IdCuentaComprometido, True, Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
Exit For
End If
Else
ErrorAC = True
Exit For
End If
If ContadorInventario > 0 Then
Dim tImporte, ttIVA As Double
For Each gvr As GridViewRow In GvPS.Rows
'registra los movimientos del presupuesto asignado, para que no se duplique si hay varios presupeusto dentro de la compra
If gvr.DataKey("CvePresupuestoEgreso").ToEntero = grp.CvePresupuestoEgreso Then
'saco la proporcion de iva que le corresponde
tImporte = gvr.FCLiteral("LtlTotal").Text.ToDouble
ttIVA = Math.Round(tImporte * tTotalIVA / tTotalGral, 2)
tImporte += ttIVA
End If
Next
CuentaMatrizAlmacen = CtaAlmacen
ElseIf grp.CveActivoFijo > 0 Then
Dim CtaAF = -1
Dim AF = ""
Dim CuentaInicial = -1
If ObjAF.GetActivosFijos(grp.CveActivoFijo, UsuarioActual.CveEmpresa, "-1", "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1, UsuarioActual.CveEmpresa) Then
CtaAF = ObjAF.Cuenta
AF = ObjAF.Descripcion
CuentaInicial = ObjAF.CuentaInicial
Else
ErrorAC = True
Exit For
End If
If Not CuentaInicial > 0 Then
CuentaInicial = 1241
End If
'CUENTA AF
If CtaAF <= 0 Then
If ObjContaAC.GetCuentas(-1, String.Format("0{0}0000000000000", CuentaInicial), -1) Then
Dim drCuenta As DataRow = ObjContaAC.DtResultados.FiltroPrimero("")
If drCuenta IsNot Nothing Then
CuentaAbono = drCuenta("Id").ToString.ToEntero
Dim FolioAF = ObjContaAC.GetFolioProveedores(String.Format("0{0}0000000000000", CuentaInicial)).ToString
CtaAF = ObjContaAC.AddCuenta(String.Format("0{0}{1}000000000", CuentaInicial, FolioAF.PadLeft(4, "0"c)), AF, "A", 2, 0, 1, 0, "", 1, CuentaAbono)
ObjAF.UpdateActivosFijosCuentaAC(grp.CveActivoFijo, CtaAF, UsuarioActual.CveUsuario)
Else
ErrorAC = True
End If
Else
ErrorAC = True
End If
End If
CuentaMatrizAlmacen = CtaAF
Else
CuentaMatrizAlmacen = IdCuentaMatriz
End If
''AFECTAR MATRIZ EGRESOS
If ObjContaAC.AddMovimiento(IdPoliza, CuentaMatrizAlmacen, False, Importe, "", ConceptoRenglon, 0, Fecha, "") Then
''VERIFICA SI TIENE DESCUENTO (AMORTIZACION)
If TxtDescuento.Text.ToDouble > 0 AndAlso CtaProveedorAnticipos > 0 Then
DescuentoConIVA = TxtDescuento.Text.ToDecimal * 1.16
'Valida que el descuento con iva cuadre en los totales
If Math.Abs(DescuentoConIVA - (Importe - TxtTotal.Text.ToDouble)) < 0.02 Then
DescuentoConIVA = Importe - TxtTotal.Text.ToDouble
ElseIf DescuentoConIVA <> (Importe - TxtTotal.Text.ToDecimal) Then
ErrorAC = True
Exit For
End If
'actualizo el idcuenta del presupuesto
If ObjContaAC.AddMovimiento(IdPoliza, CtaProveedor, True, (Importe - DescuentoConIVA), "", ConceptoRenglon, 0, Fecha, "") Then
'agrego a la cuenta contable anticipos
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedorAnticipos, True, DescuentoConIVA, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
Exit For
End If
Else
ErrorAC = True
Exit For
End If
Else
'actualizo el idcuenta del
End If
Else
ErrorAC = True
Exit For
End If
''TERMINA AFECTAR MATRIZ EGRESOS
Else
ErrorAC = True
Exit For
End If
Next
If Not ErrorAC Then
'registro un solo movimiento a proveedores
Importe = TxtTotal.Text.ToDecimal
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedor, True, Importe, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
End If
End If
If tRetISR > 0 Then
ConceptoRenglon = String.Format("GD Fact: {0}-{1} {2}", TxtSerie.Text.Trim, TxtFolio.Text.Trim, DdlProveedor.SelectedItem.Text)
If Not ObjContaAC.AddMovimiento(IdPoliza, CtaProveedorRetISR, True, tRetISR, "", ConceptoRenglon, 0, Fecha, "") Then
ErrorAC = True
End If
End If
End If
Else
ErrorAC = True
End If
'CUADRA LA POLIZA
ObjContaAC.AjustaPoliza(IdPoliza)
End If
''TERMINA: SI USA AC
If Not ErrorAC Then
If Not ObjCompras.UpdateCompraPoliza(IdPoliza, CveCompra) Then
ErrorAC = True
End If
End If
If ErrorAC Then
Alert("Ocurrió un error al contabilizar la compra. Comuniquese con soporte.", TipoMensaje.MsgError)
ObjContaAC.RollBack()
ObjCompras.RollBack()
Else
ObjContaAC.Commit()
ObjCompras.Commit()
Alert("La Compra se contabilizó correctamente.", TipoMensaje.MsgInformacion)
HplCompraContabilizada.Text = "Si"
HplCompraContabilizada.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", IdPoliza)
LblCompraEstatus.ForeColor = Drawing.Color.Navy
trContabilizada.Visible = True
UpEstatus.Update()
End If
ObjContaAC.Dispose()
End Sub
Protected Sub BtnEliminarPoliza_Click(sender As Object, e As EventArgs)
EliminaPoliza()
End Sub
Private Sub EliminaPoliza()
Dim ObjAC As New ClsContPAQi(UsuarioActual.Empresa)
ObjAC.IniciaTransacSQL()
Dim ObjConta As New ClsContabilidad
ObjConta.IniciaTransacSQL()
Dim ErrorCompra = False
'Elimina la poliza
If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad) AndAlso IdPoliza > 0 Then
If Not ObjAC.RemovePoliza(IdPoliza) Then
ErrorCompra = True
End If
End If
'Desasocia la poliza
If Not ErrorCompra Then
If Not ObjConta.DesasociarPoliza(IdPoliza, UsuarioActual.CveEmpresa) Then
ErrorCompra = True
End If
End If
If Not ErrorCompra Then
Alert("La poliza ha sido desvinculada y eliminada con exito.", TipoMensaje.MsgInformacion)
ObjAC.Commit()
ObjConta.Commit()
Else
Alert("Ocurrió un error al desvincular y/o eliminar la poliza. Por favor intente de nuevo ", TipoMensaje.MsgError)
ObjAC.RollBack()
ObjConta.RollBack()
End If
ObjAC.Dispose()
ObjConta.Dispose()
If Not ErrorCompra Then
CargaCompra()
End If
End Sub
#End Region
#Region " REEMBOLSOS NO USA AC "
Protected Sub DdlPersonal2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPersonalReembolso.SelectedIndexChanged
ViewState("CvePersonal") = DdlPersonalReembolso.SelectedValue
End Sub
Protected Sub DdlCajaChica2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCuentaCajaChicaReembolso.SelectedIndexChanged
Dim dr As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltroPrimero("CveCuenta = " & DdlCuentaCajaChicaReembolso.SelectedValue)
If dr IsNot Nothing Then
CveMoneda = dr("CveMoneda").ToString.ToEntero
IdCuentaBancaria = dr("IdCtaContable").ToString.ToEntero
CveCuentaBancaria = dr("IdCtaContableSIG").ToString.ToEntero
End If
ViewState("CveCajaChica") = DdlCuentaCajaChicaReembolso.SelectedValue
End Sub
#End Region
#Region " ALMACEN "
#End Region
#Region " CONSIGNACIONES "
Protected Sub ChkConsignacion_CheckedChanged(sender As Object, e As EventArgs)
If ChkConsignacion.Checked Then
'LiConsignacion.Visible = True
GvInv.Columns(7).Visible = True
GvInv.Columns(8).Visible = True
CargaConsignaciones2()
CargaGvInv()
GvInv.HeaderRow.FCCheckBox("cbAll").Checked = True
GvInv.HeaderRow.FCCheckBox("cbAll").Enabled = False
BtnVinculaConsignacion.Visible = True
BtnGuardar.Enabled = False
UpFacturar.Update()
Else
GvInv.Columns(7).Visible = False
GvInv.Columns(8).Visible = False
'LiConsignacion.Visible = False
CveConsignacion = -1
GvInv.HeaderRow.FCCheckBox("cbAll").Checked = False
GvInv.HeaderRow.FCCheckBox("cbAll").Enabled = True
BtnVinculaConsignacion.Visible = False
CargaGvInv()
BtnGuardar.Enabled = True
UpFacturar.Update()
End If
cbAll_CheckedChanged(GvInv.HeaderRow.FCCheckBox("cbAll"), EventArgs.Empty)
UpConsignaciones.Update()
End Sub
Private Sub CargaConsignaciones()
If DdlProveedor.SelectedValue.ToEntero > 0 Then
'Dim ObjInventarios As New ClsInventarios
'If ObjInventarios.GetConsignaciones2(-1, UsuarioActual.CveEmpresa) Then
' DdlConsignacion.DataSource = ObjInventarios.DtResultados.FiltraParametros(String.Format("CveProveedor = {0}", DdlProveedor.SelectedValue.ToEntero))
'Else
' DdlConsignacion.DataSource = Nothing
'End If
'ObjInventarios.Dispose()
'DdlConsignacion.DataBind()
'DdlConsignacion.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
End Sub
Private Sub CargaConsignaciones2()
Dim ObjInventarios As New ClsInventarios
Dim TieneError = False
CveConsignacion = -1
If ObjInventarios.GetConsignacionesDetalleProveedor(DdlProveedor.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
DtConsignaciones = ObjInventarios.DtResultados
Else
TieneError = True
End If
If DtConsignaciones IsNot Nothing AndAlso DtConsignaciones.Rows.Count > 0 Then
'CveConsignacion = DdlConsignacion.SelectedValue.ToEntero
CveConsignacion = 1
'CveAlmacenConsignacion = ObjInventarios.DtResultados.Rows(0)("CveAlmacen").ToString.ToEntero
End If
If TieneError Then
Alert("Ocurrió un error al cargar la consignación. Por favor vuelva a intentar.", TipoMensaje.MsgError)
DtConsignaciones = Nothing
End If
ObjInventarios.Dispose()
CargaGvInv()
End Sub
Protected Sub BtnVinculaConsignacion_Click(sender As Object, e As EventArgs)
Dim ObjInventarios As New ClsInventarios
Dim TieneError = False
CveConsignacion = -1
If ObjInventarios.GetConsignacionesDetalleProveedor(DdlProveedor.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
DtConsignaciones = ObjInventarios.DtResultados
Else
TieneError = True
End If
If DtConsignaciones.Rows.Count > 0 Then
'CveConsignacion = DdlConsignacion.SelectedValue.ToEntero
CveConsignacion = 1
CveAlmacenConsignacion = ObjInventarios.DtResultados.Rows(0)("CveAlmacen").ToString.ToEntero
End If
If TieneError Then
Alert("Ocurrió un error al cargar la consignación. Por favor vuelva a intentar.", TipoMensaje.MsgError)
DtConsignaciones = Nothing
End If
ObjInventarios.Dispose()
CargaGvInv()
'If DtConsignaciones IsNot Nothing Then
' GvConsignaciones.DataSource = DtConsignaciones
' GvConsignaciones.DataBind()
'End If
'UpConsignaciones.Update()
End Sub
Protected Sub GvConsignaciones_RowDataBound(sender As Object, e As GridViewRowEventArgs) 'Handles GvConsignaciones.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.FCDropDownList("DdlVinculaConsignacion").DataSource = TmpDT
e.Row.FCDropDownList("DdlVinculaConsignacion").DataBind()
e.Row.FCDropDownList("DdlVinculaConsignacion").Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
End Sub
Protected Sub DdlVinculaConsignacion_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim Ddl As DropDownList = DirectCast(sender, DropDownList)
Dim gvr As GridViewRow = DirectCast(Ddl.BindingContainer, GridViewRow)
If Ddl.SelectedValue = "-1" Then
gvr.FCHiddenField("HdnPS").Value = "-1"
gvr.FCHiddenField("HdnCvePS").Value = "-1"
gvr.FCHiddenField("HdnClasificacion").Value = "-1"
gvr.FCHiddenField("HdnCveClasificacion").Value = "-1"
gvr.FCHiddenField("HdnCveAlmacen").Value = "-1"
gvr.FCHiddenField("HdnNoConsignacion").Value = "-1"
gvr.FCHiddenField("HdnCveConsignacion").Value = "-1"
'GUARDA VALORES POR UNA RECARGA (DIVISION DE CONCEPTO)
TmpDT.Rows(gvr.RowIndex)("CveAlmacenConsignacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("NoConsignacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("CveConsignacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnPS") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnCvePS") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnClasificacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnCveClasificacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnCveAlmacen") = "-1"
Exit Sub
End If
Dim Row = DtConsignaciones.Rows(Ddl.SelectedValue.ToEntero - 1)
'VALIDAMOS CANTIDAD
Dim Cantidad = Row("Cantidad").ToString.ToDecimal
For Each gvr1 As GridViewRow In GvInv.Rows
If gvr1.FCHiddenField("HdnNoConsignacion").Value.ToString = Ddl.SelectedValue Then
Cantidad = Cantidad - gvr1.DataKey("Cantidad").ToString.ToDecimal
End If
Next
If Cantidad - gvr.DataKey("Cantidad").ToString.ToDecimal < 0 Then
Ddl.SelectedValue = "-1"
gvr.FCHiddenField("HdnPS").Value = "-1"
gvr.FCHiddenField("HdnCvePS").Value = "-1"
gvr.FCHiddenField("HdnClasificacion").Value = "-1"
gvr.FCHiddenField("HdnCveClasificacion").Value = "-1"
gvr.FCHiddenField("HdnCveAlmacen").Value = "-1"
gvr.FCHiddenField("HdnNoConsignacion").Value = "-1"
gvr.FCHiddenField("HdnCveConsignacion").Value = "-1"
'GUARDA VALORES POR UNA RECARGA (DIVISION DE CONCEPTO)
TmpDT.Rows(gvr.RowIndex)("CveAlmacenConsignacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("NoConsignacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("CveConsignacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnPS") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnCvePS") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnClasificacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnCveClasificacion") = "-1"
TmpDT.Rows(gvr.RowIndex)("HdnCveAlmacen") = "-1"
Alert("El concepto que desea vincular excede la cantidad del inventario de consignación.", TipoMensaje.MsgAdvertencia)
Else
gvr.FCHiddenField("HdnPS").Value = Row("PS").ToString
gvr.FCHiddenField("HdnCvePS").Value = Row("CvePS").ToString
gvr.FCHiddenField("HdnClasificacion").Value = Row("Clasificacion").ToString
gvr.FCHiddenField("HdnCveClasificacion").Value = Row("CveClasificacion").ToString
gvr.FCHiddenField("HdnCveAlmacen").Value = Row("CveAlmacenSalida").ToString
gvr.FCHiddenField("HdnNoConsignacion").Value = Ddl.SelectedValue.ToEntero.ToString
gvr.FCHiddenField("HdnCveConsignacion").Value = Row("CveConsignacion").ToString
'GUARDA VALORES POR UNA RECARGA (DIVISION DE CONCEPTO)
TmpDT.Rows(gvr.RowIndex)("CveAlmacenConsignacion") = gvr.FCDropDownList("ddlAlmacenConsignacion").SelectedValue.ToEntero
TmpDT.Rows(gvr.RowIndex)("NoConsignacion") = Ddl.SelectedValue.ToEntero
TmpDT.Rows(gvr.RowIndex)("CveConsignacion") = Row("CveConsignacion").ToString
TmpDT.Rows(gvr.RowIndex)("HdnPS") = Row("PS").ToString
TmpDT.Rows(gvr.RowIndex)("HdnCvePS") = Row("CvePS").ToString
TmpDT.Rows(gvr.RowIndex)("HdnClasificacion") = Row("Clasificacion").ToString
TmpDT.Rows(gvr.RowIndex)("HdnCveClasificacion") = Row("CveClasificacion").ToString
TmpDT.Rows(gvr.RowIndex)("HdnCveAlmacen") = Row("CveAlmacenSalida").ToString
End If
End Sub
Protected Sub ddlAlmacenConsignacionGeneral_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim DdlAlmacenConsignacionGeneral = CType(sender, DropDownList)
For Each gvr As GridViewRow In GvInv.Rows
gvr.FCDropDownList("ddlAlmacenConsignacion").SelectedValue = DdlAlmacenConsignacionGeneral.SelectedValue
gvr.FCDropDownList("ddlVinculaConsignacion").DataSource = DtConsignaciones.FiltraParametros(String.Format("CveAlmacenSalida = {0} OR {0} = '-1'", gvr.FCDropDownList("ddlAlmacenConsignacion").SelectedValue))
gvr.FCDropDownList("ddlVinculaConsignacion").DataBind()
gvr.FCDropDownList("ddlVinculaConsignacion").Items.Insert(0, New ListItem("Seleccione", "-1"))
Next
UpINV.Update()
End Sub
Protected Sub ddlAlmacenConsignacion_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim DdlAlmacenConsignacion = CType(sender, DropDownList)
Dim DdlVinculaConsignacion = CType(CType(sender, DropDownList).NamingContainer, GridViewRow).FCDropDownList("DdlVinculaConsignacion")
''CARGA CONSIGNACIONES
DdlVinculaConsignacion.DataSource = DtConsignaciones.FiltraParametros(String.Format("CveAlmacenSalida = {0} OR {0} = '-1'", DdlAlmacenConsignacion.SelectedValue))
DdlVinculaConsignacion.DataBind()
DdlVinculaConsignacion.Items.Insert(0, New ListItem("Seleccione", "-1"))
UpINV.Update()
End Sub
Protected Sub BtnVinculaConsignacion_Click1(sender As Object, e As EventArgs)
'VALIDACIONES
For Each gvr As GridViewRow In GvInv.Rows
If gvr.FCDropDownList("DdlVinculaConsignacion").SelectedValue = "-1" Then
Alert("Debe vincular todos los conceptos para realizar la vinculación de consignación.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Next
'CambiaPS
For Each gvr As GridViewRow In GvInv.Rows
TmpDT.Rows(gvr.RowIndex)("PS") = gvr.FCHiddenField("HdnPS").Value
TmpDT.Rows(gvr.RowIndex)("CvePS") = gvr.FCHiddenField("HdnCvePS").Value
TmpDT.Rows(gvr.RowIndex)("Clasificacion") = gvr.FCHiddenField("HdnClasificacion").Value
TmpDT.Rows(gvr.RowIndex)("CveClasificacion") = gvr.FCHiddenField("HdnCveClasificacion").Value
Next
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
'Bloqueamos todo para respetar cambios realizados
DtInv = TmpDT
ChkConsignacion.Enabled = False
BtnVinculaConsignacion.Enabled = False
UpConsignaciones.Update()
GvInv.Enabled = False
UpINV.Update()
GvInv.HeaderRow.FCCheckBox("cbAll").Checked = True
cbAll_CheckedChanged(GvInv.HeaderRow.FCCheckBox("cbAll"), EventArgs.Empty)
BtnGuardar.Enabled = True
UpFacturar.Update()
End Sub
#End Region
#Region " ***** Devoluciones INV ***** "
'*se envia true si hubo un error*'
Private Function guardardevolucion(ObjInventario As ClsInventarios, CveCompra As Integer, subtotal As Double, Fecha As Date) As Boolean
Dim ErrorMovInv As Boolean = False
Dim CveAlmacen As Integer
Dim subtotaldevolucion As Double = 0
Dim realizadevolucion As Boolean = False
'Calculo los subtotales para comparar con la NC
Dim cantidad As Double = 0.0
For Each Dr As GridViewRow In GVDevolucion.Rows
CveAlmacen = Dr.DataKey("CveAlmacen").ToString.ToEntero
cantidad = Dr.FCTextBox("TxtCantidad").Text.ToDouble
If cantidad > 0 Then
realizadevolucion = True
subtotaldevolucion += Dr.DataKey("PU").ToString.ToDouble * cantidad
End If
Next
'si no esta vinculado a nc simplemente me lo brinco
If realizadevolucion Then
'si el subtotal es iwal a la nc lo guardo si no marco error
If subtotal > subtotaldevolucion - 1 AndAlso subtotal < subtotaldevolucion + 1 Then
Dim CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 13, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1)
If CveMovimientoEntrada <= 0 Then
ErrorMovInv = True
Else
For Each Dr As GridViewRow In GVDevolucion.Rows
If Dr.FCTextBox("TxtCantidad").Text.ToDouble > 0 Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr.FCTextBox("TxtCantidad").Text.ToDouble, Dr.DataKey("CveUM").ToString.ToEntero, Dr.DataKey("CvePS").ToString.ToEntero, Dr.DataKey("PU").ToString.ToDouble, -1, CveMovimientoDetalleEntrada:=Dr.DataKey("CveMovimientoDetalle").ToString.ToEntero) Then
ErrorMovInv = True
Exit For
End If
End If
Next
End If
Else
ErrorMovInv = True
Alert("El Total de la NC debe ser igual al total de la devolucion", TipoMensaje.MsgAdvertencia)
End If
End If
Return ErrorMovInv
End Function
Private Sub cargaddldevoluciones(CveProveedor As Integer, SubTotal As Double)
Dim objcompras As New ClsCompras()
If objcompras.GetCompraParaDevolucion(CveProveedor, UsuarioActual.CveEmpresa, SubTotal) Then
DDLDevolucion.Items.Clear()
DDLDevolucion.DataSource = objcompras.DtResultados
DDLDevolucion.DataBind()
DDLDevolucion.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
objcompras.Dispose()
UPDevolucion.Update()
End Sub
Protected Sub DDLDevolucion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DDLDevolucion.SelectedIndexChanged
Dim objcompras As New ClsCompras()
If objcompras.GetCompraDetallealmacen(DDLDevolucion.SelectedValue.ToEntero) Then
GVDevolucion.DataSource = objcompras.DtResultados
GVDevolucion.DataBind()
End If
objcompras.Dispose()
UPDevolucion.Update()
End Sub
'Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' cargaddldevoluciones(CveProveedor, TextBox1.Text.ToDouble)
'End Sub
'Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
' Dim ObjInventario As New ClsInventarios()
' Dim cvecompra As Integer = 5221
' Dim subtotal As Double = TextBox1.Text.ToDouble
' guardardevolucion(ObjInventario, cvecompra, subtotal, Now.ToDate)
'End Sub
Protected Sub BtnVinculaDevolucion_Click(sender As Object, e As EventArgs)
Dim subtotaldevolucion As Double = 0
Dim realizadevolucion As Boolean = False
'Calculo los subtotales para comparar con la NC
Dim cantidad As Double = 0.0
For Each Dr As GridViewRow In GVDevolucion.Rows
cantidad = Dr.FCTextBox("TxtCantidad").Text.ToDouble
If cantidad > 0 Then
realizadevolucion = True
subtotaldevolucion += Dr.DataKey("PU").ToString.ToDouble * cantidad
End If
Next
'si no esta vinculado a nc simplemente me lo brinco
If realizadevolucion Then
'si el subtotal es iwal a la nc lo guardo si no marco error
If TxtSubTotal.Text.ToDouble > subtotaldevolucion - 1 AndAlso TxtSubTotal.Text.ToDouble < subtotaldevolucion + 1 Then
VinculaDevolucion()
Else
Alert("El Total de la NC debe ser igual al total de la devolucion", TipoMensaje.MsgAdvertencia)
End If
Else
Alert("No se ha seleccionado nada para la devolución. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
End If
End Sub
Private Sub VinculaDevolucion()
'Borramos el TmpDT
TmpDT.Clear()
'Iteramos el GridView de la OC
For Each gvr As GridViewRow In GVDevolucion.Rows
If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then
Dim Cantidad As Decimal = gvr.FCTextBox("TxtCantidad").Text.ToDecimal
Dim CveUM As Integer = gvr.DataKey("CveUM").ToString.ToEntero
Dim UM As String = gvr.DataKey("UM").ToString
Dim CveClasificacion As Integer = gvr.DataKey("CveClasificacion").ToString.ToEntero
Dim Clasificacion As String = gvr.DataKey("Clasificacion").ToString
Dim CvePS As Integer = gvr.DataKey("CvePS").ToString.ToEntero
Dim PS As String = gvr.DataKey("PS").ToString
Dim CveTipoPS As Integer = gvr.DataKey("CveTipoPS").ToString.ToEntero
Dim CveSubProyectoContrato As String = "-1"
Dim CveProyecto As String = "-1"
Dim SubProyecto As String = "Seleccione"
Dim Proyecto As String = "Seleccione"
Dim Obs As String = ""
Dim PU As Decimal = gvr.DataKey("PU").ToString.ToDecimal
Dim Total As Decimal = gvr.FCTextBox("TxtTotalDevolucion").Text.ToDecimal
Dim IVA As Decimal = 0
Dim Descuento As Decimal = 0
AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, -1, False)
End If
Next
AddPS2()
BtnGuardar.Enabled = True
If Not CierrePeriodo Then
BtnGuardar.Visible = True
End If
AlmacenCambiaPS.Visible = False
UpFacturar.Update()
TabGenerales.Enabled = True
Tab.ActiveTabIndex = 0
UpTabs.Update()
ImgClasificacion.Visible = False
LbAgregar.Visible = False
UpPSS.Update()
CargaGvInv()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
CargaGVsAF()
CargaTipoCentroCostoOC()
GvOC1.DataSource = DTOCTemp
Dim DTCVEOCS As DataTable = DTOCTemp.FiltraParametros("", "", {"CveOrdenCompra"})
If DTCVEOCS.Rows.Count > 1 Then
GvOC1.Columns(0).Visible = True
Else
GvOC1.Columns(0).Visible = False
End If
GvOC1.DataBind()
' TmpDT = OrdenarTablas("CvePS", DTOCTemp, TmpDT)
GvOC2.DataSource = TmpDT
GvOC2.DataBind()
UpGvOC1.Update()
NCDevolucion = True
''Bloquea cambio de proyecto
'DdlProyecto.Enabled = False
'DdlSubProyecto.Enabled = False
'UPPProyecto.Update()
'Bloquea cambio de OC ya que se concluyo alguna vinculacion
TxtOC.Enabled = False
ImgBtnBuscarOC.Visible = False
UpParametros.Update()
UpPSS.Update()
End Sub
#End Region
#Region " REFACTURACION "
Private Sub ValidaRefacturacion()
If Not CveCompra > 0 AndAlso DdlTipoComprobante.SelectedValue = "Fac" And UsuarioActual.Empresa.CvePlataforma <> 2 Then
VerRefacturacion.Visible = True
End If
End Sub
Protected Sub BtnRefacturacionVer_Click(sender As Object, e As EventArgs) Handles BtnRefacturacionVer.Click
Dim Opcion As Integer = 1
If UsuarioActual.CveEmpresa = 119 Then Opcion = 2
Dim ObjCompras As New ClsCompras
DdlRefacturacionFacturas.Items.Clear()
If ObjCompras.GetRefacturacion(CveProveedor, TxtSubTotal.Text.ToDecimal, TxtIVA.Text.ToDecimal, TxtTotal.Text.ToDecimal, Opcion, UsuarioActual.CveEmpresa) Then
DtRefacturacion = ObjCompras.DtResultados
DdlRefacturacionFacturas.DataSource = DtRefacturacion
Else
Alert("Ocurrió un error al obtener las facturas para refacturación. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjCompras.Dispose()
DivRefacturacion.Visible = True
DdlRefacturacionFacturas.DataBind()
DdlRefacturacionFacturas.SelectedValueExist(CveCompraRefacturacion)
DdlRefacturacionFacturas.Items.Insert(0, New ListItem("Seleccione", "-1"))
RegistraScript(String.Format("$('#{0}').modal('show')", DivRefacturacion.ClientID))
UpRefacturacion.Update()
End Sub
Protected Sub BtnRefacturacionAplicaFactura_Click(sender As Object, e As EventArgs) Handles BtnRefacturacionAplicaFactura.Click
TxtDescripcion.Text = String.Format("Refacturacion: {0}", DtRefacturacion.Rows(DdlRefacturacionFacturas.SelectedIndex - 1)("Descripcion"))
TxtFechaPago.Text = DtRefacturacion.Rows(DdlRefacturacionFacturas.SelectedIndex - 1)("FechaVencimiento").ToString.ToDate.ToShortDateString
For Each Dr As DataRow In TmpDT.Rows
Dr("CveSubProyecto") = DtRefacturacion.Rows(DdlRefacturacionFacturas.SelectedIndex - 1)("CveSubProyecto").ToString.ToEntero
Dr("SubProyecto") = DtRefacturacion.Rows(DdlRefacturacionFacturas.SelectedIndex - 1)("SubProyecto").ToString
Dr("CveProyecto") = DtRefacturacion.Rows(DdlRefacturacionFacturas.SelectedIndex - 1)("CveProyecto").ToString.ToEntero
Dr("Proyecto") = DtRefacturacion.Rows(DdlRefacturacionFacturas.SelectedIndex - 1)("Proyecto").ToString
Next
TrFacturaRefacturar.Visible = True
LtFacturaRefacturar.Text = DdlRefacturacionFacturas.SelectedItem.Text
CveCompraRefacturacion = DtRefacturacion.Rows(DdlRefacturacionFacturas.SelectedIndex - 1)("CveCompra").ToString.ToEntero
GvPS.DataSource = TmpDT
GvPS.DataBind()
'LIMPIA ALMACEN
For Each gvr As GridViewRow In GvInv.Rows
gvr.FCCheckBox("cbInv").Checked = False
Next
TabAlmacen.Enabled = False
UpRefacturacion.Update()
UpParametros.Update()
UpPS.Update()
UPCondicionesPago.Update()
UpTabs.Update()
RegistraScript(String.Format("$('#{0}').modal('hide')", DivRefacturacion.ClientID))
End Sub
Private Function GuardaRefacturacion(ByRef ObjCompra As ClsCompras, ByRef ObjEventos As ClsOIEventos, CvePrePoliza As Integer) As Boolean
Dim dr As DataRow = Nothing
Dim ErrorBitacora = False
Dim IdPolizaAnterior = -1
Dim TotalRefact As Decimal = 0
'SI NO TIENE POLIZA NI PAGOS NO HACE NADA
'If ObjCompra.GetCompras(CveCompraRefacturacion, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
' If ObjCompra.DtResultados IsNot Nothing AndAlso ObjCompra.DtResultados.Rows.Count = 1 Then
' Dim drc As DataRow = ObjCompra.DtResultados.Rows(0)
' TotalRefact = drc("Total").ToString.ToDecimal
' If drc("IdPoliza").ToString.ToEntero <= 0 AndAlso drc("Saldo").ToString.ToDecimal = drc("Total").ToString.ToDecimal AndAlso drc("CveMovimiento").ToString.ToEntero <= 0 Then
' Alert("La factura a refacturar no esta contabilizada ni tiene pagos ni movimientos de almacen. No se puede refacturar, debera eliminar la factura anterior y agregar esta factura de forma normal.", TipoMensaje.MsgAdvertencia)
' Return True
' End If
' End If
'End If
'GUARDA ADJUNTOS Y LIGA EN BITACORA (RELACION DE FACTURA NUEVA Y VIEJA)
ErrorBitacora = GuardaRefacturacionBitacora(ObjCompra, ObjEventos)
If ObjCompra.GetCompras(CveCompraRefacturacion, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
If ObjCompra.DtResultados IsNot Nothing AndAlso ObjCompra.DtResultados.Rows.Count > 0 Then
dr = ObjCompra.DtResultados.Rows(0)
IdPolizaAnterior = dr("IdPoliza").ToString.ToEntero
End If
End If
Dim Tipo As Integer = 1
If ChkRefacNC.Checked Then Tipo = 2
'CONTABILIZA REFACTURACION
If Not ObjCompra.Refacturacion(CveCompraRefacturacion, CveCompra, UsuarioActual.CveEmpresa, Tipo) Then
ErrorBitacora = True
End If
'Return True
Return ErrorBitacora
End Function
Private Function GuardaRefacturacionBitacora(ObjCompra As ClsCompras, ObjEventos As ClsOIEventos) As Boolean
Dim dr As DataRow = Nothing
Dim ErrorBitacora = False
Dim Archivo = ""
Dim Folio = ""
Dim Extension = ""
Dim Ruta = ""
'CARGA COMPRA REFACTURADA
If CveCompra > 0 AndAlso ObjCompra.GetCompras(CveCompraRefacturacion, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
If ObjCompra.DtResultados IsNot Nothing AndAlso ObjCompra.DtResultados.Rows.Count > 0 Then
dr = ObjCompra.DtResultados.Rows(0)
'ADJUNTAMOS ARCHIVO XML
If Not ErrorBitacora Then
Archivo = String.Format("/Empresas/{0}/Compras/{1}/{2}", dr("CveEmpresa"), dr("RFC"), dr("XML"))
If File.Exists(Archivo) Then
Extension = Path.GetExtension(Archivo)
If Extension <> "" Then
If ObjEventos.AddEventoBitacora("XML de Refacturación:", Extension, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
'OBTENEMOS RUTA DONDE GUARDAR | OPCIONAL: CREAMOS CARPETA
Ruta = String.Format("{0}OI", UsuarioActual.Empresa.Ruta)
Ruta.DirectoryExistsCreate()
'COPIAMOS EL ARCHIVO A OI
System.IO.File.Copy(Archivo, String.Format("{0}\OI{1}{2}", Ruta, ObjEventos.CveEvento.ToString, Extension))
Else
ErrorBitacora = True
End If
End If
End If
End If
'ADJUNTAMOS ARCHIVO PDF
If Not ErrorBitacora Then
Archivo = String.Format("/Empresas/{0}/Compras/{1}/{2}", dr("CveEmpresa"), dr("RFC"), dr("PDF"))
If File.Exists(Archivo) Then
Extension = Path.GetExtension(Archivo)
If Extension <> "" Then
If ObjEventos.AddEventoBitacora("PDF de Refacturación:", Extension, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
'OBTENEMOS RUTA DONDE GUARDAR | OPCIONAL: CREAMOS CARPETA
Ruta = String.Format("{0}OI", UsuarioActual.Empresa.Ruta)
Ruta.DirectoryExistsCreate()
'COPIAMOS EL ARCHIVO A OI
System.IO.File.Copy(Archivo, String.Format("{0}\OI{1}{2}", Ruta, ObjEventos.CveEvento.ToString, Extension))
Else
ErrorBitacora = True
End If
End If
End If
End If
'LIGA AL FOLIO/COMPRA DE REFACTURACION
If Not ErrorBitacora Then
If Not ObjEventos.AddEventoBitacora(String.Format("Refacturación de: <a href=""/Compras/Compras.aspx?CveCompra={0}"" target=""_blank"">{1}</a>", CveCompraRefacturacion, dr("Folio").ToString), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
ErrorBitacora = True
End If
End If
End If
End If
'CARGA COMPRA ACTUAL
If Not ErrorBitacora Then
If ObjCompra.GetCompras(CveCompra, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
If ObjCompra.DtResultados IsNot Nothing AndAlso ObjCompra.DtResultados.Rows.Count > 0 Then
dr = ObjCompra.DtResultados.Rows(0)
'ADJUNTAMOS ARCHIVO XML
If Not ErrorBitacora Then
Archivo = String.Format("/Empresas/{0}/Compras/{1}/{2}", dr("CveEmpresa"), dr("RFC"), dr("XML"))
If File.Exists(Archivo) Then
Extension = Path.GetExtension(Archivo)
If Extension <> "" Then
If ObjEventos.AddEventoBitacora("XML de Refacturación:", Extension, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
'OBTENEMOS RUTA DONDE GUARDAR | OPCIONAL: CREAMOS CARPETA
Ruta = String.Format("{0}OI", UsuarioActual.Empresa.Ruta)
Ruta.DirectoryExistsCreate()
'COPIAMOS EL ARCHIVO A OI
System.IO.File.Copy(Archivo, String.Format("{0}\OI{1}{2}", Ruta, ObjEventos.CveEvento.ToString, Extension))
Else
ErrorBitacora = True
End If
End If
End If
End If
'ADJUNTAMOS ARCHIVO PDF
If Not ErrorBitacora Then
Archivo = String.Format("/Empresas/{0}/Compras/{1}/{2}", dr("CveEmpresa"), dr("RFC"), dr("PDF"))
If File.Exists(Archivo) Then
Extension = Path.GetExtension(Archivo)
If Extension <> "" Then
If ObjEventos.AddEventoBitacora("PDF de Refacturación:", Extension, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
'OBTENEMOS RUTA DONDE GUARDAR | OPCIONAL: CREAMOS CARPETA
Ruta = String.Format("{0}OI", UsuarioActual.Empresa.Ruta)
Ruta.DirectoryExistsCreate()
'COPIAMOS EL ARCHIVO A OI
System.IO.File.Copy(Archivo, String.Format("{0}\OI{1}{2}", Ruta, ObjEventos.CveEvento.ToString, Extension))
Else
ErrorBitacora = True
End If
End If
End If
End If
'LIGA AL FOLIO/COMPRA EN REFACTURACION
If Not ErrorBitacora Then
If Not ObjEventos.AddEventoBitacora(String.Format("Refacturación en: <a href=""/Compras/Compras.aspx?CveCompra={0}"" target=""_blank"">{1}</a>", CveCompra, dr("Folio").ToString), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompraRefacturacion) Then
ErrorBitacora = True
End If
End If
End If
End If
End If
Return ErrorBitacora
End Function
#End Region
#Region " CANCELAR COMPRA "
Private Sub ValidaCancelarCompra()
If UsuarioActual.TienePermisoProceso(140) Then
If CveMovimientoAlmacen > 0 And EstatusAlmacen = 2 Then
BtnCancelarCompra.Visible = True
ElseIf CveMovimientoAlmacen = 0 Then
BtnCancelarCompra.Visible = True
End If
End If
End Sub
Protected Sub BtnCancelarCompra2_Click(sender As Object, e As EventArgs)
RegistraScript("$('#DivCancelarCompra').modal('hide');")
Dim ObjAC As ClsContPAQi = Nothing
If UsuarioActual.Empresa.UsaAC Then
ObjAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjAC.IniciaTransacSQL()
End If
Dim ObjCompras As New ClsCompras
Dim ObjContabilidad As New ClsContabilidad(ObjCompras.IniciaTransacSQL())
Dim ErrorCancelar = False
Dim IdPolizaNueva = -1
Dim FolioPolizaNueva = -1
Dim CvePrePolizaNueva = -1
Dim dt As DataTable
' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS)
If TxtFecha.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFecha.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then
'CREA POLIZA NEGATIVA
If IdPoliza > 0 AndAlso ObjAC IsNot Nothing Then
If ObjAC.GetPoliza(IdPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then
dt = ObjAC.DtResultados
IdPolizaNueva = ObjAC.AddPoliza(dt.Rows(0)("CodigoTipoPoliza").ToString.ToEntero, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, TxtFechaCancelacion.Text.ToDate)
If IdPolizaNueva > 0 Then
FolioPolizaNueva = ObjAC.Folio
For Each dr As DataRow In dt.Rows
If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, "") Then
ErrorCancelar = True : Exit For
End If
Next
'AJUSTA POLIZA
If Not ErrorCancelar Then
If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then
ErrorCancelar = True
End If
End If
Else
ErrorCancelar = True
End If
Else
ErrorCancelar = True
End If
End If
'CREA PRE-POLIZA NEGATIVA
If CvePrePoliza > 0 Then
If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza) Then
dt = ObjContabilidad.DtResultados
CvePrePolizaNueva = ObjContabilidad.AddPrePolizas("Compras/Cancelar", dt.Rows(0)("CvePlantillaPoliza").ToString.ToEntero, dt.Rows(0)("Cargos").ToString.ToDouble * -1, dt.Rows(0)("Abonos").ToString.ToDouble * -1, dt.Rows(0)("CveMoneda").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, String.Format("Cancelación: {0}", dt.Rows(0)("Concepto").ToString), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePolizaNueva > 0 Then
For Each dr As DataRow In dt.Rows
If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePolizaNueva, CBool(dr("TipoMovto").ToString), dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, dr("CveConceptoContable").ToString.ToEntero,
dr("Concepto").ToString, TxtFechaCancelacion.Text.ToDate, dr("IdCtaContable").ToString.ToEntero, dr("IdSegmentoNegocio").ToString.ToEntero, dr("CveIE").ToString.ToEntero,
dr("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero,
dr("CveMovimientoAlmacen").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, dr("CveAcreedor").ToString.ToEntero, dr("CveColectiva").ToString.ToEntero, dr("CveCreditoDetalle").ToString.ToEntero, CveCuenta:=dr("CveCuenta").ToString.ToEntero,
ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero) Then
ErrorCancelar = True
Exit For
End If
Next
Else
ErrorCancelar = True
End If
Else
ErrorCancelar = True
End If
End If
'MES ACTUAL
Else
'LIMPIA POLIZA PONIENDO IMPORTE EN CEROS
If IdPoliza > 0 AndAlso ObjAC IsNot Nothing Then
If ObjAC.GetPoliza(IdPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then
dt = ObjAC.DtResultados
For Each dr As DataRow In dt.Rows
If Not ObjAC.UpdateMovimiento(dr("Id").ToString.ToEntero, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "1", 0, dr("Referencia").ToString, dr("Concepto").ToString, dr("IdSegNeg").ToString.ToEntero, dr("Fecha").ToString.ToDate) Then
ErrorCancelar = True : Exit For
End If
Next
'AJUSTA POLIZA
If Not ErrorCancelar Then
If Not ObjAC.AjustaPoliza(IdPoliza) Then
ErrorCancelar = True
End If
End If
Else
ErrorCancelar = True
End If
End If
'LIMPIA PRE-POLIZA PONIENDO IMPORTE EN CEROS
If CvePrePoliza > 0 Then
If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza) Then
dt = ObjContabilidad.DtResultados
For Each dr As DataRow In dt.Rows
If Not ObjContabilidad.UpdatePrepolizasDetalle(dr("CvePrePolizaDetalle").ToString.ToEntero, dr("Concepto").ToString, dr("CveSubProyecto").ToString.ToEntero, dr("IdCtaContable").ToString.ToEntero, CBool(dr("TipoMovto").ToString), 0) Then
ErrorCancelar = True : Exit For
End If
Next
Else
ErrorCancelar = True
End If
End If
End If
'CANCELA COMPRA
If Not ErrorCancelar Then
If Not ObjCompras.UpdateEstatusCompra(CveCompra, -2) Then
ErrorCancelar = True
End If
End If
If Not ErrorCancelar Then
If ObjAC IsNot Nothing Then
ObjAC.Commit()
End If
ObjCompras.Commit()
Dim Msg As New StringBuilder
Msg.Append("La compra se cancelo correctamente.")
If IdPolizaNueva > 0 Then Msg.AppendFormat("<br/><br/><a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">Ver Póliza de cancelación</a>", IdPolizaNueva)
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
Else
If ObjAC IsNot Nothing Then
ObjAC.RollBack()
End If
ObjCompras.RollBack()
Alert("La compra no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjCompras.Dispose()
If ObjAC IsNot Nothing Then
ObjAC.Dispose()
End If
End Sub
Private Sub btnProrateo_Click(sender As Object, e As EventArgs) Handles btnProrateo.Click, btnProrateo2.Click
Dim IvaOriginal As Double = TxtIVA.Text.ToDouble
Dim CuentaContable = DirectCast(sender, Button).CommandArgument.ToString
Select Case CuentaContable
Case "Compras"
StringProrrateo = UsuarioActual.Empresa.Funcionalidad(117)
Case "Nomina"
StringProrrateo = UsuarioActual.Empresa.Funcionalidad(303)
End Select
Dim porcentajes As String() = StringProrrateo.Split(New Char() {";"c})
Dim prtDT As DataTable = TmpDT.Copy
Dim GBSP As DataTable = GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToString.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa)
TmpDT.Clear()
Dim subtotal As Decimal = TxtSubTotal.Text.ToDecimal
Dim subtotal2 As Decimal = TxtSubTotal2.Text.ToDecimal
Dim des As Decimal = TxtDescuento.Text.ToDecimal
Dim ivaa As Decimal = TxtIVA.Text.ToDecimal
TxtSubTotal.Text = "0.00"
TxtSubTotal2.Text = "0.00"
If CveFactura = 0 Then
TxtDescuento.Text = "0.00"
TxtIVA.Text = "0.00"
End If
For Each dr As DataRow In prtDT.Rows
Dim CveUM As Integer = dr("CveUM").ToString.ToEntero
Dim UM As String = dr("UM").ToString
Dim CveClasificacion As Integer = dr("CveClasificacion").ToString.ToEntero
Dim Clasificacion As String = dr("Clasificacion").ToString
Dim CvePS As Integer = dr("CvePS").ToString.ToEntero
Dim PS As String = dr("PS").ToString
Dim CveTipoPS As Integer = dr("CveTipoPS").ToString.ToEntero
Dim Proyecto As String = dr("Proyecto").ToString
Dim Obs As String = dr("Obs").ToString
Dim PU As Double = dr("PU").ToString.ToDouble
Dim IVA As Double = dr("IVA").ToString.ToDouble
Dim RetIVA As Double = dr("RetIVA").ToString.ToDouble
Dim RetISR As Double = dr("RetISR").ToString.ToDouble
Dim IEPSPS As Double = dr("IEPSPSPorcentaje").ToString.ToDouble
Dim IEPSPSIVA As Double = If(dr("IEPSGrabaIVA").ToString = "True", dr("IEPSPorcentaje").ToString.ToDouble, 0)
Dim Descuento As Double = dr("Descuento").ToString.ToDouble
Dim CveOrdenCompraDetalle As Integer = dr("CveOrdenCompraDetalle").ToString.ToEntero
For Each cadena As String In porcentajes
Dim valores As String() = cadena.Split(New Char() {","c})
Dim Cantidad As Double = dr("Cantidad").ToString.ToDouble * (valores(1).ToDouble / 100)
Dim CveSubProyectoContrato As String = valores(0)
Dim CveProyecto As String = valores(0)
Dim Total As Double = Cantidad * PU
Dim drT As DataRow = GBSP.FiltroPrimero(String.Format("CveSubProyecto = {0} ", CveSubProyectoContrato))
Dim drq As DataRow = GBSP.FiltroPrimero(String.Format("CveProyecto = {0} ", CveProyecto))
Dim SubProyecto As String = drT("SubProyecto").ToString
AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, RetIVA, RetISR, IEPSPS, IEPSPSIVA, Descuento, CveOrdenCompraDetalle:=CveOrdenCompraDetalle)
Next
Next
AddPS2()
AjustaImporteUltimoConcepto(subtotal2 - TmpDT.SUM("Total").ToString.ToDecimal)
TxtIVA.Text = IvaOriginal.ToString
CalculaTotales(True)
LbAgregar.Visible = False
UpPSS.Update()
prtDT = TmpDT.Copy
prtDT.Clear()
End Sub
Private Sub BtnValesCombustibleVer_Click(sender As Object, e As EventArgs) Handles BtnValesCombustibleVer.Click
Dim AF As New ClsAF
If AF.GetValesCombustible(-1, -1, -1, CveProveedor, -1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa, -1, -1) Then
GvVales.DataSource = AF.DtResultados
End If
AF.Dispose()
GvVales.DataBind()
DivValesCombustible.Visible = True
RegistraScript(String.Format("$('#{0}').modal('show')", DivValesCombustible.ClientID))
UPPValesCombustible.Update()
End Sub
#End Region
#Region " VALES COMBUSTIBLES "
Protected Sub BtnValesVincular_Click(sender As Object, e As EventArgs)
IdVale = New List(Of Integer)
For Each row As GridViewRow In GvVales.Rows
If row.FCCheckBox("ChkVale").Checked Then
IdVale.Add(row.DataKey("CveVale").ToEntero)
End If
Next
If IdVale.Count <= 0 Then
Alert("Debe elegir por lo menos un vale de combustible. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Else
Alert("Los vales selecciondos están listos para vincular")
RegistraScript(String.Format("$('#{0}').modal('hide')", DivValesCombustible.ClientID))
'For Each cve In IdVale
' Alert(cve.ToString)
'Next
End If
End Sub
#End Region
#Region " VINCULAR OC "
Private Sub InicializaOC()
'BORRAR OC
'TabOC.Visible = False
TabOC.Visible = False
EmpresasOC = New List(Of Integer)
''TODAS LAS EMPRESAS LO TIENEN Y LA 66 SOLO LOS USUARIOS DE ABAJO - EMPRESA QUE ESTE EN LA LISTA NO TENDRA NUEVO ESQUEMA
'If UsuarioActual.CveEmpresa = 66 AndAlso Not UsuarioActual.CveUsuario.Contiene(1434, 1436, 1337, 1440) Then
' EmpresasOC.Add(UsuarioActual.CveEmpresa)
'End If
'If Not EmpresasOC.Contains(UsuarioActual.CveEmpresa) Then
TabOC.Visible = True
'Else
'TabOC.Visible = True
'End If
If Not UsuarioActual.TienePermisoProceso(242) Then
DdlOCVinculaInv.Items.RemoveAt(2)
DdlOCVinculaInv.Items.RemoveAt(3)
End If
End Sub
Protected Sub BtnBuscarOC_Click(sender As Object, e As EventArgs) Handles BtnBuscarOC.Click
PopUpOC = False
CargaOC()
End Sub
Protected Sub CargaVOC(sender As Object, e As EventArgs)
PopUpOC = True
CargaOC()
End Sub
Private Sub CargaOC()
Dim EntregaDirecta = 0
DivOCSolicitudAnticipo.Visible = False
DivOCSolicitudAnticipoModal.Visible = False
If CveProveedor <= 0 Then
Alert("Debe de Seleccionar un proveedor")
Exit Sub
End If
'BANDERA DE SURTIDO
If UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then
GvOC1.Columns(1).Visible = True
End If
Dim CvesOC = ""
If PopUpOC Then
CvesOC = HdnVCveOC.Value
End If
HdnVCveOC.Value = ""
HdnCveEstatusOC.Value = ""
Dim OC As New ClsOC
If PopUpOC Then
Dim ArrayCveOC As String() = CvesOC.Split(New Char() {","c})
For i As Integer = 0 To ArrayCveOC.Count - 1
If OC.GetOrdenesCompraRep("OC", -1, -1, -1, -1, MinFecha, MaxFecha, ArrayCveOC(i).ToEntero, CveProveedor, -1, -1, -1, UsuarioActual.CveEmpresa, -1) Then
If OC.DtResultados.FiltraParametros("TipoTermino = 3").Rows.Count = 1 Or DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
HdnVCveOC.Value += String.Format("{0}{1}", If(HdnVCveOC.Value <> "", ",", ""), OC.DtResultados.Rows(0)("CveOrdenCompra").ToString)
HdnCveEstatusOC.Value += String.Format("{0}{1}", If(HdnCveEstatusOC.Value <> "", ",", ""), OC.DtResultados.Rows(0)("CveEstatusSiguiente").ToString)
EntregaDirecta += If(OC.DtResultados.Rows(0)("EntregaDirecta").ToString = "True", 1, 0)
End If
End If
Next
Else
Dim TextoErrorOC = ""
Dim ArrayCveOC As String() = TxtOC.Text.Split(New Char() {","c})
For i As Integer = 0 To ArrayCveOC.Count - 1
If OC.GetOrdenesCompraRep("OC", -1, -1, -1, -1, MinFecha, MaxFecha, -1, CveProveedor, ArrayCveOC(i).ToEntero, -1, -1, UsuarioActual.CveEmpresa, -1) Then
If OC.DtResultados.Rows.Count > 1 Then
TextoErrorOC += $"<br/>El folio <b>{ArrayCveOC(i).ToEntero}</b> no se pudo identificar."
End If
If OC.DtResultados.FiltraParametros("TipoTermino = 3").Rows.Count = 1 Or DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then
HdnVCveOC.Value += String.Format("{0}{1}", If(HdnVCveOC.Value <> "", ",", ""), OC.DtResultados.Rows(0)("CveOrdenCompra").ToString)
HdnCveEstatusOC.Value += String.Format("{0}{1}", If(HdnCveEstatusOC.Value <> "", ",", ""), OC.DtResultados.Rows(0)("CveEstatusSiguiente").ToString)
EntregaDirecta += If(OC.DtResultados.Rows(0)("EntregaDirecta").ToString = "True", 1, 0)
End If
End If
Next
If TextoErrorOC <> "" Then
Alert($"Las siguientes Ordenes de Compra no se pudieron vincular automaticamente: <br/>{TextoErrorOC} <br/><br/> Sera necesario vincular de manera manual mediante busqueda (lupia).", TipoMensaje.MsgAdvertencia)
TxtOC.Text = ""
Exit Sub
End If
End If
OC.Dispose()
PopUpOC = False
If HdnVCveOC.Value <> "" Then
If HdnCveEstatusOC.Value = "" Then
Alert("No se tiene especificado el siguiente estatus de la Orden(es) de Compra. Por favor verifique los estatus y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
VinculaOC()
If EntregaDirecta > 0 Then
Alert("Se identificó una Orden de Compra con entrega directa, por lo cual no se podra recibir en almacén desde este modulo, para esto es necesario recibir la mercancía desde la Orden de Compra.", TipoMensaje.MsgAdvertencia)
TabAlmacen.Visible = False
DivOCEntregaDirecta.Visible = True
End If
BtnGuardar.Enabled = False
TxtOC.Enabled = False
ImgBtnBuscarOC.Enabled = False
UpFacturar.Update()
Else
Alert("No se encontro ninguna Orden de Compra con el folio especificado.", TipoMensaje.MsgAdvertencia)
End If
UPPOC.Update()
UpPS.Update()
End Sub
Protected Sub BtnVOC_Click(sender As Object, e As EventArgs)
VinculaOC()
End Sub
Private Sub VinculaOC()
If TxtOC.Text <> "" Then
'VARIABLES
Dim TextoObservaciones = ""
LtOCPromocion.Text = ""
IvaAcumulado = 0
DTOCTemp = New DataTable
'SI NO ES UNA COMPRA REGISTRADA = ENABLE FALSE TAB GENERALES, ACTIVE TAB OC
If Not CveCompra > 0 Then
TabGenerales.Enabled = False
Tab.ActiveTabIndex = 2
UpTabs.Update()
End If
'CARGAMOS LOS DATOS DE LAS OC
Dim ObjOC As New ClsOC
Dim ArrayCveOC As String() = HdnVCveOC.Value.Split(New Char() {","c})
Dim FoliosOCAnticipo = "", FoliosOCAnticipoIE = ""
Dim StrPromos As New StringBuilder
For Each CveOCItem As String In ArrayCveOC.Distinct
If ObjOC.GetOrdenesDetalle(CveOCItem.ToEntero) AndAlso ObjOC.DtResultados.Rows.Count > 0 Then
If IsNothing(DTOCTemp) Then
DTOCTemp = ObjOC.DtResultados.Copy
Else
DTOCTemp.Merge(ObjOC.DtResultados)
End If
IvaAcumulado += ObjOC.DtResultados.Rows(0)("IVA").ToString.ToDouble
TextoObservaciones += ObjOC.DtResultados.Rows(0)("Descripcion").ToString
If ObjOC.DtResultados.Rows.Count > 0 Then
''MONEDA DIFERENTE
If ObjOC.DtResultados.Rows(0)("CveMoneda").ToString.ToEntero <> DdlMoneda.SelectedValue.ToEntero Then
DivTipoCambioOC.Visible = True
TxtTipoCambioOC.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString
BtnVincularOCCompleta.Visible = False
BtnVincularOC.Visible = False
End If
''SOLICITUD DE ANTICIPO
If ObjOC.DtResultados.Rows(0)("CveIEAnticipo").ToString.ToEntero > 0 Then
FoliosOCAnticipo += $"{ObjOC.DtResultados.Rows(0)("FolioOC").ToString},"
FoliosOCAnticipoIE += $"{ObjOC.DtResultados.Rows(0)("FolioIEAnticipo").ToString},"
DivOCSolicitudAnticipo.Visible = True
DivOCSolicitudAnticipoModal.Visible = True
End If
'PROMOCIONES
Dim Promocion = ObjOC.DtResultados.Rows(0)("Promocion").ToString
If Not String.IsNullOrEmpty(Promocion) Then
Dim FolioOC = ObjOC.DtResultados.Rows(0)("FolioOC").ToString
StrPromos.Append($"<b>OC #{FolioOC}</b> {Promocion} <br/> ")
StrPromos.AppendLine()
End If
End If
Else
Alert("Ocurrio un Error al cargar la(s) Orden(es) de Compra", TipoMensaje.MsgError)
If DTOCTemp IsNot Nothing Then DTOCTemp.Rows.Clear()
TextoObservaciones = ""
Exit Sub
End If
Next
ObjOC.Dispose()
'MOVIMIENTOS DE ALMACÉN
Dim ObjInventarios As New ClsInventarios
Dim FoliosOCAlmacen = ""
For Each CveOCItem As String In ArrayCveOC.Distinct
If ObjInventarios.GetMovimientosOC(CveOCItem.ToEntero, UsuarioActual.CveEmpresa) Then
If ObjInventarios.DtResultados.Rows.Count > 0 Then
FoliosOCAlmacen = $"{ObjInventarios.DtResultados.FiltroPrimeroValor("FolioOC")},"
End If
Else
Alert("Ocurrió un error al cargar los movimientos de almacén de la orden de compra", TipoMensaje.MsgError)
ObjInventarios.Dispose()
Exit Sub
End If
Next
ObjInventarios.Dispose()
If FoliosOCAlmacen.Length > 0 Then
DivOCAlmacen.Visible = True
LtOCAlmacen.Text = FoliosOCAlmacen.Substring(0, FoliosOCAlmacen.Length - 1)
End If
'SI PUEDE RECIBIR POR OC Y COMPRA
If UsuarioActual.CveEmpresa.Contiene(119) Then
If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 And Not UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then
DivOCVinculaInv.Visible = True
End If
End If
'TIPO CAMBIO
If CveCompra > 0 Then
DivTipoCambioOC.Visible = False
End If
DTOCTemp.Columns.Add("PUTC", GetType(Double))
DTOCTemp.Columns.Add("TotalTC", GetType(Double))
DTOCTemp.Columns.Add("DescuentoTC", GetType(Double))
DTOCTemp.Columns.Add("IVATC", GetType(Double))
DTOCTemp.Columns.Add("IEPSPSTC", GetType(Double))
DTOCTemp.Columns.Add("IEPSPSIVATC", GetType(Double))
DTOCTemp.Columns.Add("RetIVATC", GetType(Double))
DTOCTemp.Columns.Add("RetISRTC", GetType(Double))
For Each Dr As DataRow In DTOCTemp.Rows
Dr("PUTC") = Dr("Importe")
Dr("DescuentoTC") = Dr("Descuento")
Dr("IVATC") = Dr("IVA")
Dr("IEPSPSTC") = Dr("IEPSPS")
Dr("IEPSPSIVATC") = Dr("IEPSPSIVA")
Dr("RetIVATC") = Dr("RetIVA")
Dr("RetISRTC") = Dr("RetISR")
Dr("TotalTC") = Dr("ImporteAjustadoDescuento")
'[IPP] - JAMEntregaAdelantado | AJUSTE DE CANITDAD POR RECIBIR EN BASE A SALDOS DE INV-COMPRAS
'If UsuarioActual.CveUsuario = 100 Then
'If Dr("CveTipoPS").ToString.ToEntero = 2 And UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then
' Dr("CantidadDisponible") = If(Dr("CantidadDisponible").ToString.ToDouble > Dr("CantidadPendienteVincular").ToString.ToDouble, Dr("CantidadPendienteVincular"), Dr("CantidadDisponible"))
'End If
'End If
Next
'DESCRIPCION DE OC CUANDO NO ES COMPRA REGISTRADA
If Not CveCompra > 0 Then TxtDescripcion.Text = TextoObservaciones
'SOLICITUD DE ANTICIPO
If DivOCSolicitudAnticipo.Visible And FoliosOCAnticipo.Length > 0 Then
LtSolicitudAnticipoFoliosOC.Text = $"La(s) siguiente(s) OC: {FoliosOCAnticipo.Substring(0, FoliosOCAnticipo.Length - 1)}. tienen vinculado un anticipo"
LtSolicitudAnticipoFoliosIE.Text = $" {FoliosOCAnticipoIE.Substring(0, FoliosOCAnticipoIE.Length - 1)}"
End If
'PROMOCIONES
LtOCPromocion.Text = StrPromos.ToString
If LtOCPromocion.Text.Length > 0 And UsuarioActual.CveEmpresa = 119 Then
DivOCPromocion.Visible = True
End If
'CARGA DATOS DE OC
CargaVinculacionOC(True)
End If
End Sub
Protected Sub DdlOCVinculaInv_SelectedIndexChanged(sender As Object, e As EventArgs)
CargaVinculacionOC()
End Sub
Private Sub CargaVinculacionOC(Optional CargaInicial As Boolean = False)
'FILTRAMOS SOLO PENDIENTES POR SURTIR
DTOCGV = DTOCTemp.FiltraParametros("CantidadDisponible > 0", "CveOrdenCompra").Copy
'SI PUEDE RECIBIR POR OC Y COMPRA
If UsuarioActual.CveEmpresa.Contiene(119) Then
If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 And Not UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then
Select Case DdlOCVinculaInv.SelectedValue.ToEntero
Case 176
DTOCGV = DTOCGV.FiltraParametros("(EstatusInventario = 3 AND CveTipoPS = 2) OR CveTipoPS = 1")
Case 205
DTOCGV = DTOCGV.FiltraParametros("(EstatusInventario IN (1,2) AND CveTipoPS = 2) OR CveTipoPS = 1")
End Select
End If
End If
If DTOCGV.Rows.Count = 0 Then
Alert("La orden de compra no tiene nada pendiente por vincular. En caso de ser Entrega Directa por favor verifique el estatus de facturación.", TipoMensaje.MsgAdvertencia)
End If
CargaGvsOC()
CargaTotalesOC()
'Diferencia permitida $ entre OC y Compra
Dim DiferenciaPermitida = 1
'VINCULACION TOTAL
If CargaInicial And DivTipoCambioOC.Visible = False Then
If LbTotalOC1.Text = LbTotalOC2.Text AndAlso (UsuarioActual.CveEmpresa.Contiene(1, 4, 7, 11, 12, 48, 13, 66, 72, 80, 145)) AndAlso CveCompra <= 0 Then
BtnVincularOCCompleta.Visible = Not DivTipoCambioOC.Visible
Else
BtnVincularOCCompleta.Visible = False
End If
Else
If LbTotalOC1.Text = LbTotalOC2.Text AndAlso (UsuarioActual.CveEmpresa.Contiene(1, 4, 7, 11, 12, 48, 13, 66, 72, 80, 145)) AndAlso CveCompra <= 0 Then
BtnVincularOCCompleta.Visible = Not DivTipoCambioOC.Visible
Else
BtnVincularOCCompleta.Visible = False
End If
End If
UpOC.Update()
' If DdlOCVinculaInv.SelectedValue.ToEntero.Contiene(237, 240) Then CargaModalFletesImportaciones()
End Sub
Private Sub CargaTipoCentroCostoOC()
If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Then
GvOC1.Columns(5).HeaderText = "Sucursal"
ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then
GvOC1.Columns(5).HeaderText = "Proyecto"
ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 4 Then
GvOC1.Columns(5).HeaderText = "Sucursal <br/> Proyecto"
ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 5 Then
GvOC1.Columns(5).HeaderText = "Proyecto <br/> Sucursal"
End If
End Sub
Private Sub CargaGvsOC()
'SI ES MAS DE UNA OC ORDENA POR PRODUCTO
Dim ArrayCveOC As String() = HdnVCveOC.Value.Split(New Char() {","c})
DTOCGV = If(ArrayCveOC.Length > 1, DTOCGV.FiltraParametros("", "Producto"), DTOCGV)
CargaTipoCentroCostoOC()
GvOC1.DataSource = DTOCGV
GvOC1.DataBind()
Dim DTCVEOGV As DataTable = DTOCGV.FiltraParametros("", "", {"CveOrdenCompra"})
If DTCVEOGV.Rows.Count > 1 Then
GvOC1.Columns(0).Visible = True
Else
GvOC1.Columns(0).Visible = False
End If
Dim Cont As Integer = 0
For Each gvr As GridViewRow In GvOC1.Rows
RegistraScript($"CalculaTotalOCEdit('{gvr.DataKey("PS").Replace("'", "")}', {gvr.DataKey("CantidadDisponible").ToString.ToDouble}, {gvr.FCTextBox("TxtCantidad").ClientID}, {gvr.FCTextBox("TxtPU").ClientID}, {gvr.FCTextBox("TxtTotalOC1").ClientID}, {gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {gvr.DataKey("IVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IVA").ClientID},{gvr.DataKey("RetIVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetIVA").ClientID},{gvr.DataKey("RetISR").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetISR").ClientID},{gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSIVA").ClientID},{gvr.DataKey("Descuento")},{gvr.FCHiddenField("HdnOC1Descuento").ClientID},{gvr.DataKey("IVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetIVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetISRPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSIVAPorcentaje").ToString.ToDouble});", $"Gv{Cont}")
Cont += 1
Next
UpGvOC1.Update()
TmpDT = TmpDT.FiltraParametros("", "PU")
GvOC2.DataSource = TmpDT
GvOC2.DataBind()
UpGvOC2.Update()
End Sub
Protected Sub GvOC1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvOC1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim JSCambiaScript = $"CalculaTotalOCEdit('{e.Row.DBCampo("PS").Replace("'", "")}', {e.Row.DBCampo("CantidadDisponible").ToString.ToDouble}, {e.Row.FCTextBox("TxtCantidad").ClientID}, {e.Row.FCTextBox("TxtPU").ClientID}, {e.Row.FCTextBox("TxtTotalOC1").ClientID}, {e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {e.Row.DBCampo("IVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IVA").ClientID},{e.Row.DBCampo("RetIVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetIVA").ClientID},{e.Row.DBCampo("RetISR").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetISR").ClientID},{e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSIVA").ClientID},{e.Row.DBCampo("Descuento")},{e.Row.FCHiddenField("HdnOC1Descuento").ClientID},{e.Row.DBCampo("IVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetIVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetISRPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSIVAPorcentaje").ToString.ToDouble});"
e.Row.FCTextBox("TxtCantidad").Attributes.Add("onkeyup", $"LimitaCantidadOC({e.Row.DBCampo("CantidadDisponible")}, this);{JSCambiaScript}")
e.Row.FCTextBox("TxtPU").Attributes.Add("onkeyup", JSCambiaScript)
e.Row.FCTextBox("TxtCantidad").Attributes.Add("onblur", $"ValidaImporteCero('{e.Row.DBCampo("PS").Replace("'", "")}',{e.Row.FCTextBox("TxtCantidad").ClientID}, {e.Row.FCTextBox("TxtPU").ClientID});")
e.Row.FCTextBox("TxtPU").Attributes.Add("onblur", $"ValidaImporteCero('{e.Row.DBCampo("PS").Replace("'", "")}',{e.Row.FCTextBox("TxtCantidad").ClientID}, {e.Row.FCTextBox("TxtPU").ClientID});")
RegistraScript(JSCambiaScript)
If e.Row.DataKey("FolioREQ").ToString.Trim.Length > 0 Then
Dim LblOC As Label = e.Row.FCLabel("LblOC")
LblOC.Attributes.Add("data-toggle", "tooltip")
LblOC.Attributes.Add("data-placement", "top")
LblOC.Attributes.Add("title", "REQ: " & e.Row.DataKey("FolioREQ").ToString)
End If
If e.Row.DBCampo("CveTipoPS").ToEntero = 2 And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then
Select Case e.Row.DBCampo("EstatusInventario").ToEntero
Case 1
e.Row.FCLabel("LbEstatusInv").Text = "<i Class='fa fa-flag-o' aria-hidden='true'></i>"
e.Row.FCLabel("LbEstatusInv").ForeColor = Drawing.Color.Red
Case 2
e.Row.FCLabel("LbEstatusInv").Text = "<i Class='fa fa-flag-checkered' aria-hidden='true'></i>"
e.Row.FCLabel("LbEstatusInv").ForeColor = Drawing.Color.DarkOrange
Case 3
e.Row.FCLabel("LbEstatusInv").Text = "<i Class='fa fa-flag' aria-hidden='true'></i>"
e.Row.FCLabel("LbEstatusInv").ForeColor = Drawing.Color.Green
Case Else
e.Row.FCLabel("LbEstatusInv").Text = "ERR"
End Select
ElseIf e.Row.DBCampo("CveTipoPS").ToEntero = 1 And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then
e.Row.FCLabel("LbEstatusInv").Text = "NA"
End If
If Version = "3.3" Then
CargaPSSAT(e.Row.FCDropDownLost("DdlSATPS"))
If e.Row.DBCampo("CveSATPS").ToEntero > 0 Then
e.Row.FCDropDownLost("DdlSATPS").SelectedValue = e.Row.DBCampo("CveSATPS")
e.Row.FCDropDownLost("DdlSATPS").SelectedText = $"{e.Row.DBCampo("SATClaveProductoServicio")}"
End If
End If
End If
End Sub
Private Sub CargaPSSAT(Objeto As ADServerControl.Dropdownlost)
Objeto.setEsWebService(True)
Objeto.ddlWS.Attributes.Add("data-metodo", "getpssat")
End Sub
Private Sub CargaTotalesOC()
Dim TotalOC = 0.0D
For Each gvr As GridViewRow In GvOC1.Rows
TotalOC += gvr.FCTextBox("TxtTotalOC1").Text.ToDecimal
Next
'SUBTOTAL OC
LbSubTotalOC1Mod.Text = (TotalOC + DTOCGV.SUM("Descuento")).FormatoNumero
LbSubTotalOC1.Text = (TotalOC + DTOCGV.SUM("Descuento")).FormatoNumero
'SUBTOTAL2 OC
LbSubTotal2OC1Mod.Text = TotalOC.FormatoNumero
LbSubTotal2OC1.Text = TotalOC.FormatoNumero
'IVA OC
LbIVAOC1Mod.Text = (DTOCGV.SUM("IVA").ToString.ToDouble + DTOCGV.SUM("IEPSPSIVA").ToString.ToDouble).FormatoNumero
LbIVAOC1.Text = (DTOCGV.SUM("IVA").ToString.ToDouble + DTOCGV.SUM("IEPSPSIVA").ToString.ToDouble).FormatoNumero
'DESCUENTO OC
LbDescuentoOC1Mod.Text = DTOCGV.SUM("Descuento").FormatoNumero
LbDescuentoOC1.Text = DTOCGV.SUM("Descuento").FormatoNumero
If LbDescuentoOC1.Text.ToDecimal > 0 Then
TrDescuentosOC1.Visible = True
End If
'IEPS OC
LbIEPSOCMod1.Text = DTOCGV.SUM("IEPSPS").FormatoNumero
LbIEPSOC1.Text = DTOCGV.SUM("IEPSPS").FormatoNumero
If LbIEPSOC1.Text.ToDecimal > 0 Then
TrIEPSOC1.Visible = True
End If
'RET IVA OC
LblRetIVAOC1Mod.Text = DTOCGV.SUM("RetIVA").ToString.FormatoNumero
LblRetIVAOC1.Text = DTOCGV.SUM("RetIVA").ToString.FormatoNumero
If LblRetIVAOC1.Text.ToDecimal > 0 Then
TrRetIVAOC1.Visible = True
End If
'RET ISR OC
LblRetISROC1Mod.Text = DTOCGV.SUM("RetISR").ToString.FormatoNumero
LblRetISROC1.Text = DTOCGV.SUM("RetISR").ToString.FormatoNumero
If LblRetISROC1.Text.ToDecimal > 0 Then
TrRetISROC1.Visible = True
End If
'TOTAL OC
TotalOC = TotalOC + LbIVAOC1.Text.ToDecimal + LbIEPSOC1.Text.ToDecimal - LblRetIVAOC1.Text.ToDecimal - LblRetISROC1.Text.ToDecimal
LbTotalOC1.Text = TotalOC.FormatoNumero
LbTotalOC1Mod.Text = TotalOC.FormatoNumero
'SUBTOTAL COMPRA
LbSubTotalOC2.Text = TxtSubTotal.Text
'SUBTOTAL2 COMPRA
LblSubTotal2OC2.Text = TxtSubTotal2.Text
'IVA COMPRA
LbIVAOC2.Text = TxtIVA.Text
'IEPS COMPRA
LbIEPSOC2.Text = TxtIEPS.Text
If LbIEPSOC2.Text.ToDecimal > 0 Then
TrIEPSOC2.Visible = True
End If
'DESCUENTO COMPRA
LblDescuentoOC2.Text = TxtDescuento.Text
If LblDescuentoOC2.Text.ToDecimal > 0 Then
TrDescuentosOC2.Visible = True
End If
'RET IVA COMPRA
LblRetIVAOC2.Text = TxtRetIVA.Text
If LblRetIVAOC2.Text.ToDecimal > 0 Then
TrRetIVAOC2.Visible = True
End If
'RET ISR COMPRA
LblRetISROC2.Text = TxtRetISR.Text
If LblRetISROC2.Text.ToDecimal > 0 Then
TrRetISROC2.Visible = True
End If
'ANTICIPOS COMPRA
Dim ImporteAnticipo As Decimal = 0
If ArrAnticipos.Count > 0 Then
For Each Ant As Anticipos In ArrAnticipos
ImporteAnticipo += Ant.Importe
Next
End If
If ImporteAnticipo > 0 Then
TrAnticiposOC.Visible = True
LbAnticiposOC2.Text = ImporteAnticipo.ToString.FormatoNumero
End If
'TOTAL COMPRA
LbTotalOC2.Text = (TxtTotal.Text.ToDouble - ImporteAnticipo).FormatoNumero
'LbTotalOC2.Text = TxtTotal.Text
RegistraScript("CalculaTotalesOC();")
End Sub
Protected Sub BtnVincularOC_Click(sender As Object, e As EventArgs)
'If DdlOCVinculaInv.SelectedValue.ToEntero = 237 And Not CveFlete > 0 Then Alert("Necesita vincular un flete si selecciona Factura de Flete", TipoMensaje.MsgAdvertencia) : Exit Sub
'If DdlOCVinculaInv.SelectedValue.ToEntero = 240 And Not CveImportacion > 0 Then Alert("Necesita vincular una Importación si selecciona Factura de Importación", TipoMensaje.MsgAdvertencia) : Exit Sub
Dim SubTotalGV = 0.0D
Dim SubTotalCompra = If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteSinImpuestos"), TmpDT.SUM("Total").ToString.ToDecimal)
Dim DiferenciaPermitida = 1
Dim Cont = 0
For Each gvr As GridViewRow In GvOC1.Rows
SubTotalGV += gvr.FCTextBox("TxtTotalOC1").Text.ToDecimal
If Cont = 0 Then DdlProveedorSucursal.SelectedValueExist(gvr.DataKey("CveProveedorSucursal").ToEntero())
Cont = 1
Next
If Math.Abs(SubTotalGV - SubTotalCompra) < DiferenciaPermitida Then
LbSubTotalDif.Visible = False
Vinculacion()
ElseIf Math.Abs(SubTotalGV - (SubTotalCompra - LbAnticiposOC2.Text.ToDecimal)) < DiferenciaPermitida Then
LbSubTotalDif.Visible = False
Vinculacion()
ElseIf Math.Abs(LbTotalOC1.Text.ToDecimal - (LbTotalOC2.Text.ToDecimal)) < DiferenciaPermitida Then
LbSubTotalDif.Visible = False
Vinculacion()
ElseIf Math.Abs(LbSubTotalOC2.Text.ToDecimal - (LbSubTotalOC1.Text.ToDecimal - LbAnticiposOC2.Text.ToDecimal)) < DiferenciaPermitida Then
LbSubTotalDif.Visible = False
Vinculacion()
Else
LbSubTotalDif.Visible = True
LbSubTotalDif.Text = (SubTotalCompra - SubTotalGV).FormatoNumero
Alert("Los SubTotales de la vinculación no coinciden. Rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia,,)
RegistraScript("CalculaTotalesOC();")
End If
UpEstatus.Update()
End Sub
Protected Sub BtnVincularOCCompleta_Click(sender As Object, e As EventArgs)
Vinculacion(True)
End Sub
Private Sub Vinculacion(Optional VinculacionCompleta As Boolean = False)
'SI PUEDE RECIBIR POR OC Y COMPRA
If UsuarioActual.CveEmpresa.Contiene(119) Then
If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 And Not UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then
If DdlOCVinculaInv.SelectedValue.ToEntero <= 0 Then
Alert("El campo <b>Tipo de recepción almacén</b> es necesario. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
If (HdnIEPSModificadoOC.Value.ToDecimal <> LbIEPSOC2.Text.ToDecimal) Then
Alert($"Hay una diferencia de IEPS entre la factura y la OC. Dif: {HdnIEPSModificadoOC.Value.ToDecimal - LbIEPSOC2.Text.ToDecimal}", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'PSCodigo DE XML IP
Dim DtTemporalXML = TmpDT.Copy
Dim IndexTmpOriginal = 0
'Borramos el TmpDT
CreaDTCompras()
'Iteramos el GridView de la OC
Dim dr As DataRow
Dim Index = 0
Dim MensajeCostoCero As New StringBuilder
Dim TotalRows As Integer = 0
For Each gvr As GridViewRow In GvOC1.Rows
If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Or VinculacionCompleta Then
TotalRows += 1
End If
Next
For Each gvr As GridViewRow In GvOC1.Rows
If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Or VinculacionCompleta Then
dr = DTOCGV.Rows(gvr.RowIndex)
Dim Cantidad As Decimal = gvr.FCTextBox("TxtCantidad").Text.ToDecimal 'dr("Cantidad").ToString.ToDouble
Dim CantidadF As Decimal = gvr.DataKey("CantidadF").ToString.ToDecimal 'dr("Cantidad").ToString.ToDouble
Dim CveUM As Integer = dr("CveUM").ToString.ToEntero
Dim UM As String = dr("UM").ToString
Dim CveClasificacion As Integer = dr("CveClasificacion").ToString.ToEntero
Dim Clasificacion As String = dr("Clasificacion").ToString
Dim CvePS As Integer = dr("CvePS").ToString.ToEntero
Dim PS As String = dr("PS").ToString
Dim CveTipoPS As Integer = dr("CveTipoPS").ToString.ToEntero
Dim CveSubProyectoContrato As String = dr("CveSubProyecto").ToString
Dim CveProyecto As String = dr("CveProyecto").ToString
Dim SubProyecto As String = dr("SubProyecto").ToString
Dim Proyecto As String = dr("Proyecto").ToString
Dim Obs As String = dr("Obs").ToString
Dim PU As Decimal = gvr.FCTextBox("TxtPU").Text.ToDecimal
Dim Total As Decimal = If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, Math.Round((gvr.FCTextBox("TxtCantidad").Text.ToDecimal * gvr.FCTextBox("TxtPU").Text.ToDecimal) - (TxtDescuento.Text.ToDouble / TotalRows).ToDecimal, 2), gvr.FCTextBox("TxtTotalOC1").Text.ToDecimal)
'Dim Total As Decimal = gvr.FCTextBox("TxtTotalOC1").Text.ToDecimal
'Dim IVA As Decimal = gvr.FCHiddenField("HdnOC1IVA").Value.ToDecimal
'Dim RetIVA As Double = gvr.FCHiddenField("HdnOC1RetIVA").Value.ToDecimal
'Dim RetISR As Double = gvr.FCHiddenField("HdnOC1RetISR").Value.ToDecimal
'Dim IEPSPS As Double = gvr.FCHiddenField("HdnOC1IEPSImporte").Value.ToDecimal
'Dim IEPSPSIVA As Double = gvr.FCHiddenField("HdnOC1IEPSIVA").Value.ToDecimal
Dim IVA As Decimal = dr("IVAPorcentaje").ToString.ToDecimal
Dim RetIVA As Double = dr("RetIVAPorcentaje").ToString.ToDecimal
Dim RetISR As Double = dr("RetISRPorcentaje").ToString.ToDecimal
Dim IEPSPS As Double = dr("IEPSPSPorcentaje").ToString.ToDecimal
Dim IEPSPSIVA As Double = dr("IEPSPSIVAPorcentaje").ToString.ToDecimal
Dim Descuento As Double = If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TxtDescuento.Text.ToDouble / TotalRows, gvr.FCHiddenField("HdnOC1Descuento").Value.ToDecimal)
'Dim Descuento As Double = gvr.FCHiddenField("HdnOC1Descuento").Value.ToDecimal
Dim CveOrdenCompraDetalle As Integer = dr("CveOrdenCompraDetalle").ToString.ToEntero
Dim EntregaDirecta As Integer = dr("EntregaDirecta").ToString.ToEntero
Dim CveSATPS As Integer = gvr.FCDropDownLost("DdlSATPS").SelectedValue.ToEntero
Dim CveTipoGasto As Integer = -1
Dim TipoGasto As String = ""
'[IPP] PROVISIONAL PARA TIPO GASTO
If GlobalDTTiposGastos(UsuarioActual.CveEmpresa) IsNot Nothing AndAlso GlobalDTTiposGastos(UsuarioActual.CveEmpresa).Rows.Count = 1 Then
Dim DrTipoGasto = GlobalDTTiposGastos(UsuarioActual.CveEmpresa).FiltroPrimero("")
If DrTipoGasto IsNot Nothing Then
CveTipoGasto = DrTipoGasto("CveTipoGasto").ToString.ToEntero
TipoGasto = DrTipoGasto("TipoGasto").ToString
End If
End If
AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, RetIVA, RetISR, IEPSPS, IEPSPSIVA, Descuento, CveOrdenCompraDetalle, False, CantidadF:=CantidadF, EntregaDirecta:=EntregaDirecta, CveSATPS:=CveSATPS, CveTipoGasto:=CveTipoGasto, TipoGasto:=TipoGasto)
'CARGA PE
Index = TmpDT.Rows.Count - 1
TmpDT.Rows(Index)("CvePresupuestoEgreso") = dr("CvePresupuestoEgreso").ToString.ToEntero
TmpDT.Rows(Index)("CveProgramaOperativo") = dr("CveProgramaOperativo").ToString.ToEntero
TmpDT.Rows(Index)("CveUnidadAdministrativa") = dr("CveUnidadAdministrativa").ToString.ToEntero
TmpDT.Rows(Index)("CveFuenteFinanciamiento") = dr("CveFuenteFinanciamiento").ToString.ToEntero
TmpDT.Rows(Index)("CveTipoGastoAC") = dr("CveTipoGasto").ToString.ToEntero
TmpDT.Rows(Index)("CveClasificacionOG") = dr("CveClasificacionOG").ToString.ToEntero
'TmpDT.Rows(Index)("PSCodigo") = DtTemporalXML.Rows(IndexTmpOriginal)("PSCodigo")
TmpDT.Rows(Index)("PSCodigo") = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimeroValor("PSCodigo", "").ToString
Dim CveAF As String = dr("CveActivoFijo").ToString
If CveAF <> "" AndAlso CveAF <> "-1" Then
TmpDT.Rows(Index)("CveActivoFijo") = CveAF.ToEntero
TmpDT.Rows(Index)("CodAF") = dr("CodigoAF").ToString
TmpDT.Rows(Index)("TipoAF") = 1
End If
'actualizo los movimientos registrados
DTOCGV.Rows(gvr.RowIndex)("CantidadDisponible") = Cantidad
DTOCGV.Rows(gvr.RowIndex)("Importe") = PU
DTOCGV.Rows(gvr.RowIndex)("Total") = Total
End If
IndexTmpOriginal += 1
Next
AddPS2(False)
'AJUSTE DE REDONDEO O DIFERENCIA PERMITIDA DE IMPORTE
AjustaImporteUltimoConcepto((If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteSinImpuestos"), TxtSubTotal2.Text.ToDouble) + TxtOtrosImpuestos.Text.ToDouble).ToDecimal - If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUM("ImporteSinImpuestos").ToString.ToDecimal, TmpDT.SUM("Total").ToString.ToDecimal))
'AjustaImporteUltimoConcepto(TxtSubTotal2.Text.ToDecimal + TxtOtrosImpuestos.Text.ToDecimal - (TmpDT.SUM("Total").ToString.ToDecimal))
BtnGuardar.Enabled = True
If Not CierrePeriodo Then
BtnGuardar.Visible = True
End If
AlmacenCambiaPS.Visible = False
UpFacturar.Update()
TabGenerales.Enabled = True
Tab.ActiveTabIndex = 0
UpTabs.Update()
ImgClasificacion.Visible = False
ImgSubProyecto.Visible = False
LbAgregar.Visible = False
OCVinculada = True
UpPSS.Update()
AsignaValoresOriginales(TxtSubTotal.Text.ToDouble, TxtSubTotal2.Text.ToDouble, TxtIVA.Text.ToDouble, TxtRetIVA.Text.ToDouble, TxtRetISR.Text.ToDouble, TxtTotal.Text.ToDouble)
If UsuarioActual.Empresa.Funcionalidad(562).ToEntero > 0 Then CargaGastosServicios(UsuarioActual.Empresa.Funcionalidad(562).ToEntero)
CargaGvInv()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
CargaGVsAF()
CargaTipoCentroCostoOC()
GvOC1.DataSource = DTOCGV
GvOC1.DataBind()
Dim DTCVEOCS As DataTable = DTOCGV.FiltraParametros("", "", {"CveOrdenCompra"})
If DTCVEOCS.Rows.Count > 1 Then
GvOC1.Columns(0).Visible = True
Else
GvOC1.Columns(0).Visible = False
End If
GvOC2.DataSource = TmpDT
GvOC2.DataBind()
LbSubTotalOC1.Text = LbSubTotalOC2.Text
LbSubTotal2OC1.Text = LblSubTotal2OC2.Text
LbIVAOC1.Text = LbIVAOC2.Text
LbIEPSOC1.Text = LbIEPSOC2.Text
LblRetIVAOC1.Text = LblRetIVAOC2.Text
LblRetISROC1.Text = LblRetISROC2.Text
LbDescuentoOC1.Text = LblDescuentoOC2.Text
LbTotalOC1.Text = LbTotalOC2.Text
UpGvOC1.Update()
'Bloquea cambio de proyecto
DdlProyecto.Enabled = False
DdlSubProyecto.Enabled = False
DdlAsignarProyecto.Enabled = False
DdlAsignaSubProyecto.Enabled = False
UPPProyecto.Update()
'Bloquea cambio de OC ya que se concluyo alguna vinculacion
TxtOC.Enabled = False
UpParametros.Update()
'VERIFICA PE
If UsuarioActual.Empresa.UsaAC Then
CompruebaAgregar()
End If
CargaGvPersonal()
'ANTICIPO OC
If DivOCSolicitudAnticipo.Visible Then
RegistraScript("MuestraAnticipos();", "MuestaAnticiposOC")
UpAnticipos.Update()
End If
CalculaTotales()
End Sub
Private Sub VinculacionAsync(Optional VinculacionCompleta As Boolean = False)
'LIMPIAMOS TMPDT
CreaDTCompras()
Dim tasks As New List(Of Task)()
For Each gvr As GridViewRow In GvOC1.Rows
If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Or VinculacionCompleta Then
tasks.Add(AgregaConceptoOC(DTOCGV.Rows(gvr.RowIndex), gvr))
End If
Next
Task.WaitAll(tasks.ToArray())
AddPS2(False)
'AJUSTE DE REDONDEO O DIFERENCIA PERMITIDA DE IMPORTE
AjustaImporteUltimoConcepto((TxtSubTotal2.Text.ToDouble - TmpDT.SUM("Total")).ToString.ToDecimal)
BtnGuardar.Enabled = True
If Not CierrePeriodo Then
BtnGuardar.Visible = True
End If
AlmacenCambiaPS.Visible = False
UpFacturar.Update()
TabGenerales.Enabled = True
Tab.ActiveTabIndex = 0
UpTabs.Update()
ImgClasificacion.Visible = False
ImgSubProyecto.Visible = False
LbAgregar.Visible = False
OCVinculada = True
UpPSS.Update()
AsignaValoresOriginales(TxtSubTotal.Text.ToDouble, TxtSubTotal2.Text.ToDouble, TxtIVA.Text.ToDouble, TxtRetIVA.Text.ToDouble, TxtRetISR.Text.ToDouble, TxtTotal.Text.ToDouble)
CargaGvInv()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
CargaGVsAF()
CargaTipoCentroCostoOC()
GvOC1.DataSource = DTOCGV
GvOC1.DataBind()
Dim DTCVEOCS As DataTable = DTOCGV.FiltraParametros("", "", {"CveOrdenCompra"})
If DTCVEOCS.Rows.Count > 1 Then
GvOC1.Columns(0).Visible = True
Else
GvOC1.Columns(0).Visible = False
End If
GvOC2.DataSource = TmpDT
GvOC2.DataBind()
LbSubTotalOC1.Text = LbSubTotalOC2.Text
LbSubTotal2OC1.Text = LblSubTotal2OC2.Text
LbIVAOC1.Text = LbIVAOC2.Text
LbIEPSOC1.Text = LbIEPSOC2.Text
LblRetIVAOC1.Text = LblRetIVAOC2.Text
LblRetISROC1.Text = LblRetISROC2.Text
LbDescuentoOC1.Text = LblDescuentoOC2.Text
LbTotalOC1.Text = LbTotalOC2.Text
UpGvOC1.Update()
'Bloquea cambio de proyecto
DdlProyecto.Enabled = False
DdlSubProyecto.Enabled = False
DdlAsignarProyecto.Enabled = False
DdlAsignaSubProyecto.Enabled = False
UPPProyecto.Update()
'Bloquea cambio de OC ya que se concluyo alguna vinculacion
TxtOC.Enabled = False
UpParametros.Update()
'VERIFICA PE
If UsuarioActual.Empresa.UsaAC Then
CompruebaAgregar()
End If
CargaGvPersonal()
'ANTICIPO OC
If DivOCSolicitudAnticipo.Visible Then
RegistraScript("MuestraAnticipos();", "MuestaAnticiposOC")
UpAnticipos.Update()
End If
CalculaTotales()
End Sub
Private Function AgregaConceptoOC(dr As DataRow, gvr As GridViewRow) As Task
Return Task.Factory.StartNew(Sub() AgregaConceptoOCHilo(dr, gvr))
End Function
Private Sub AgregaConceptoOCHilo(dr As DataRow, gvr As GridViewRow)
Dim Cantidad As Decimal = gvr.FCTextBox("TxtCantidad").Text.ToDecimal
Dim CantidadF As Decimal = gvr.DataKey("CantidadF").ToString.ToDecimal
Dim CveUM As Integer = dr("CveUM").ToString.ToEntero
Dim UM As String = dr("UM").ToString
Dim CveClasificacion As Integer = dr("CveClasificacion").ToString.ToEntero
Dim Clasificacion As String = dr("Clasificacion").ToString
Dim CvePS As Integer = dr("CvePS").ToString.ToEntero
Dim PS As String = dr("PS").ToString
Dim CveTipoPS As Integer = dr("CveTipoPS").ToString.ToEntero
Dim CveSubProyectoContrato As String = dr("CveSubProyecto").ToString
Dim CveProyecto As String = dr("CveProyecto").ToString
Dim SubProyecto As String = dr("SubProyecto").ToString
Dim Proyecto As String = dr("Proyecto").ToString
Dim Obs As String = dr("Obs").ToString
Dim PU As Decimal = gvr.FCTextBox("TxtPU").Text.ToDecimal
Dim Total As Decimal = gvr.FCTextBox("TxtTotalOC1").Text.ToDecimal
Dim IVA As Decimal = dr("IVAPorcentaje").ToString.ToDecimal
Dim RetIVA As Double = dr("RetIVAPorcentaje").ToString.ToDecimal
Dim RetISR As Double = dr("RetISRPorcentaje").ToString.ToDecimal
Dim IEPSPS As Double = dr("IEPSPSPorcentaje").ToString.ToDecimal
Dim IEPSPSIVA As Double = dr("IEPSPSIVAPorcentaje").ToString.ToDecimal
Dim Descuento As Double = gvr.FCHiddenField("HdnOC1Descuento").Value.ToDecimal
Dim CveOrdenCompraDetalle As Integer = dr("CveOrdenCompraDetalle").ToString.ToEntero
Dim EntregaDirecta As Integer = dr("EntregaDirecta").ToString.ToEntero
Dim CveSATPS As Integer = gvr.FCDropDownLost("DdlSATPS").SelectedValue.ToEntero
Dim CveTipoGasto As Integer = -1
Dim TipoGasto As String = ""
'[IPP] PROVISIONAL PARA TIPO GASTO
If GlobalDTTiposGastos(UsuarioActual.CveEmpresa) IsNot Nothing AndAlso GlobalDTTiposGastos(UsuarioActual.CveEmpresa).Rows.Count = 1 Then
Dim DrTipoGasto = GlobalDTTiposGastos(UsuarioActual.CveEmpresa).FiltroPrimero("")
If DrTipoGasto IsNot Nothing Then
CveTipoGasto = DrTipoGasto("CveTipoGasto").ToString.ToEntero
TipoGasto = DrTipoGasto("TipoGasto").ToString
End If
End If
'AGREGA PS
Dim IndexVinculacionOC = AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, RetIVA, RetISR, IEPSPS, IEPSPSIVA, Descuento, CveOrdenCompraDetalle, False, CantidadF:=CantidadF, EntregaDirecta:=EntregaDirecta, CveSATPS:=CveSATPS, CveTipoGasto:=CveTipoGasto, TipoGasto:=TipoGasto)
'CARGA PE
TmpDT.Rows(IndexVinculacionOC)("CvePresupuestoEgreso") = dr("CvePresupuestoEgreso").ToString.ToEntero
TmpDT.Rows(IndexVinculacionOC)("CveProgramaOperativo") = dr("CveProgramaOperativo").ToString.ToEntero
TmpDT.Rows(IndexVinculacionOC)("CveUnidadAdministrativa") = dr("CveUnidadAdministrativa").ToString.ToEntero
TmpDT.Rows(IndexVinculacionOC)("CveFuenteFinanciamiento") = dr("CveFuenteFinanciamiento").ToString.ToEntero
TmpDT.Rows(IndexVinculacionOC)("CveTipoGastoAC") = dr("CveTipoGasto").ToString.ToEntero
TmpDT.Rows(IndexVinculacionOC)("CveClasificacionOG") = dr("CveClasificacionOG").ToString.ToEntero
TmpDT.Rows(IndexVinculacionOC)("PSCodigo") = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimeroValor("PSCodigo", "").ToString
Dim CveAF As String = dr("CveActivoFijo").ToString
If CveAF <> "" AndAlso CveAF <> "-1" Then
TmpDT.Rows(IndexVinculacionOC)("CveActivoFijo") = CveAF.ToEntero
TmpDT.Rows(IndexVinculacionOC)("CodAF") = dr("CodigoAF").ToString
TmpDT.Rows(IndexVinculacionOC)("TipoAF") = 1
End If
'actualizo los movimientos registrados
DTOCGV.Rows(gvr.RowIndex)("CantidadDisponible") = Cantidad
DTOCGV.Rows(gvr.RowIndex)("Importe") = PU
DTOCGV.Rows(gvr.RowIndex)("Total") = Total
End Sub
Protected Sub BtnTipoCambioOC_Click(sender As Object, e As EventArgs)
If TxtTipoCambioOC.Text.ToDecimal = 0 Then
Alert("El tipo de cambio debe ser mayor a cero. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
For Each Dr As DataRow In DTOCTemp.Rows
'OC - COMPRA
'DOLARES A PESOS
If DdlMoneda.SelectedValue.ToEntero = 1 Then
Dr("Importe") = Dr("PUTC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
Dr("Descuento") = Dr("DescuentoTC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
Dr("IVA") = Dr("IVATC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
Dr("IEPSPS") = Dr("IEPSPSTC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
Dr("IEPSPSIVA") = Dr("IEPSPSIVATC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
Dr("RetIVA") = Dr("RetIVATC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
Dr("RetISR") = Dr("RetISRTC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
Dr("ImporteAjustadoDescuento") = Dr("TotalTC").ToString.ToDecimal * TxtTipoCambioOC.Text.ToDecimal
End If
'OC - COMPRA
'PESOS A DOLARES
If DdlMoneda.SelectedValue.ToEntero = 2 Then
Dr("Importe") = Dr("PUTC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
Dr("Descuento") = Dr("DescuentoTC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
Dr("IVA") = Dr("IVATC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
Dr("IEPSPS") = Dr("IEPSPSTC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
Dr("IEPSPSIVA") = Dr("IEPSPSIVATC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
Dr("RetIVA") = Dr("RetIVATC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
Dr("RetISR") = Dr("RetISRTC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
Dr("ImporteAjustadoDescuento") = Dr("TotalTC").ToString.ToDecimal / TxtTipoCambioOC.Text.ToDecimal
End If
Dr.AcceptChanges()
Next
TipoCambioOC = TxtTipoCambioOC.Text.ToDecimal
BtnVincularOC.Visible = True
CargaVinculacionOC()
End Sub
Protected Sub BtnDividirCompra_Click(sender As Object, e As EventArgs)
Dim Cantidad = CType(CType(sender, Button).NamingContainer, GridViewRow).FCTextBox("TxtDividir").Text.ToDouble
If Cantidad < 0.1 Then
Exit Sub
End If
Dim dr = TmpDT.Rows(CType(CType(sender, Button).NamingContainer, GridViewRow).RowIndex)
Dim drNuevo = TmpDT.NewRow
drNuevo.ItemArray = dr.ItemArray
drNuevo("Cantidad") = Cantidad
drNuevo("Total") = drNuevo("Cantidad").ToString.ToEntero * drNuevo("PU").ToString.ToDouble
dr("Cantidad") = dr("Cantidad").ToString.ToEntero - Cantidad
dr("Total") = dr("Cantidad").ToString.ToEntero * dr("PU").ToString.ToDouble
TmpDT.Rows.InsertAt(drNuevo, CType(CType(sender, Button).NamingContainer, GridViewRow).RowIndex)
If TxtOC.Text.Trim <> "" Then
'If EmpresasOC.Contains(UsuarioActual.CveEmpresa) Then
' GvOC1.DataSource = TmpDT
' GvOC1.DataBind()
' UpGvOC1.Update()
'Else
GvOC2.DataSource = TmpDT
GvOC2.DataBind()
UpGvOC2.Update()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
'End If
Else
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
End If
CargaGvInv()
End Sub
Protected Sub BtnAlertaPUCero_Click(sender As Object, e As EventArgs)
Dim Argumentos = HdnAlertaPUCero.Value.Split("|"c)
Dim PS = Argumentos(0)
Dim Cantidad = Argumentos(1)
'Alert($"El concepto tiene especificada una cantidad pero con costo de cero ($0).<br/<> br /<> b > En caso de vincular la OC de esta manera la cantidad especificada sera considerada como recibida.</b> <br/><br/> De ser correcto Continue o de lo contrario rectifique.", TipoMensaje.MsgAdvertencia)
Alert($"El concepto <b>{PS}</b> tiene especificada la cantidad <b>{Cantidad}</b> pero un costo de cero ($0). <br/><br/> <b>En caso de vincular la OC de esta manera la cantidad especificada sera considerada como recibida.</b> <br/><br/> De ser correcto Continue o de lo contrario rectifique.", TipoMensaje.MsgAdvertencia)
End Sub
#End Region
#Region "F L E T E S Y S E R V I C I O S"
Public Sub CreaDTFacturas()
Dim dt As New DataTable
dt.Columns.Add("CveCompra", Type.GetType("System.Int32"))
dt.Columns.Add("Folio", Type.GetType("System.String"))
dt.Columns.Add("Fecha", Type.GetType("System.String"))
DtFacturas = dt
End Sub
Public Sub CreaDTServicios()
Dim dt As New DataTable
dt.Columns.Add("Total", Type.GetType("System.Double"))
dt.Columns.Add("PS", Type.GetType("System.String"))
dt.Columns.Add("Consec", Type.GetType("System.Int32"))
dt.Columns.Add("CvePS", Type.GetType("System.Int32"))
DtServicios = dt
End Sub
Protected Sub LbServicios_Click(sender As Object, e As EventArgs)
RegistraScript("$('#DivFletesYServicios').modal();")
CreaDTFacturas()
CreaDTServicios()
End Sub
Protected Sub BtnFiltrar_Click(sender As Object, e As EventArgs)
If DdlTipo.SelectedValue.ToEntero = 1 Then
'POR SI LLEGARA A TRONAR
If DtServicios Is Nothing Then CreaDTServicios()
DtServicios.Rows.Clear()
Dim objps As New ClsProductosServicios
Dim dr As DataRow
dvFacturas.Visible = False
GvFacturas.Visible = False
For Each DrGv As DataRow In TmpDT.Rows
If DrGv("CvePS").ToString.ToEntero > 0 Then
If objps.GetPS(DrGv("CvePS").ToString.ToEntero, -1, UsuarioActual.CveEmpresa) Then
If objps.DtResultados(0)("CveTipoPS").ToString.ToEntero = 1 Then
dr = DtServicios.NewRow()
dr("Consec") = DrGv("Consec").ToString.ToEntero
dr("Total") = DrGv("Total").ToString.ToDecimal
dr("CvePS") = DrGv("CvePS").ToString.ToEntero
dr("PS") = DrGv("PS").ToString
DtServicios.Rows.Add(dr)
End If
End If
End If
Next
'[IPP] COMENTADO - MIRAS DE ELIMINAR - 8/FEBRERO/2018
'For Each gvr As GridViewRow In GvPS.Rows
' If objps.GetPS(gvr.DataKey("CvePS").ToEntero, -1, UsuarioActual.CveEmpresa) Then
' If objps.DtResultados(0)("CveTipoPS").ToString.ToEntero = 1 Then
' dr = DtServicios.NewRow()
' dr("Consec") = gvr.FCLabel("LtlConsecutivo").Text.ToEntero
' dr("Total") = gvr.FCLiteral("LtlTotal").Text.ToDecimal
' dr("PS") = gvr.DataKey("PS").ToString
' DtServicios.Rows.Add(dr)
' End If
' End If
'Next
objps.Dispose()
If DtServicios.Rows.Count > 0 Then
GVServicios.DataSource = DtServicios
GVServicios.DataBind()
GVServicios.Visible = True
Else
GVServicios.DataSource = Nothing
GVServicios.DataBind()
End If
UpGVServicios.Update()
UpFacturas.Update()
UPGVFacturas.Update()
ElseIf DdlTipo.SelectedValue.ToEntero = 2 Then
GVServicios.Visible = False
dvFacturas.Visible = True
DdlProveedores.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
DdlProveedores.DataBind()
DdlProveedores.Items.Insert(0, New ListItem("Seleccione", "-1"))
UpFacturas.Update()
UpGVServicios.Update()
End If
End Sub
Public Sub btnAgregarFlete_Click(sender As Object, e As EventArgs) Handles BtnAgregarFlete.Click
Dim ListaConsecutivas As New List(Of String) 'Almacena los consecutivos que pertenecen al almacen
Dim CostoIndirectoTotal As Decimal = 0 'Suma los costos indirectos calculados
Dim IndiceFila As Integer = 0 'Alamcena la fila actual iterada del TmpDT
Dim IndiceActualizar As Integer = -1 'Almacena el ultimo indice perteneciente a Almacen
TotalFlete = 0
TotalAlmacen = 0
'Obtenemos el total del flete y marcamos los conceptos que pertenecen a flete
For Each gvr As GridViewRow In GVServicios.Rows
If gvr.FCCheckBox("chkServicios").Checked Then
Dim Dtr As DataRow = TmpDT.Select($"Consec = {gvr.FCLabel("LblConsec").Text.ToEntero}")(0)
Dtr("AplicaCostoIndirecto") = 1
TotalFlete += Math.Round(gvr.FCLiteral("LtlTotalmodal").Text.ToDecimal, 2)
End If
Next
'Obtenemos el total del almacen y guardamos las consecutivas pertenecientes al mismo
For Each Dr As DataRow In DtInv.Rows
TotalAlmacen += Math.Round(Dr("Total").ToString.ToDecimal, 2)
ListaConsecutivas.Add(Dr("Consec").ToString)
Next
'Asignamos los costos indirectos y los indices
For Each Drt As DataRow In TmpDT.Rows
If ListaConsecutivas.Contains(Drt("Consec").ToString) Then
Dim CostoIndirecto As Decimal = CalculaCostoIndirectoFlete(Drt("Total").ToString.ToDecimal)
CostoIndirectoTotal += CostoIndirecto
Drt("CostoIndirectoAlmacen") = CostoIndirecto
Drt("OtrosGastos") = CostoIndirecto
IndiceActualizar = IndiceFila
End If
IndiceFila += 1
Next
'Si los costosindirectos no suman el total exacto del flete ajustamos el ultimo concepto
If CostoIndirectoTotal <> TotalFlete AndAlso IndiceActualizar >= 0 Then
Dim Diferencia = TotalFlete - CostoIndirectoTotal
TmpDT.Rows(IndiceActualizar)("CostoIndirectoAlmacen") = TmpDT.Rows(IndiceActualizar)("CostoIndirectoAlmacen").ToString.ToDouble + Diferencia
TmpDT.Rows(IndiceActualizar)("OtrosGastos") = TmpDT.Rows(IndiceActualizar)("OtrosGastos").ToString.ToDouble + Diferencia
End If
TmpDT.AcceptChanges()
CargaGvInv()
DdlTipoCompra.SelectedValueExist("8")
UpEstatus.Update()
''Marcamos todos los almacenes como check
'GvInv.HeaderRow.FCCheckBox("cbAll").Checked = True
'cbAll_CheckedChanged(Nothing, Nothing)
End Sub
Private Sub CargaGastosServicios(CvePS As Integer)
'POR SI LLEGARA A TRONAR
If DtServicios Is Nothing Then CreaDTServicios()
DtServicios.Rows.Clear()
Dim objps As New ClsProductosServicios
Dim dr As DataRow
dvFacturas.Visible = False
GvFacturas.Visible = False
For Each DrGv As DataRow In TmpDT.Rows
If DrGv("CvePS").ToString.ToEntero > 0 Then
If objps.GetPS(DrGv("CvePS").ToString.ToEntero, -1, UsuarioActual.CveEmpresa) Then
If objps.DtResultados IsNot Nothing AndAlso objps.DtResultados.Rows.Count > 0 AndAlso objps.DtResultados(0)("CveTipoPS").ToString.ToEntero = 1 Then
dr = DtServicios.NewRow()
dr("Consec") = DrGv("Consec").ToString.ToEntero
dr("Total") = DrGv("Total").ToString.ToDecimal
dr("CvePS") = DrGv("CvePS").ToString.ToEntero
dr("PS") = DrGv("PS").ToString
DtServicios.Rows.Add(dr)
End If
End If
End If
Next
'[IPP] COMENTADO - MIRAS DE ELIMINAR - 8/FEBRERO/2018
'For Each gvr As GridViewRow In GvPS.Rows
' If objps.GetPS(gvr.DataKey("CvePS").ToEntero, -1, UsuarioActual.CveEmpresa) Then
' If objps.DtResultados(0)("CveTipoPS").ToString.ToEntero = 1 Then
' dr = DtServicios.NewRow()
' dr("Consec") = gvr.FCLabel("LtlConsecutivo").Text.ToEntero
' dr("Total") = gvr.FCLiteral("LtlTotal").Text.ToDecimal
' dr("PS") = gvr.DataKey("PS").ToString
' DtServicios.Rows.Add(dr)
' End If
' End If
'Next
objps.Dispose()
If DtServicios.Rows.Count > 0 Then
GVServicios.DataSource = DtServicios
GVServicios.DataBind()
GVServicios.Visible = True
Else
GVServicios.DataSource = Nothing
GVServicios.DataBind()
End If
UpGVServicios.Update()
UpFacturas.Update()
UPGVFacturas.Update()
Dim ListaConsecutivas As New List(Of String) 'Almacena los consecutivos que pertenecen al almacen
Dim CostoIndirectoTotal As Decimal = 0 'Suma los costos indirectos calculados
Dim IndiceFila As Integer = 0 'Alamcena la fila actual iterada del TmpDT
Dim IndiceActualizar As Integer = -1 'Almacena el ultimo indice perteneciente a Almacen
TotalFlete = 0
TotalAlmacen = 0
'Obtenemos el total del flete y marcamos los conceptos que pertenecen a flete
For Each gvr As GridViewRow In GVServicios.Rows
If gvr.DataKey("CvePS").ToEntero = CvePS Or gvr.FCCheckBox("chkServicios").Checked Then
Dim Dtr As DataRow = TmpDT.Select($"Consec = {gvr.FCLabel("LblConsec").Text.ToEntero}")(0)
Dtr("AplicaCostoIndirecto") = 1
TotalFlete += Math.Round(gvr.FCLiteral("LtlTotalmodal").Text.ToDecimal, 2)
gvr.FCCheckBox("chkServicios").Checked = True
End If
Next
UpGVServicios.Update()
If Not TotalFlete > 0 Then Exit Sub
'Obtenemos el total del almacen y guardamos las consecutivas pertenecientes al mismo
For Each Dr2 As DataRow In DtInv.Rows
TotalAlmacen += Math.Round(Dr2("Total").ToString.ToDecimal, 2)
ListaConsecutivas.Add(Dr2("Consec").ToString)
Next
'Asignamos los costos indirectos y los indices
For Each Drt As DataRow In TmpDT.Rows
If ListaConsecutivas.Contains(Drt("Consec").ToString) Then
Dim CostoIndirecto As Decimal = CalculaCostoIndirectoFlete(Drt("Total").ToString.ToDecimal)
CostoIndirectoTotal += CostoIndirecto
Drt("CostoIndirectoAlmacen") = CostoIndirecto
Drt("OtrosGastos") = CostoIndirecto
IndiceActualizar = IndiceFila
End If
IndiceFila += 1
Next
'Si los costosindirectos no suman el total exacto del flete ajustamos el ultimo concepto
If CostoIndirectoTotal <> TotalFlete AndAlso IndiceActualizar >= 0 Then
Dim Diferencia = TotalFlete - CostoIndirectoTotal
TmpDT.Rows(IndiceActualizar)("CostoIndirectoAlmacen") = TmpDT.Rows(IndiceActualizar)("CostoIndirectoAlmacen").ToString.ToDouble + Diferencia
TmpDT.Rows(IndiceActualizar)("OtrosGastos") = TmpDT.Rows(IndiceActualizar)("OtrosGastos").ToString.ToDouble + Diferencia
End If
TmpDT.AcceptChanges()
CargaGvInv()
DdlTipoCompra.SelectedValueExist("8")
UpEstatus.Update()
''Marcamos todos los almacenes como check
'GvInv.HeaderRow.FCCheckBox("cbAll").Checked = True
'cbAll_CheckedChanged(Nothing, Nothing)
End Sub
Protected Sub GVServicios_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVServicios.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim TmpDr As DataRow = TmpDT.Select($"Consec = {e.Row.FCLabel("LblConsec").Text}")(0)
If TmpDr("AplicaCostoIndirecto").ToString = "1" Then
e.Row.FCCheckBox("chkServicios").Checked = True
e.Row.FCCheckBox("chkServicios").Enabled = Not CveCompra > 0
End If
End If
End Sub
Private Function CalculaCostoIndirectoFlete(ImporteAlmacen As Decimal) As Decimal
Dim CostoIndirecto As Decimal
CostoIndirecto = (ImporteAlmacen * TotalFlete) / TotalAlmacen
Return Math.Round(CostoIndirecto, 2)
End Function
Protected Sub BtnAgregaFactura_Click(sender As Object, e As EventArgs)
Dim ObjComp As New ClsCompras
If ObjComp.GetCompras(DdlFacturas.SelectedValue.ToEntero, "-1", DdlFacturas.SelectedItem.ToString, -1, -1, 1) Then
Dim dr As DataRow = DtFacturas.NewRow()
dr("CveCompra") = ObjComp.DtResultados(0)("CveCompra").ToString
dr("Folio") = ObjComp.DtResultados(0)("Folio").ToString
dr("Fecha") = ObjComp.DtResultados(0)("Fecha").ToString.ToDate.ToString("dd/MM/yyyy")
DtFacturas.Rows.Add(dr)
If GvFacturas.Visible = False Then
GvFacturas.Visible = True
End If
GvFacturas.DataSource = DtFacturas
GvFacturas.DataBind()
Else
Alert("No se encontró la factura", TipoMensaje.MsgAdvertencia)
End If
UPGVFacturas.Update()
ObjComp.Dispose()
End Sub
Protected Sub DdlProveedores_SelectedIndexChanged(sender As Object, e As EventArgs)
CargarFacturas()
End Sub
Private Sub CargarFacturas()
Dim objCompras As New ClsCompras
If objCompras.GetCompras(-1, "-1", "-1", DdlProveedores.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then
DdlFacturas.DataSource = objCompras.DtResultados
Else
DdlFacturas.DataSource = Nothing
Alert("No se encontraron folios con el proveedor seleccionado.", TipoMensaje.MsgAdvertencia)
End If
DdlFacturas.DataBind()
DdlFacturas.Items.Insert(0, New ListItem("Seleccione", "-1"))
objCompras.Dispose()
End Sub
Protected Sub GvFacturas_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvFacturas.RowDeleting
DtFacturas.Rows.RemoveAt(e.RowIndex)
GvFacturas.DataSource = DtFacturas
GvFacturas.DataBind()
UPGVFacturas.Update()
UpFacturas.Update()
End Sub
Public Sub ValidaFletesServicios()
If Not UsuarioActual.Empresa.Funcionalidad(562).ToEntero > 0 Then
dvFacturas.Visible = False
GvFacturas.Visible = False
GVServicios.Visible = False
End If
If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.CvePlataforma <> 2 Then
liServicios.Visible = True
liFletesImportaciones.Visible = True
End If
End Sub
Public Function AplicarCostoIndirecto(ObjInv As ClsInventarios, ObjCompras As ClsCompras) As Boolean
Return False
Dim HayError As Boolean
Dim dtTemporal As New DataTable
dtTemporal = Nothing
If GvFacturas.Visible AndAlso GvFacturas.Rows.Count > 0 Then
Dim IdCompras = New List(Of Integer)
Dim TotalServicios As Decimal = 0
TotalServicios = TxtSubTotal.Text.ToString.ToDecimal
If TotalServicios > 0 Then
For Each row As GridViewRow In GvFacturas.Rows
IdCompras.Add(row.DataKey("CveCompra").ToEntero)
Next
For Each value As Integer In IdCompras
If ObjInv.GetMovimientosDetalle(-1, UsuarioActual.CveEmpresa, value) AndAlso ObjInv.DtResultados.Rows.Count > 0 Then
If dtTemporal Is Nothing Then
dtTemporal = ObjInv.DtResultados
Else
dtTemporal.Merge(ObjInv.DtResultados)
End If
End If
Next
'Dim DtProductos As New DataTable
' DtProductos = ObjInv.DtResultados.DefaultView.ToTable(True, "CveMovimiento", "CvePS", "Cantidad", "PU", "Total")
'Dim total As Decimal = 0
'For Each row As DataRow In DtProductos.Rows
' total = total + row("Total").ToString.ToDecimal
'Next
'If total > 0 Then
If dtTemporal IsNot Nothing Then
Dim TotalFacturas = dtTemporal.SUM("Total").ToString.ToDecimal
For Each row As DataRow In dtTemporal.Rows
Dim prorrateo As Decimal
prorrateo = (row("PU").ToString.ToDecimal * TotalServicios) / TotalFacturas
If Not ObjInv.UpdateCostoIndirectoMovimientoDetalle(row("CveMovimientoDetalle").ToString.ToEntero, prorrateo) Then
HayError = True
Exit For
End If
Next
End If
Else
Alert("El total de los servicios a vincular debe ser mayor a $0.00", TipoMensaje.MsgError)
Return True
End If
ElseIf GVServicios.Visible AndAlso GVServicios.Rows.Count > 0 Then
Dim Dtcompra As New DataTable
Dim TotalServicios As Decimal = 0
Dim chk As Boolean = False
For Each gvr As GridViewRow In GVServicios.Rows
If gvr.FCCheckBox("chkServicios").Checked Then
TotalServicios += gvr.FCLiteral("LtlTotalmodal").Text.ToDecimal
chk = True
End If
Next
If chk = False Then
Alert("Debe Seleccionar un Servicio", TipoMensaje.MsgInformacion)
Return False
Else
If ObjCompras.GetCompraDetalle(CveCompra) Then
If ObjInv.GetMovimientosDetalle(-1, UsuarioActual.CveEmpresa, CveCompra) Then
Dtcompra = ObjInv.DtResultados
Dim TotalProductos = Dtcompra.SUM("Total").ToString.ToDecimal
If TotalProductos > 0 Then
For Each row As DataRow In Dtcompra.Rows
Dim prorrateo As Decimal
prorrateo = (row("PU").ToString.ToDecimal * TotalServicios) / TotalProductos
If Not ObjInv.UpdateCostoIndirectoMovimientoDetalle(row("CveMovimientoDetalle").ToString.ToEntero, prorrateo) Then
HayError = True
Exit For
End If
Next
Else
Alert("No existen productos de inventario en esta factura", TipoMensaje.MsgError)
End If
End If
End If
End If
Else
Return False
End If
If HayError = True And ObjInv IsNot Nothing Then
Alert("Ocurrió un error al vincular un flete o servicio")
HayError = True
End If
Return HayError
End Function
Protected Sub BtnCancelar_Click(sender As Object, e As EventArgs)
'dvFacturas.Visible = False
'GvFacturas.Visible = False
'GVServicios.Visible = False
'UpFacturas.Update()
'UPGVFacturas.Update()
'UpGVServicios.Update()
End Sub
Protected Sub DdlTipoComprobante_SelectedIndexChanged(sender As Object, e As EventArgs)
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then
If DdlTipoComprobante.SelectedValue = "NC" Then
DivReembolso.Visible = False
RBLPago.Items(2).Enabled = False
Else
DivReembolso.Visible = True
RBLPago.Items(2).Enabled = True
End If
ImgAnticiposPendientes.Visible = False
End If
UPCondicionesPago.Update()
End Sub
#Region " ENVIA CORREO NOTICIACION - VENDEDOR "
Private Sub MandaCorreoOCVendedores(CveCompra As Integer)
'SI NO TIENE FUNCIONALIDAD DATOS DE VENTA EN OC
If Not UsuarioActual.Empresa.Funcionalidad(108) = "1" Then
Exit Sub
End If
Dim DTCorreos As New DataTable
Dim DTMovimientos As New DataTable
Dim strBody As New StringBuilder
Dim Asunto, Para, ArrayCC, Body As String
Dim ObjOC As New ClsOC
ObjOC.GetOrdenesCompraCorreo(CveCompra)
DTCorreos = ObjOC.DtResultados
ObjOC.GetOrdenesCompraMovimiento(CveCompra)
DTMovimientos = ObjOC.DtResultados
ObjOC.Dispose()
For Each row As DataRow In DTCorreos.Rows
strBody.Clear()
'SI DE UNA OC DE LA COMPRA NO SE RECIBIÓ NADA NO MANDA CORREO
If DTMovimientos.FiltraParametros($"CveOrdenCompra = {row("CveOrdenCompra")}").Rows.Count = 0 Then
Continue For
End If
strBody.Append("<html xmlns=""http: //www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" * {")
strBody.Append(" font-family: Verdana; ")
strBody.Append(" }")
strBody.Append(" body { ")
strBody.Append(" padding: 0px;")
strBody.Append(" margin: 0px; ")
strBody.Append(" } ")
strBody.Append(" p {")
strBody.Append(" font-size: 14px;")
strBody.Append(" }")
strBody.Append(" /*ESTILOS ESTANDAR DE TABLA*/")
strBody.Append(" table {")
strBody.Append(" font-size: 12px;")
strBody.Append(" }")
strBody.Append(" table tr{")
strBody.Append(" height:20px;")
strBody.Append(" }")
strBody.Append(" table .thead{")
strBody.Append(" background-color:#dddddd;")
strBody.Append(" text-align:center;")
strBody.Append(" vertical-align:middle;")
strBody.Append(" }")
strBody.Append(" table .tbody{")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" }")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body>")
strBody.Append(" <h3> Vinculación de orden de compra a factura </h3>")
strBody.Append(" <p class=""mensaje"">")
strBody.AppendFormat(" Se ha vinculado la OC # <b>{0}</b> {1}.", row("Folio"), If(row("FolioREQ").ToString.Length > 0, $", relacionada a la(s) requisicion(es) # <b>{row("FolioREQ")}</b>", ""))
strBody.Append(" <br>")
strBody.Append(" Con los siguientes productos:")
strBody.Append(" </p>")
'DETALLES
strBody.Append(" <!-- DETALLES -->")
strBody.Append(" <table width=""700px"">")
strBody.Append(" <tr class=""thead"">")
strBody.Append(" <th style='width: 50px'>Cantidad</th>")
strBody.Append(" <th style='width: 100px'>UM</th>")
strBody.Append(" <th style='width: 100px'>Código</th>")
strBody.Append(" <th style='width: 450px'>Producto</th>")
strBody.Append(" </tr>")
For Each RowM As DataRow In DTMovimientos.FiltraParametros($"CveOrdenCompra = {row("CveOrdenCompra")}").Rows
strBody.AppendFormat(" <tr class=""tbody"">")
strBody.AppendFormat(" <td style='width:50px; text-align: right;'>{0}</td>", RowM("Cantidad").ToString.FormatoNumero)
strBody.AppendFormat(" <td style='width:100px;'>{0}</td>", RowM("UnidadMedida"))
strBody.AppendFormat(" <td style='width:100px;'>{0}</td>", RowM("Codigo"))
strBody.AppendFormat(" <td align='left' style='width:450px;'>{0}</td>", RowM("PS"))
strBody.AppendFormat(" </tr>")
Next
strBody.Append(" </table>")
strBody.Append("</body>")
strBody.Append("</html>")
'' ENVIO DEL CORREO
Asunto = "Vinculación de factura de OC "
Para = row("Correo").ToString
ArrayCC = ""
Body = strBody.ToString
Dim Mail As New ClsSisMail()
Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayCC)
Next
End Sub
Private Sub MandaCorreoOCVendedoresRecepcionAlmacen(CveCompra As Integer, CveMovimiento As Integer)
'SI NO TIENE FUNCIONALIDAD DATOS DE VENTA EN OC
If Not UsuarioActual.Empresa.Funcionalidad(108) = "1" Then
Exit Sub
End If
Dim DTCorreos As New DataTable
Dim DTMovimientos As New DataTable
Dim strBody As New StringBuilder
Dim Asunto, Para, ArrayCC, Body As String
Dim ObjOC As New ClsOC
ObjOC.GetOrdenesCompraCorreo(CveCompra, CveMovimiento:=CveMovimiento)
DTCorreos = ObjOC.DtResultados
ObjOC.GetOrdenesCompraMovimiento(CveCompra, CveMovimiento:=CveMovimiento)
DTMovimientos = ObjOC.DtResultados
ObjOC.Dispose()
For Each row As DataRow In DTCorreos.Rows
strBody.Clear()
'SI DE UNA OC DE LA COMPRA NO SE RECIBIÓ NADA NO MANDA CORREO
If DTMovimientos.FiltraParametros($"CveOrdenCompra = {row("CveOrdenCompra")}").Rows.Count = 0 Then
Continue For
End If
strBody.Append("<html xmlns=""http: //www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" * {")
strBody.Append(" font-family: Verdana; ")
strBody.Append(" }")
strBody.Append(" body { ")
strBody.Append(" padding: 0px;")
strBody.Append(" margin: 0px; ")
strBody.Append(" } ")
strBody.Append(" p {")
strBody.Append(" font-size: 14px;")
strBody.Append(" }")
strBody.Append(" /*ESTILOS ESTANDAR DE TABLA*/")
strBody.Append(" table {")
strBody.Append(" font-size: 12px;")
strBody.Append(" }")
strBody.Append(" table tr{")
strBody.Append(" height:20px;")
strBody.Append(" }")
strBody.Append(" table .thead{")
strBody.Append(" background-color:#dddddd;")
strBody.Append(" text-align:center;")
strBody.Append(" vertical-align:middle;")
strBody.Append(" }")
strBody.Append(" table .tbody{")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" }")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body>")
strBody.Append(" <h3> Notificación de recepción de material </h3>")
strBody.Append(" <p class=""mensaje"">")
strBody.AppendFormat(" Se confirma recepción de material en almacén <b>{0}</b> vinculado la OC # <b>{1}</b> {2}.", DTMovimientos.FiltroPrimeroValor("Almacen"), row("Folio").ToString, If(row("FolioREQ").ToString.Length > 0, $", relacionada a la(s) requisicion(es) # <b>{row("FolioREQ")}</b>", ""))
strBody.Append(" <br>")
strBody.Append(" Con los siguientes productos:")
strBody.Append(" </p>")
'DETALLES
strBody.Append(" <!-- DETALLES -->")
strBody.Append(" <table width=""700px"">")
strBody.Append(" <tr class=""thead"">")
strBody.Append(" <th style='width: 50px'>Cantidad</th>")
strBody.Append(" <th style='width: 100px'>UM</th>")
strBody.Append(" <th style='width: 100px'>Código</th>")
strBody.Append(" <th style='width: 450px'>Producto</th>")
strBody.Append(" </tr>")
For Each RowM As DataRow In DTMovimientos.FiltraParametros($"CveOrdenCompra = {row("CveOrdenCompra")}").Rows
strBody.AppendFormat(" <tr class=""tbody"">")
strBody.AppendFormat(" <td style='width:50px; text-align: right;'>{0}</td>", RowM("Cantidad").ToString.FormatoNumero)
strBody.AppendFormat(" <td style='width:100px;'>{0}</td>", RowM("UnidadMedida"))
strBody.AppendFormat(" <td style='width:100px;'>{0}</td>", RowM("Codigo"))
strBody.AppendFormat(" <td align='left' style='width:450px;'>{0}</td>", RowM("PS"))
strBody.AppendFormat(" </tr>")
Next
strBody.Append(" </table>")
strBody.Append("</body>")
strBody.Append("</html>")
'' ENVIO DEL CORREO
Asunto = "Recepción de Material de OC "
Para = row("Correo").ToString
ArrayCC = row("CorreoAsistente").ToString
Body = strBody.ToString
Dim Mail As New ClsSisMail()
Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayCC)
Next
End Sub
'VIEJO - COMENTADO IPP 12 JULIO 2017
'Private Sub MandaCorreo(CveCompra As Integer)
' Dim ObjOC As New ClsOC
' Dim DTCorreos As New DataTable
' Dim DTFolios As New DataTable
' Dim strBody As New StringBuilder
' ObjOC.GetOrdenesCompraCorreo(CveCompra)
' DTCorreos = ObjOC.DtResultados
' ObjOC.GetComprasOC(CveCompra)
' DTFolios = ObjOC.DtResultados
' strBody.AppendFormat("Se ha vinculado la compra <b>{0}-{1}</b> a la siguiente OC", Serie, Folio)
' strBody.Append("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
' strBody.Append("<head> ")
' strBody.Append("</head> ")
' strBody.Append("<body> ")
' 'Cargo el detalle
' strBody.Append(" <div style='width: 550px'> ")
' strBody.Append(" <fieldset> ")
' strBody.Append(" <legend>Ordenes de compra</legend> ")
' strBody.Append(" <table width=""550px""> <tr style='background-color:gray;color:White;font-family:Verdana;font-size:10px;text-align:center;vertical-align:middle;font-weight:bold;height:20px;text-decoration:none;'>
' <th scope='col' style='width: 50px'>Folio</th>
' <th scope='col' style='width: 50px'>Tipo</th>")
' For Each row As DataRow In DTCorreos.Rows
' Dim Asunto, Para, ArrayCC, Body As String
' Asunto = "Vinculación de Factura"
' Para = row("Correo").ToString
' ArrayCC = ""
' For Each RowM As DataRow In DTFolios.Rows
' strBody.AppendFormat("<tr class='Texto'><td style='width:50px;'>{0}</td><td style='width:50px;'>{1}</td></tr>", RowM("Folio").ToString, RowM("Tipo"))
' Next
' strBody.Append(" </table> ")
' strBody.Append(" </fieldset> ")
' strBody.Append(" </div> ")
' strBody.Append("</body></html>")
' Body = strBody.ToString
' ObjOC.Dispose()
' Dim Mail As New ClsSisMail()
' Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayCC)
' Next
'End Sub
#End Region
#End Region
#Region " CIERRE PERIODO "
Private Function ValidaCierrePeriodo() As Boolean
'solo se permiten, mes actual, mes anterior <= #dias
Dim mesesTrans As Integer = DateDiff(DateInterval.Month, TxtFecha.Text.ToDate, Now).ToEntero
If mesesTrans = 0 OrElse (mesesTrans = 1 AndAlso Day(Now) <= UsuarioActual.Empresa.Funcionalidad(123).ToEntero) Then
Return True
End If
Return False
'Dim mesesTrans As Integer = DateDiff(DateInterval.Month, TxtFecha.Text.ToDate, Now).ToEntero
'If mesesTrans > 1 OrElse Day(Now) >= UsuarioActual.Empresa.Funcionalidad(123).ToEntero Then
' Return True
'End If
'Return False
End Function
#End Region
#Region " AGREGA POR SERIE/LOTE "
Private Sub CreaDtDetalle()
If DtDatosDetalle Is Nothing Then
DtDatosDetalle = New DataTable
DtDatosDetalle.Columns.Add("CvePS", GetType(Integer))
DtDatosDetalle.Columns.Add("CveUM", GetType(Integer))
DtDatosDetalle.Columns.Add("PU", GetType(Decimal))
DtDatosDetalle.Columns.Add("Serie", GetType(String))
DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(String))
DtDatosDetalle.Columns.Add("CvePersonal", GetType(Integer))
End If
End Sub
Private Sub CargaSerie()
Dim AplicaCaducidad = False
If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).Rows(0) IsNot Nothing Then
AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).Rows(0)("AplicaCaducidad").ToString = "True", True, False)
End If
If AplicaCaducidad Then
GvSerie.Columns(1).Visible = True
TdCaducidad1.Visible = True
TdCaducidad2.Visible = True
Else
GvSerie.Columns(1).Visible = False
TdCaducidad1.Visible = False
TdCaducidad2.Visible = False
End If
GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", CvePSSerieLote))
GvSerie.DataBind()
'VALIDA QUE SIGA AGREGANDO
If Not DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", CvePSSerieLote)).Rows.Count < LbCantidadSerie.Text.ToEntero Then
BtnAgregarPS.Enabled = False
Else
BtnAgregarPS.Enabled = True
End If
'SI TIENE ENTRADA POR SERIE LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD
Dim Contador = 0
For Each Gvr As GridViewRow In GvInv.Rows
Gvr.FCTextBox("TbCantidad").Enabled = False
If Gvr.DataKey("CvePS").ToEntero = CvePSSerieLote Then
Contador = DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", Gvr.DataKey("CvePS"))).Rows.Count
If DtDatosDetalle IsNot Nothing AndAlso Contador > 0 Then
Gvr.FCCheckBox("cbInv").Enabled = False
'Gvr.FCCheckBox("cbInv").Checked = True
Gvr.FCTextBox("TbCantidad").Enabled = False
Gvr.FCTextBox("TbCantidad").Text = Contador.ToString
Else
Gvr.FCCheckBox("cbInv").Enabled = False
Gvr.FCTextBox("TbCantidad").Enabled = False
Gvr.FCTextBox("TbCantidad").Text = "0"
End If
End If
Next
UpINV.Update()
UpSerie.Update()
TxtSerieLote.Focus()
RegistraScript(String.Format("$('#DivSerie').on('shown.bs.modal', function () {{$('#DivSerie').focus(); $('#{0}').trigger(jQuery.Event('keypress', {{which: 13}})); }});$('#DivSerie').modal('show'); ", TxtSerieLote.ClientID))
End Sub
Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs)
Dim SerieLote = TxtSerieLote.Text.Replace(" ", String.Empty)
Dim AplicaCaducidad = False
Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltroPrimero("", "PS")
If dr IsNot Nothing Then AplicaCaducidad = dr("AplicaCaducidad").ToString = "True"
'VALIDA QUE LA SERIE NO SEA IGUAL AL CODIGO O CODIGOBARRAS
If SerieLote <> "" And (SerieLote = dr("Codigo").ToString.ToUpper Or SerieLote = dr("CodigoBarras").ToString.ToUpper) Then
Alert($"La serie indicada <b>{SerieLote}</b> coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim Row = DtDatosDetalle.NewRow
Row("CvePS") = CvePSSerieLote
Row("CveUM") = CveUMSerieLote
Row("PU") = PUSerieLote
Row("Serie") = SerieLote
Row("FechaCaducidad") = If(AplicaCaducidad, TxtFechaCaducidad.Text, MinFecha.ToShortDateString)
DtDatosDetalle.Rows.Add(Row)
TxtSerieLote.Text = ""
TxtFechaCaducidad.Text = Now.ToShortDateString
CargaSerie()
End Sub
Protected Sub BtnSerieLote_Click(sender As Object, e As EventArgs)
Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c)
LbProducto.Text = Argumentos(3)
LbCantidadSerie.Text = Argumentos(4)
CvePSSerieLote = Argumentos(0).ToEntero
CveUMSerieLote = Argumentos(1).ToEntero
PUSerieLote = Argumentos(2).ToDecimal
CargaSerie()
End Sub
Protected Sub GvSerie_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSerie.RowDeleting
DtDatosDetalle.Rows.Remove(DtDatosDetalle.Rows(e.RowIndex))
CargaSerie()
End Sub
#End Region
#Region " TIPO CAMBIO "
Protected Sub DdlMoneda_SelectedIndexChanged(sender As Object, e As EventArgs)
CambiaMoneda()
End Sub
Private Sub CambiaMoneda(Optional RecargaTipoCambio As Boolean = True)
TxtFecha.Attributes.Remove("onblur")
If DdlMoneda.SelectedValue.ToEntero > 1 Then
TipoCambio = If(RecargaTipoCambio, GlobalTipoCambio(TxtFecha.Text.ToDate), TipoCambio)
LblTC.Text = String.Format("TC: {0}", TipoCambio.ToString("N4"))
TxtTC.Text = TipoCambio.ToString("N4")
If UsuarioActual.Empresa.UsaAC Then
TxtFecha.Attributes.Add("onblur", "CambiaFecha();CambiaFechaTC();")
Else
TxtFecha.Attributes.Add("onblur", "CambiaFechaTC();")
End If
If CveCompra <= 0 Then 'And CveFactura <= 0 [IPP] 11Junio2018
DivTC.Visible = True
LblTC.Visible = False
Else
DivTC.Visible = False
LblTC.Visible = True
End If
Else
If UsuarioActual.CveEmpresa.Contiene({4, 7, 11, 12, 145}) Then
RegistraScript("$('#ModalPesos').modal('show');")
TxtConvertirPesos.Text = If(TipoCambio > 0, TipoCambio, GlobalTipoCambio(TxtFecha.Text.ToDate)).ToString.FormatoNumero
End If
TipoCambio = 1
LblTC.Text = ""
TxtTC.Text = ""
If UsuarioActual.Empresa.UsaAC Then
TxtFecha.Attributes.Add("onblur", "CambiaFecha()")
End If
End If
CargaCuentas()
End Sub
Protected Sub BtnCambiaFechaTC_Click(sender As Object, e As EventArgs)
LblTC.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString.FormatoNumero(4)
TxtTC.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString.FormatoNumero(4)
End Sub
#End Region
#Region " CONVERTIR PESOS "
Protected Sub BtnConvertirPesos_Click(sender As Object, e As EventArgs)
Dim TipoCambioTemp = TxtConvertirPesos.Text.ToDouble
If TipoCambioTemp <= 0 Then
Exit Sub
End If
For Each Dr As DataRow In TmpDT.Rows
Dr("PU") = Dr("PU").ToString.ToDouble * TipoCambioTemp
Dr("IVA") = Dr("IVA").ToString.ToDouble * TipoCambioTemp
Dr("RetIVA") = Dr("RetIVA").ToString.ToDouble * TipoCambioTemp
Dr("RetISR") = Dr("RetISR").ToString.ToDouble * TipoCambioTemp
Dr("IEPSPS") = Dr("IEPSPS").ToString.ToDouble * TipoCambioTemp
Dr("Descuento") = Dr("Descuento").ToString.ToDouble * TipoCambioTemp
Dr("OtrosGastos") = Dr("OtrosGastos").ToString.ToDouble * TipoCambioTemp
Dim Total = (Dr("Cantidad").ToString.ToDouble * Dr("PU").ToString.ToDouble) - Dr("Descuento").ToString.ToDouble + Dr("OtrosGastos").ToString.ToDouble
Dr("Total") = Total
Next
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
TxtSubTotal.Text = (TxtSubTotal.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
TxtSubTotal2.Text = (TxtSubTotal2.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
TxtIVA.Text = (TxtIVA.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
'IPP CAMBIADO - 5 DICIEMBRE 2016
'TxtTotal.Text = (TxtSubTotal2.Text.ToDouble + TxtIVA.Text.ToDouble).ToString.FormatoNumero.Replace(","c, "")
TxtTotal.Text = (TxtTotal.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
SubTotalOriginal = TxtSubTotal.Text.ToDouble
SubTotal2Original = TxtSubTotal2.Text.ToDouble
If TrDescuento.Visible Then TxtDescuento.Text = (TxtDescuento.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
If TrRetIVA.Visible Then TxtRetIVA.Text = (TxtRetIVA.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
If TrRetISR.Visible Then TxtRetISR.Text = (TxtRetISR.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
If TrIEPS.Visible Then TxtIEPS.Text = (TxtIEPS.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
If TrOtrosImpuestos.Visible Then TxtOtrosImpuestos.Text = (TxtOtrosImpuestos.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
If TrRedondeo.Visible Then TxtRedondeo.Text = (TxtRedondeo.Text.ToDouble * TipoCambioTemp).ToString.FormatoNumero.Replace(","c, "")
If TxtSubTotal2.Text.ToDouble <> TmpDT.SUM("Total") Then
AjustaImporteUltimoConcepto((TxtSubTotal2.Text.ToDouble - TmpDT.SUM("Total")).ToString.ToDecimal)
End If
DdlMoneda.Enabled = False
RegistraScript("$('#ModalPesos').modal('hide');")
End Sub
#End Region
#Region " TOTALES: VALIDA Y CALCULA "
Private Sub AsignaValoresOriginales(SubTotal As Double, SubTotal2 As Double, IVA As Double, RetIVA As Double, RetISR As Double, Total As Double)
SubTotalOriginal = SubTotal
SubTotal2Original = SubTotal2
IVAOriginal = IVA
RetIVAOriginal = RetIVA
RetISROriginal = RetISR
TotalOriginal = Total
End Sub
Private Sub CalculaTotales(Optional CalculaIVA As Boolean = False, Optional EsNoDeducible As Boolean = False)
'VARIABLES DE CALCULO
Dim SubTotal, Descuentos, Amortizacion, IVA, SubTotal2, RetIVA, RetISR, IEPSPS, Total, SubTotalIVA, SubTotalIEPSIVA As Double
'SE ACTUALIZA EL IVA DEL DtDetalle SI ES QUE AHORA SE VA A TOMAR EN CUENTA EL IVA
'For Each Row As DataRow In TmpDT.Rows
' If CalculaIVA Then
' Row("IVA") = Row("IVAPorcentaje").ToString.ToDouble * Row("Total").ToString.ToDouble
' Else
' Row("IVA") = 0
' End If
'Next
'HACEMOS CALCULOS
SubTotalIVA = TmpDT.SUM("IVA")
SubTotalIEPSIVA = TmpDT.SUM("IEPSPSIVA")
SubTotal = TmpDT.SUM("Total") + TmpDT.SUM("Descuento")
RetIVA = TmpDT.SUM("RetIVA")
RetISR = TmpDT.SUM("RetISR")
IEPSPS = TmpDT.SUM("IEPSPS")
IVA = If(TmpDT.SUM("IVA") > 0, SubTotalIVA + SubTotalIEPSIVA, 0)
'If CalculaIVA Then IVA = TxtIVA.Text.ToDouble
Descuentos = TmpDT.SUM("Descuento")
'[IPP] SI YA ES COMPRA REGISTRADA NO CONSIDERA LA AMORTIZACIÓN PARA EL CALCULO DE TOTAL
If Not CveCompra > 0 Then
Amortizacion = LblAmortizacion.Text.Trim.ToDouble
End If
'RETENCIONES
Dim Retenciones = 0D
Retenciones = TxtRetIVA.Text.ToDecimal
Retenciones += TxtRetISR.Text.ToDecimal
SubTotal2 = SubTotal - Descuentos ' - Amortizacion '[IPP] COMENTADO CASO JAM 12653 CON NC 27122 | 23/MAYO/2018
Total = SubTotal2 + IVA + IEPSPS - Retenciones
'ASIGNAMOS VALORES A VISTA
If CveCompra > 0 Or CveFactura > 0 Or OCVinculada Then
TxtSubTotal.Text = SubTotal.ToString.FormatoNumero()
TxtSubTotal2.Text = SubTotal2.ToString.FormatoNumero()
TxtDescuento.Text = Descuentos.ToString.FormatoNumero()
If EsNoDeducible Then
TxtIVA.Text = IVA.ToString.FormatoNumero()
TxtRetIVA.Text = RetIVA.ToString.FormatoNumero()
If TxtRetIVA.Text.ToDouble > 0 Then TrRetIVA.Visible = True
TxtRetISR.Text = RetISR.ToString.FormatoNumero()
If TxtRetISR.Text.ToDouble > 0 Then TrRetISR.Visible = True
TxtIEPS.Text = IEPSPS.ToString.FormatoNumero()
If TxtIEPS.Text.ToDouble > 0 Then TrIEPS.Visible = True
End If
If TxtDescuento.Text.ToDouble > 0 Then TrDescuento.Visible = True
If ActualizaTotales And UsuarioActual.CveEmpresa = 72 Then TxtTotal.Text = Total.ToString.FormatoNumero()
Else
TxtSubTotal.Text = SubTotal.ToString.FormatoNumero()
TxtSubTotal2.Text = SubTotal2.ToString.FormatoNumero()
TxtIVA.Text = IVA.ToString.FormatoNumero()
TxtDescuento.Text = Descuentos.ToString.FormatoNumero()
If TxtDescuento.Text.ToDouble > 0 Then TrDescuento.Visible = True
TxtRetIVA.Text = RetIVA.ToString.FormatoNumero()
If TxtRetIVA.Text.ToDouble > 0 Then TrRetIVA.Visible = True
TxtRetISR.Text = RetISR.ToString.FormatoNumero()
If TxtRetISR.Text.ToDouble > 0 Then TrRetISR.Visible = True
TxtIEPS.Text = IEPSPS.ToString.FormatoNumero()
If TxtIEPS.Text.ToDouble > 0 Then TrIEPS.Visible = True
TxtTotal.Text = Total.ToString.FormatoNumero()
'VALORES PROPIEDAD
CompraSaldo = Total
HfTotalCompra.Value = Total.ToString
End If
'CUANDO SEA COMPRA, FACTURA O VENGA DE VINCULACIÓN OC NO SE MODIFICAN VALORES
'SE VERIFICA SI ALGUN DATO ES DIFERENTE PARA MOSTRAR COLUMNA CON VALORES ORIGINALES
If (CveCompra > 0 Or CveFactura > 0 Or OCVinculada) And Not EsNoDeducible Then
If SubTotal <> SubTotalOriginal Then
OriginalesVisible(True)
LbSubTotalOriginal.Text = SubTotalOriginal.ToString.FormatoNumero(2)
Else
OriginalesVisible(False)
End If
End If
LblRetIVA.Text = (If(SubTotal2 > 0, (RetIVA / SubTotal2), 0) * 100).FormatoNumero(3) + "%"
LblRetISR.Text = (If(SubTotal2 > 0, (RetISR / SubTotal2), 0) * 100).FormatoNumero(3)
'IMPORTES DE RESTRICCION
TxtDocumentoImporteFE.Text = Total.ToString.FormatoNumero(2)
RVDocumentoImporte.MaximumValue = Total.ToString.FormatoNumero(2)
RVDocumentoImporteFE.MaximumValue = RVDocumentoImporte.MaximumValue
RVDocumentoImporteCaja.MaximumValue = RVDocumentoImporte.MaximumValue
CargaRetIVAConcepto()
CargaRetISRConcepto()
End Sub
Private Sub OriginalesVisible(Accion As Boolean)
tdT0.Visible = Accion
tdT1.Visible = Accion
tdT2.Visible = Accion
tdT3.Visible = Accion
tdT4.Visible = Accion
tdT5.Visible = Accion
tdT6.Visible = Accion
tdT7.Visible = Accion
tdT8.Visible = Accion
tdT9.Visible = Accion
tdT10.Visible = Accion
tdT11.Visible = Accion
End Sub
Private Function ValidaTotalesGuardar() As Boolean
Dim EsValido = True
'VALIDA IMPORTES
'VALIDA TOTAL CON LOS IMPORTES TOTALES
Dim TempSubTotal, TempDescuentos, TempIVA, TempSubTotal2, TempRetIVA, TempRetISR, TempTotal, DifTotales, TempIEPS As Double
'Dim TempPorcentajeRetIVA = LblRetIVA.Text.ToDouble / 100
'Dim TempPorcentajeRetISR = LblRetISR.Text.ToDouble / 100
TempSubTotal = TxtSubTotal.Text.ToDouble
SubTotalOriginal = TxtSubTotal.Text.ToDouble
SubTotal2Original = TxtSubTotal2.Text.ToDouble
TempDescuentos = TxtDescuento.Text.Trim.ToDouble '+ LblAmortizacion.Text.Trim.ToDouble
TempSubTotal2 = TempSubTotal - TempDescuentos
TempIVA = TxtIVA.Text.ToDouble
TempIEPS = TxtIEPS.Text.ToDouble
TempRetIVA = TxtRetIVA.Text.ToDouble
TempRetISR = TxtRetISR.Text.ToDouble
TempTotal = Math.Round(TempSubTotal2 + TempIVA + TempIEPS - TempRetIVA - TempRetISR + TxtOtrosImpuestos.Text.ToDouble, 2)
DifTotales = TxtTotal.Text.ToDouble - TempTotal
Dim DiferenciaPermitida = 0.6
If Math.Abs(DifTotales) > DiferenciaPermitida Then
Alert("Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
EsValido = False
ElseIf DifTotales <> 0 Then
TxtSubTotal2.Text = (TxtSubTotal2.Text.ToDouble + DifTotales).ToString
TxtSubTotal.Text = (TxtSubTotal.Text.ToDouble + DifTotales).ToString
SubTotalOriginal = TxtSubTotal.Text.ToDouble
SubTotal2Original = TxtSubTotal2.Text.ToDouble
End If
Dim DiferenciaSubtotales = 0.0D
If CveCompra > 0 Or CveFactura > 0 Or OCVinculada Then
If SubTotalOriginal = Nothing Then
SubTotalOriginal = 0
End If
If SubTotal2Original = Nothing Then
SubTotal2Original = 0
End If
DiferenciaSubtotales = SubTotal2Original.ToString.ToDecimal - TmpDT.SUM("Total").ToString.ToDecimal
'[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018
If CveFactura = 286290 Then
DiferenciaSubtotales += TxtDescuento.Text.ToDecimal
End If
If Math.Abs(DiferenciaSubtotales) > 1 And Not EsNoDeducible Then
Alert("Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
EsValido = False
Else
AjustaImporteUltimoConcepto(DiferenciaSubtotales)
End If
Else
DiferenciaSubtotales = (TxtSubTotal2.Text.ToDouble - TmpDT.SUM("Total")).ToString.ToDecimal
If Math.Abs(DiferenciaSubtotales) > 1 Then
Alert("Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
EsValido = False
Else
AjustaImporteUltimoConcepto(DiferenciaSubtotales)
End If
End If
Return EsValido
End Function
Private Sub LnkAcarreo_Click(sender As Object, e As EventArgs) Handles LnkAcarreo.Click
VerificarAcarreo()
End Sub
Private Sub VerificarAcarreo()
RegistraScript(String.Format("$('#{0}').modal('show');", "divAddAcarreo"))
End Sub
Private Sub BtnAgregarAcarreo_Click(sender As Object, e As EventArgs) Handles BtnAgregarAcarreo.Click
tDTAcarreos.Clear()
TotAcarreos = 0
For Each Gvr As GridViewRow In GvAcarreo.Rows
If CType(Gvr.FindControl("ChkRow"), System.Web.UI.WebControls.CheckBox).Checked = True Then
Dim Row As DataRow = Nothing
Row = tDTAcarreos.NewRow
Row("CvePreEstimacion") = Gvr.DataKey("CvePreEstimacion")
Row("Importe") = Gvr.DataKey("Importe")
tDTAcarreos.Rows.Add(Row)
TotAcarreos = TotAcarreos + Gvr.DataKey("Importe").ToDouble
End If
Next
UpPS.Update()
RegistraScript(String.Format("$('#{0}').modal('hide');", "divAddAcarreo"))
End Sub
#End Region
#Region "Historial de Modificacion"
Private Sub CargaGvBitacora()
' COMENTADO POR IPP PARA SUBIR 5 ABRIL 2017
Dim ObjGral As New ClsGenerales()
If ObjGral.GetHistorialBitacora(-1, -1, -1, -1, -1, CveCompra, -1, UsuarioActual.CveEmpresa) Then
GvBitacora.DataSource = ObjGral.DtResultados
GvBitacora.DataBind()
End If
ObjGral.Dispose()
End Sub
#End Region
#Region " FLETES "
Private Sub CargaFletes()
If UsuarioActual.CveEmpresa <> 125 Or CveCompra > 0 Then
Exit Sub
End If
HLModalFletes.Visible = True
Dim ObjVentas As New ClsVentas
If ObjVentas.GetFletes(UsuarioActual.CveEmpresa) Then
GVFletes.DataSource = ObjVentas.DtResultados
GVFletes.DataBind()
End If
UpFletes.Update()
ObjVentas.Dispose()
End Sub
#End Region
#Region "I M P R I M I R D E S G L O S E"
Private Sub LnkExportaGv_Click(sender As Object, e As EventArgs) Handles LnkExportaGv.Click
Dim dt As New DataTable
dt.Columns.Add("Consecutivo", GetType(Integer))
dt.Columns.Add("Cantidad", GetType(Double))
dt.Columns.Add("PS", GetType(String))
dt.Columns.Add("Observacion", GetType(String))
dt.Columns.Add("UM", GetType(String))
dt.Columns.Add("Referencia", GetType(String))
dt.Columns.Add("Personal", GetType(String))
For Each Gv As GridViewRow In GvPersonal.Rows
Dim Row As DataRow = Nothing
Row = dt.NewRow()
Row("Consecutivo") = Gv.FCLabel("LtlConsecutivo").Text
Row("Cantidad") = Gv.FCLiteral("LtlCantidad").Text.ToDouble
Row("UM") = Gv.FCLabel("LtlUnidadMedida").Text
Row("PS") = Gv.FCHyperLink("HplPS").Text
Row("Observacion") = Gv.Cells(4).Text
Row("Referencia") = Gv.FCTextBox("TxtReferencia").Text
Row("Personal") = Gv.FCDropDownList("DdlPersonalGv").SelectedItem
dt.Rows.Add(Row)
Next
ExportToExcel(dt, "Desglose")
End Sub
#End Region
'DE AQUI PARA ABAJO SE ESTAN REORDENANDO REGIONES --- FAVOR DE SI SE MUEVE UNA COSITA O SE HACE UNA NUEVA FUNCION/METODO AGRUPARLO EN LA REGION CORRECTA O GENERAR UNA EN CASO DE NO EXISTIR
#Region " MODAL ADD PS - AGREGAR Y EDITAR PS (PARTIDA-CONCEPTO) "
Private Sub HabilitaEdicionManualAgregar()
If Not (CveCompra > 0 Or CveFactura > 0 Or OCVinculada) Then
DdlIVA.Enabled = True
TxtRetIVAModal.Enabled = True
TxtRetISRModal.Enabled = True
TxtIEPSModal.Enabled = True
End If
End Sub
Private Sub LnkAddPS_Click(sender As Object, e As EventArgs) Handles LnkAddPS.Click
Modalidad = "A"
LimpiaAgregar()
ChkAgregar.Checked = True
divagregrarotrops.Visible = True
UpPSS.Update()
RegistraScript(String.Format("$('#{0}').modal('show');", "divAddProducto"))
End Sub
Private Sub LimpiaAgregar()
'VALORES ESCONDIDOS
HdnUnidadMedida.Value = "-1"
LblUnidadMedida.Text = "UM"
HdnClasificacion.Value = "-1"
HdnPS.Value = "-1"
ViewState("IVAPS") = -1
ViewState("RetIVA") = -1
ViewState("RetISR") = -1
ViewState("IEPSPS") = -1
ViewState("IEPSPSIVA") = -1
ChkEsNoDeduciblePS.Checked = False
'FORMULARIO
TxtCantidad.Text = ""
DdlClasificacion.SelectedValueExist(-1)
CargaPS(-1)
If Not UsuarioActual.Empresa.Funcionalidad(105).ToString = "1" Then
DdlPS.SelectedValue = "-1"
Else
DdlPS.SelectedValue = ""
DdlPS.SelectedText = ""
End If
ddlUM.Items.Clear()
TxtObsPS.Text = ""
DdlProyecto.SelectedValueExist(-1)
CargaSubProyecto()
DdlSubProyecto.SelectedValueExist(-1)
DdlTipoGasto.SelectedValueExist(-1)
TxtPrecio.Text = ""
LblTotalPS.Text = ""
DdlIVA.SelectedValueExist("1")
DdlIVA.Enabled = If(CveCompra > 0 Or CveFactura > 0 Or OCVinculada, False, True)
TxtRetIVAModal.Text = ""
TxtRetISRModal.Text = ""
TxtIEPSModal.Text = ""
TxtDescuentoModal.Text = ""
TxtOtrosGastos.Text = ""
DivAddProductoAliasPS.Visible = False
LbAgregar.Text = "Agregar"
UPPClasificacion.Update()
UpPSS.Update()
End Sub
Public Sub Edit_Click(sender As Object, e As EventArgs)
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
Con = GvRow.DataKey("Consec").ToEntero
Index = Con
'MODALIDAD UPDATE
Modalidad = "U"
LbAgregar.Text = "Actualizar"
H1.InnerText = "Actualizar Concepto"
DivAddProductoAliasPS.Visible = False
'CARGA VALROES DEL CONCEPTO
TxtCantidad.Text = GvRow.DataKey("Cantidad")
DdlClasificacion.SelectedValueExist(If(GvRow.DataKey("CveClasificacion") = "0", "-1", GvRow.DataKey("CveClasificacion")))
DdlClasificacionChange()
If GvRow.DataKey("CvePS") = "0" Then
If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then
DdlPS.SelectedValue = GvRow.DataKey("CvePS")
DdlPS.SelectedText = GvRow.DataKey("PS")
Else
DdlPS.ddl.Items.Insert(0, New ListItem(GvRow.DataKey("PS"), "0"))
End If
'DivAddProductoAliasPS.Visible = True
Else
'Si el PS esta inactivo se lo inserto manual
If GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero).FiltroPrimeroValor("CveEstado", $"CvePS = '{GvRow.DataKey("CvePS")}'") <> "True" Then
DdlPS.ddl.Items.Insert(0, New ListItem(GvRow.DataKey("PS"), "0"))
Else
DdlPS.SelectedValue = GvRow.DataKey("CvePS")
End If
If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then
DdlPS.SelectedText = GvRow.DataKey("PS")
End If
End If
ddlUM.Items.Clear()
If UsuarioActual.Empresa.UsaInventarios Then
ddlUM.DataSource = GlobalDTProductosServiciosEquivalencias(GvRow.DataKey("CvePS").ToEntero, -1)
Else
ddlUM.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa)
End If
ddlUM.Items.Insert(0, New ListItem("Seleccione", "-1"))
ddlUM.SelectedValue = "-1"
ddlUM.DataBind()
ddlUM.SelectedValueExist(GvRow.DataKey("CveUM"))
If ddlUM.SelectedValue <> GvRow.DataKey("CveUM") Then
ddlUM.Items.Insert(1, New ListItem(GvRow.DataKey("UM"), GvRow.DataKey("CveUM")))
ddlUM.SelectedValueExist(GvRow.DataKey("CveUM"))
End If
TxtObsPS.Text = GvRow.DataKey("Obs")
If UsuarioActual.Empresa.Tipo_CentroCosto <> 1 And UsuarioActual.Empresa.Tipo_CentroCosto <> 2 Then
DdlProyecto.SelectedValueExist(GvRow.DataKey("CveProyecto"))
End If
CargaSubProyecto()
'DdlProyecto.SelectedValueExist(GvRow.DataKey("CveProyecto"))
DdlSubProyecto.SelectedValueExist(GvRow.DataKey("CveSubProyecto"))
DdlTipoGasto.SelectedValueExist(GvRow.DataKey("CveTipoGasto"))
Dim PS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
DdlIVA.Enabled = True
ChkEsNoDeduciblePS.Checked = If(GvRow.DataKey("NoDeducible").Contiene("True", "1"), True, False)
If PS IsNot Nothing Then
If PS("IVA").ToString.ToEntero() <> -1 Then
' DdlIVA.Enabled = False
Else
'DdlIVA.Enabled = If(CveCompra > 0 Or CveFactura > 0 Or OCVinculada, False, True)
End If
End If
Select Case GvRow.DataKey("IVAPorcentaje").ToDouble
Case 0
DdlIVA.SelectedValue = "1"
Case 0.16
DdlIVA.SelectedValue = "1.16"
Case 0.08
DdlIVA.SelectedValue = "1.08"
End Select
'TxtIVAModal.Text = FormatoNumero(GvRow.DataKey("IVAPorcentaje").ToDouble * 100, 0)
TxtRetIVAModal.Text = FormatoNumero(GvRow.DataKey("RetIVAPorcentaje").ToDouble * 100, 0)
TxtRetISRModal.Text = FormatoNumero(GvRow.DataKey("RetISRPorcentaje").ToDouble * 100, 0)
TxtIEPSModal.Text = FormatoNumero(GvRow.DataKey("IEPSPSPorcentaje").ToDouble * 100, 0)
TxtPrecio.Text = GvRow.DataKey("PU").FormatoNumero(6)
TxtDescuentoModal.Text = GvRow.DataKey("Descuento").FormatoNumero(6)
TxtOtrosGastos.Text = GvRow.DataKey("OtrosGastos").FormatoNumero
LblTotalPS.Text = GvRow.DataKey("Total").FormatoNumero
'FUNCIONALIDAD DE SEGUIR AGREGANDO (NO CERRAR MODAL)
ChkAgregar.Checked = False
divagregrarotrops.Visible = False
UpPSS.Update()
RegistraScript("$('#divAddProducto').modal('show');")
End Sub
Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlClasificacion.SelectedIndexChanged
DdlClasificacionChange()
End Sub
Private Sub DdlClasificacionChange()
CargaPS(DdlClasificacion.SelectedValue.ToEntero)
If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then
Dim ObjConta As New ClsContabilidad
If ObjConta.GetRetCuenta(6, DdlClasificacion.SelectedValue.ToEntero) AndAlso ObjConta.DtResultados.Rows.Count > 0 AndAlso ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero > 0 Then
Else
Alert("La clasificacion no tiene una cuenta contable asignada.", TipoMensaje.MsgAdvertencia)
End If
ObjConta.Dispose()
End If
UPPClasificacion.Update()
End Sub
Private Sub CargaPS(CveClasificacion As Integer)
DdlPS.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then
DdlPS.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue)
DdlPS.SelectedText = ""
DdlPS.SelectedValue = "-1"
Else
DdlPS.ddl.Items.Clear()
DdlPS.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion)
DdlPS.ddl.DataBind()
DdlPS.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1"))
End If
End Sub
Protected Sub DdlPS_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DdlPS.selectedindexchange
DdlPSChange()
End Sub
Protected Sub DdlSubProyecto_SelectedIndexChanged(sender As Object, e As EventArgs)
If Modalidad <> "U" Or Not CveFactura > 0 Then
DdlPSChange()
End If
End Sub
Private Sub DdlPSChange()
If CveProveedor > 0 Then
If DdlPS.SelectedValue.ToEntero > 0 Then
Dim PS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
If PS IsNot Nothing Then
HdnClasificacion.Value = PS("Clasificacion").ToString
HdnUnidadMedida.Value = PS("CveUM").ToString
HdnTipoPS.Value = PS("CveTipoPS").ToString
HdnPS.Value = PS("PS").ToString
LblUnidadMedida.Text = PS("UnidadMedida").ToString
ddlUM.Items.Clear()
If UsuarioActual.Empresa.UsaInventarios Then
ddlUM.DataSource = GlobalDTProductosServiciosEquivalencias(PS("CvePS").ToString.ToEntero, -1)
Else
ddlUM.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa)
End If
ddlUM.Items.Insert(0, New ListItem("Seleccione", "-1"))
ddlUM.SelectedValue = "-1"
ddlUM.DataBind()
ddlUM.SelectedValueExist(PS("CveUnidadMedida").ToString)
'HdnIVAPS.Value = If(PS.Rows(0)("IVA").ToString = "-1", ViewState("IVA"), PS.Rows(0)("IVA").ToString).ToString
ViewState("IVAPS") = PS("IVA").ToString
If ViewState("IVAPS").ToString.ToEntero() = -1 Then
Dim Drr As DataRow = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero())(0)
ViewState("IVAPS") = Drr("IVA").ToString().ToDouble()
'DdlIVA.Enabled = True
If Not Modalidad = "U" Then
Select Case ViewState("IVAPS").ToString().ToDouble
Case 0
DdlIVA.SelectedValue = "1"
Case 0.16
DdlIVA.SelectedValue = "1.16"
Case 0.08
DdlIVA.SelectedValue = "1.08"
End Select
End If
Else
'DdlIVA.SelectedValue = "1"
' DdlIVA.Enabled = False
End If
ViewState("RetIVA") = If(PS("RetIVA").ToString = "-1", ViewState("RetIVA"), PS("RetIVA").ToString).ToString
ViewState("RetISR") = If(PS("RetISR").ToString = "-1", ViewState("RetISR"), PS("RetISR").ToString).ToString
ViewState("IEPSPS") = If(PS("IEPSPorcentaje").ToString = "-1", ViewState("IEPSPS"), PS("IEPSPorcentaje").ToString).ToString
ViewState("IEPSPSIVA") = If(PS("IEPSGrabaIVA").ToString = "True", PS("IEPSPorcentaje").ToString.ToDouble, 0)
'TxtIVAModal.Text = FormatoNumero(ViewState("IVAPS").ToString().ToDouble * 100, 0)
TxtRetIVAModal.Text = FormatoNumero(ViewState("RetIVA").ToString().ToDouble * 100, 0)
TxtRetISRModal.Text = FormatoNumero(ViewState("RetISR").ToString().ToDouble * 100, 0)
TxtIEPSModal.Text = FormatoNumero(ViewState("IEPSPS").ToString().ToDouble * 100, 0)
UpIVA.Update()
If DdlClasificacion.SelectedIndex = 0 Then
If PS("CveClasificacion").ToString IsNot Nothing Then
DdlClasificacion.SelectedValueExist(PS("CveClasificacion").ToString)
Else
Alert("El Productos/Servicio no tiene asignada una Clasificación.")
End If
End If
UPPUM.Update()
UpPSS.Update()
End If
Else
'SI ES UN PS NO REGISTRADO INSERTAMOS SELECCIONE
ddlUM.Items.Clear()
ddlUM.Items.Insert(0, New ListItem("Seleccione", "-1"))
ddlUM.SelectedValue = "-1"
End If
Else
Alert("Es necesario seleccionar el Proveedor al cual se le va a capturar.", TipoMensaje.MsgAdvertencia, "AbrirVentana(""/Compras/PopUpBuscarProveedor.aspx?Opt=Fact"", 800, 547, ""N"", ""PopUpBuscar"")")
End If
End Sub
Private Sub CargaProyecto()
DdlProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1).FiltraParametros("", "", {"CveProyecto", "Proyecto"}), GlobalDTProyectos(UsuarioActual.CveEmpresa, -1).FiltraParametros("", "", {"CveProyecto", "Proyecto"}))
'DdlProyecto.DataSource = GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1)
DdlProyecto.DataBind()
End Sub
Protected Sub DdlProyectoAsignado_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlProyecto.SelectedIndexChanged
CargaSubProyecto()
End Sub
Private Sub CargaSubProyecto()
Dim CveProyecto = If(DdlProyecto.SelectedValue.ToEntero > 0, DdlProyecto.SelectedValue.ToEntero, -1)
DdlSubProyecto.Items.Clear()
If CveProyecto > 0 Or UsuarioActual.Empresa.Tipo_CentroCosto.Contiene(1, 2) Then
DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, CveProyecto, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(CveProyecto, -1, UsuarioActual.CveEmpresa, 1))
End If
DdlSubProyecto.DataBind()
DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Protected Sub LbAgregar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LbAgregar.Click
'VALIDACIONES
If Not DdlPS.SelectedValue.ToEntero > 0 Then
Alert("Es necesario seleccionar un Producto o Servicio registrado en el sistema.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If UsuarioActual.Empresa.Tipo_CentroCosto = 3 Or UsuarioActual.Empresa.Tipo_CentroCosto = 4 Or UsuarioActual.Empresa.Tipo_CentroCosto = 5 Then
If Not DdlProyecto.SelectedValue.ToEntero > 0 Then
Alert("Es necesario seleccionar un proyecto.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
If Not DdlSubProyecto.SelectedValue.ToEntero > 0 Then
Alert("Es necesario seleccionar un subproyecto.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If Not CveProveedor > 0 Then
Alert("Es necesario seleccionar el proveedor al cual se le va a facturar.", TipoMensaje.MsgAdvertencia, "AbrirVentana('/Compras/PopUpBuscarProveedor.aspx?Opt=Fact', 800, 547, 'N', 'PopUpBuscar')")
Exit Sub
End If
If UsuarioActual.Empresa.Funcionalidad(527) = "1" Then
If Not DdlTipoGasto.SelectedValue.ToEntero > 0 Then
Alert("Es necesario seleccionar un tipo de gasto.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
Select Case Modalidad
Case "A"
If Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> TmpDT.MAX("IVAPorcentaje").ToDouble And TmpDT.MAX("IVAPorcentaje").ToDouble <> 0 And Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> 0 And TmpDT.Rows.Count > 0 Then
Alert("No puede haber dos tipos de IVA en la compra.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Case "U"
If Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> TmpDT.FiltraParametros($"Consec <> {Index}").MAX("IVAPorcentaje").ToDouble And TmpDT.FiltraParametros($"Consec <> {Index}").MAX("IVAPorcentaje").ToDouble <> 0 And Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> 0 And TmpDT.FiltraParametros($"Consec <> {Index}").Rows.Count > 0 Then
Alert("No puede haber dos tipos de IVA en la compra.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End Select
Dim Total As Decimal = (TxtCantidad.Text.ToDecimal * TxtPrecio.Text.ToDecimal) - TxtDescuentoModal.Text.ToDecimal + TxtOtrosGastos.Text.ToDecimal
If UsuarioActual.Empresa.Funcionalidad(532) = "1" Then
Dim ObjCon As New ClsContratos
Dim CvePresupuesto As Integer = 0
Dim Autorizado As Double = 0
Dim Ejercido As Double = 0
If ObjCon.GetPresupuestos(-1, "-1", DdlSubProyecto.SelectedValue.ToEntero, 2, -1, UsuarioActual.CveEmpresa) Then
If ObjCon.DtResultados.Rows.Count > 0 Then
CvePresupuesto = ObjCon.DtResultados.Rows(0)("CvePresupuesto").ToString.ToEntero
If CvePresupuesto > 0 Then
If ObjCon.GetPresupuestosDetalle(CvePresupuesto, -1, UsuarioActual.CveEmpresa) Then
If ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {DdlClasificacion.SelectedValue.ToEntero} AND CveTipoGasto = {DdlTipoGasto.SelectedValue.ToEntero} AND Importe > 0").Rows.Count > 0 Then
Autorizado = ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {DdlClasificacion.SelectedValue.ToEntero} AND CveTipoGasto = {DdlTipoGasto.SelectedValue.ToEntero} AND Importe > 0").Rows(0)("Importe").ToString.ToDouble
End If
End If
If ObjCon.GetPresupuestosRep(CvePresupuesto, DdlTipoGasto.SelectedValue.ToEntero, 1, $"01/09/{DateTime.Now.Year - 1}".ToDate, Now, UsuarioActual.CveEmpresa, DdlProyecto.SelectedValue.ToEntero,
DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveUsuario, DdlClasificacion.SelectedValue.ToEntero) Then
If ObjCon.DtResultados.Rows.Count > 0 Then
Ejercido = ObjCon.DtResultados.Rows(0)("Ejercido").ToString.ToDouble
End If
End If
End If
End If
End If
ObjCon.Dispose()
If CvePresupuesto > 0 And Autorizado > 0 Then
Dim Diferencia As Double = (Ejercido + Total) - Autorizado
If Diferencia > 0 Then
Alert($"No hay presupuesto disponible en el subproyecto <b>{DdlSubProyecto.SelectedItem.Text}</b> con la clasificación <b>{DdlClasificacion.SelectedItem.Text}</b> y el tipo de gasto <b>{DdlTipoGasto.SelectedItem.Text}</b>. Se excede por <b>{Diferencia.FormatoNumero}</b>", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
ActualizaTotales = True
Select Case Modalidad
Case "A" 'ADD
AddPS(TxtCantidad.Text.Trim.ToDouble, ddlUM.SelectedValue.ToEntero, ddlUM.SelectedItem.Text, DdlClasificacion.SelectedValue.ToEntero, DdlClasificacion.SelectedItem.Text, DdlPS.SelectedValue.ToEntero, DdlPS.SelectedText, HdnTipoPS.Value.ToEntero,
DdlSubProyecto.SelectedValue.ToString, DdlSubProyecto.SelectedItem.Text, DdlProyecto.SelectedItem.Text, DdlProyecto.SelectedValue.ToString, TxtObsPS.Text.Trim, TxtPrecio.Text.Trim.ToDouble, Total, Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2), TxtRetIVAModal.Text.ToDouble / 100, TxtRetISRModal.Text.ToDouble / 100, TxtIEPSModal.Text.ToDouble / 100, 0, TxtDescuentoModal.Text.ToDouble, OtrosGastos:=TxtOtrosGastos.Text.ToDouble, CveTipoGasto:=DdlTipoGasto.SelectedValue.ToEntero, TipoGasto:=DdlTipoGasto.SelectedItem.Text, NoDeducible:=ChkEsNoDeduciblePS.Checked)
AddPS2()
LimpiaAgregar()
If ChkAgregar.Checked = True And Modalidad = "A" Then
RegistraScript("displayToastr(1);", "display")
Else
RegistraScript(String.Format("$('#{0}').modal('hide');", "divAddProducto"))
End If
Case "U" 'UPDATE
UpdatePS()
Alert("Concepto actualizado Correctamente.", TipoMensaje.MsgInformacion)
RegistraScript(String.Format("$('#{0}').modal('hide');", "divAddProducto"))
End Select
ActualizaTotales = False
If UsuarioActual.Empresa.Funcionalidad(562).ToEntero > 0 Then CargaGastosServicios(UsuarioActual.Empresa.Funcionalidad(562).ToEntero)
If UsuarioActual.Empresa.UsaAC Then
CompruebaAgregar()
GuardaAC()
End If
UpPS.Update()
CargaGvPersonal()
End Sub
''' <summary>
''' Regresa el INDEX del row que acaba de agregar en el TMPDT
''' </summary>
''' <returns></returns>
Private Function AddPS(Cantidad As Double, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, CvePS As Integer, PS As String, CveTipoPS As Integer, CveSubProyectoContrato As String, SubProyecto As String, Proyecto As String, CveProyecto As String,
Obs As String, PU As Double, Total As Double, IVA As Double, RetIVA As Double, RetISR As Double, IEPSPS As Double, IEPSPSIVA As Double, Descuento As Double, Optional CveOrdenCompraDetalle As Integer = -1, Optional TCalculaTotales As Boolean = True,
Optional PSCodigo As String = "-", Optional PSDescripcion As String = "-", Optional CantidadF As Double = -1, Optional EntregaDirecta As Integer = -1, Optional OtrosGastos As Double = 0,
Optional CveSATPS As Integer = -1, Optional CargaXml As Boolean = False, Optional CveTipoGasto As Integer = -1, Optional TipoGasto As String = "", Optional PorcentajeIVA As Double = 0,
Optional PorcentajeIEPS As Double = 0, Optional PorcentajeRetIVA As Double = 0, Optional PorcentajeRetISR As Double = 0, Optional NoDeducible As Boolean = False) As Integer
Dim Row As DataRow = Nothing
Row = TmpDT.NewRow()
Dim Retorno As Integer = 0
Dim CveContrato = -1
Dim CveSubProyecto = -1
Dim Valores As String()
''CONTRATOS
If CveSubProyectoContrato.Contains("|"c) Then
Valores = CveSubProyectoContrato.Split("|"c)
CveContrato = Valores(1).ToEntero
CveSubProyecto = Valores(0).ToEntero
Else
CveSubProyecto = CveSubProyectoContrato.ToEntero
End If
'DR PS
Dim DrPS As DataRow = Nothing
If CvePS > 0 Then
DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0)
End If
If DrPS IsNot Nothing Then
Row("PSCodigo") = If(PSCodigo = "", DrPS("PSCodigo").ToString, PSCodigo)
Row("CveMetodoInventario") = DrPS("Inv_CveMetodoInventario").ToString.ToEntero
Else
Row("PSCodigo") = PSCodigo
Row("CveMetodoInventario") = 0
End If
If Modalidad = "U" Then
Row("Consec") = Con
Else
Row("Consec") = TmpDT.Rows.Count + 1
End If
If Version = "3.3" And CveSATPS > 0 Then
Dim DrPSSAT As DataRow = Nothing
If CargaXml Then
If GlobalDTPSATPS().FiltraParametros(String.Format("SATClavePS={0}", CveSATPS)).Rows.Count > 0 Then
DrPSSAT = GlobalDTPSATPS().FiltraParametros(String.Format("SATClavePS={0}", CveSATPS)).Rows(0)
End If
Else
If GlobalDTPSATPS().FiltraParametros(String.Format("CveSATPS={0}", CveSATPS)).Rows.Count > 0 Then
DrPSSAT = GlobalDTPSATPS().FiltraParametros(String.Format("CveSATPS={0}", CveSATPS)).Rows(0)
End If
End If
If DrPSSAT IsNot Nothing Then
Row("SATClaveProductoServicio") = DrPSSAT("SATClaveProductoServicio").ToString
Row("CveSATPS") = DrPSSAT("CveSATPS").ToString
End If
End If
Dim DecimalesPermitidos = 6
Row("CveConcepto") = TmpDT.Rows.Count + 1
Row("Cantidad") = Math.Round(Cantidad, DecimalesPermitidos)
Row("CantidadF") = If(CantidadF = -1, Math.Round(Cantidad, DecimalesPermitidos), Math.Round(CantidadF, DecimalesPermitidos))
Row("CveUM") = CveUM
Row("UM") = UM
Row("CveClasificacion") = CveClasificacion
Row("CveClasificacionActualizar") = CveClasificacion
Row("Clasificacion") = Clasificacion
Row("CvePS") = CvePS
Row("PS") = PS
Row("CveTipoPS") = CveTipoPS
Row("PSDescripcion") = PSDescripcion
Row("CveSubProyecto") = CveSubProyecto.ToEntero
Row("CveProyecto") = CveProyecto.ToEntero
Row("CveContrato") = CveContrato.ToEntero
Row("SubProyecto") = If(SubProyecto = "Seleccione", "Sin Sub Proyecto", SubProyecto)
Row("Proyecto") = If(Proyecto = "Seleccione", "Sin Proyecto", Proyecto)
Row("CveActivoFijo") = -1
Row("Obs") = Obs
Row("CveActivoFijo") = -1
Row("CodAF") = "-1"
Row("TipoAF") = -1
Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle
Row("EntregaDirecta") = EntregaDirecta
'If GlobalDTProductosServiciosEquivalencias(CvePS, CveUM).Rows.Count = 0 Then Row("CveEq") = 1 Else Row("CveEq") = 0
Row("NoDeducible") = NoDeducible
Row("PU") = Math.Round(PU, DecimalesPermitidos)
If CargaXml And Version = "3.3" Then
Row("IVA") = Math.Round(IVA, DecimalesPermitidos)
Row("IVAPorcentaje") = PorcentajeIVA
Row("RetIVA") = Math.Round(RetIVA, DecimalesPermitidos)
Row("RetIVAPorcentaje") = PorcentajeRetIVA
Row("RetISR") = Math.Round(RetISR, DecimalesPermitidos)
Row("RetISRPorcentaje") = PorcentajeRetISR
Row("IEPSPS") = Math.Round(IEPSPS, DecimalesPermitidos)
Row("IEPSPSPorcentaje") = PorcentajeIEPS
Else
'If DdlIVA.SelectedValue.ToDouble = 0 Then Row("IVA") = 0 Else Row("IVA") = Math.Round(IVA * Total, DecimalesPermitidos)
Row("IVA") = Math.Round(IVA * Total, DecimalesPermitidos)
Row("IVAPorcentaje") = IVA
Row("RetIVA") = Math.Round(RetIVA * Total, DecimalesPermitidos)
Row("RetIVAPorcentaje") = RetIVA
Row("RetISR") = Math.Round(RetISR * Total, DecimalesPermitidos)
Row("RetISRPorcentaje") = RetISR
Row("IEPSPS") = Math.Round(IEPSPS * Total, DecimalesPermitidos)
Row("IEPSPSPorcentaje") = IEPSPS
End If
Row("ImporteConImpuestos") = (Row("Cantidad").ToString.ToDouble * Row("PU").ToString.ToDouble) + Row("IVA").ToString.ToDouble + Row("IEPSPS").ToString.ToDouble - (Row("RetIVA").ToString.ToDouble + Row("RetISR").ToString.ToDouble)
Row("ImporteSinImpuestos") = Row("Cantidad").ToString.ToDouble * Row("PU").ToString.ToDouble
Row("IEPSPSIVA") = Math.Round(IEPSPSIVA * Total, DecimalesPermitidos)
Row("IEPSPSIVAPorcentaje") = IEPSPSIVA
Row("Descuento") = Math.Round(Descuento, DecimalesPermitidos)
Row("OtrosGastos") = Math.Round(OtrosGastos, DecimalesPermitidos)
Row("Total") = Math.Round(Total, DecimalesPermitidos)
Row("CveTipoGasto") = CveTipoGasto
Row("TipoGasto") = If(CveTipoGasto > 0, TipoGasto, "")
If UsuarioActual.Empresa.UsaAC Then
Row("CveProgramaOperativo") = DdlACGeneral1.SelectedValue.ToEntero
Row("CveUnidadAdministrativa") = DdlACGeneral2.SelectedValue.ToEntero
Row("CveFuenteFinanciamiento") = DdlACGeneral3.SelectedValue.ToEntero
Row("CveTipoGastoAC") = DdlACGeneral4.SelectedValue.ToEntero
Row("CveClasificacionOG") = DdlACGeneral5.SelectedValue.ToEntero
End If
TmpDT.Rows.Add(Row)
TmpDT.Rows.IndexOf(Row)
If TCalculaTotales Then
CalculaTotales(True)
End If
Return Retorno
End Function
Private Sub AddPS2(Optional pCalculaTotales As Boolean = True, Optional EsNoDeducible As Boolean = False)
Dim view As DataView = New DataView(TmpDT)
view.Sort = "Consec"
GvPS.DataSource = view
'GvPS.DataSource = TmpDT
GvPS.DataBind()
CargaGvInv()
If pCalculaTotales Then
CalculaTotales(True, EsNoDeducible)
End If
End Sub
Private Sub UpdatePS()
Dim DrPS As DataRow = Nothing
Try
DrPS = TmpDT.Select($"Consec = {Index}")(0)
If DrPS Is Nothing Then
Alert("Ocurrió un error al editar el concepto.", TipoMensaje.MsgError)
Exit Sub
End If
Catch ex As Exception
Alert("Ocurrió un error al intentar editar el concepto.", TipoMensaje.MsgError)
Exit Sub
End Try
'BANDERA
Dim AplicaCalculaTotales = False
'DATOS GENERALES
DrPS("Obs") = TxtObsPS.Text.Trim
DrPS("Proyecto") = DdlProyecto.SelectedItem.Text
DrPS("CveProyecto") = DdlProyecto.SelectedValue.ToEntero
DrPS("SubProyecto") = DdlSubProyecto.SelectedItem.Text
DrPS("CveSubProyecto") = DdlSubProyecto.SelectedValue.ToEntero
'IMPORTES - [CANTIDAD Y PRECIO]
Dim Cantidad = DrPS("Cantidad").ToString.ToDouble
Dim PU = DrPS("PU").ToString.ToDouble
Dim Descuento = DrPS("Descuento").ToString.ToDouble
Dim OtrosGastos = DrPS("OtrosGastos").ToString.ToDouble
Dim Total = (Cantidad * PU) - Descuento + OtrosGastos
DrPS("NoDeducible") = ChkEsNoDeduciblePS.Checked
If Cantidad <> TxtCantidad.Text.Trim.ToDouble OrElse PU <> TxtPrecio.Text.Trim.ToDouble OrElse Descuento <> TxtDescuentoModal.Text.ToDouble OrElse OtrosGastos <> TxtOtrosGastos.Text.ToDouble Then
Cantidad = TxtCantidad.Text.Trim.ToDouble
PU = TxtPrecio.Text.Trim.ToDouble
Descuento = TxtDescuentoModal.Text.ToDouble
OtrosGastos = TxtOtrosGastos.Text.ToDouble
Total = (Cantidad * PU) - Descuento + OtrosGastos
DrPS("Cantidad") = Cantidad
DrPS("PU") = PU
DrPS("Descuento") = Descuento
DrPS("OtrosGastos") = OtrosGastos
DrPS("Total") = Total
AplicaCalculaTotales = True
End If
'PS - CLASIFICACION
If DdlPS.SelectedValue.ToEntero > 0 Then
Dim PSRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
If PSRow IsNot Nothing Then
DrPS("CveClasificacion") = PSRow("CveClasificacion").ToString
DrPS("Clasificacion") = PSRow("Clasificacion").ToString
DrPS("CvePS") = DdlPS.SelectedValue
DrPS("PS") = PSRow("PS").ToString
DrPS("CveTipoPS") = PSRow("CveTipoPS").ToString.ToEntero
DrPS("CveSATPS") = PSRow("CveSATPS").ToString.ToEntero
DrPS("SATClaveProductoServicio") = PSRow("SATClaveProductoServicio").ToString
'RESPETAR VALORES DE LA PANTALLA
'IVA = PSRow("IVA").ToString.ToDouble
'If IVA = -1 Then
' IVA = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero()).FiltroPrimeroValor("IVA").ToDouble
'End If
'RetIVA = If(PSRow("RetIVA").ToString = "-1", ViewState("RetIVA"), PSRow("RetIVA").ToString).ToString.ToDouble
'RetISR = If(PSRow("RetISR").ToString = "-1", ViewState("RetISR"), PSRow("RetISR").ToString).ToString.ToDouble
'IEPSPS = If(PSRow("IEPSPorcentaje").ToString = "-1", ViewState("IEPSPS"), PSRow("IEPSPorcentaje").ToString).ToString.ToDouble
'IEPSPSIVA = If(PSRow("IEPSGrabaIVA").ToString = "True", PSRow("IEPSPorcentaje").ToString.ToDouble, 0)
End If
End If
'UM
DrPS("CveUM") = ddlUM.SelectedValue.ToEntero
DrPS("UM") = ddlUM.SelectedItem.Text
'TIPO DE GASTO
DrPS("CveTipoGasto") = DdlTipoGasto.SelectedValue.ToEntero
DrPS("TipoGasto") = If(DdlTipoGasto.SelectedValue.ToEntero > 0, DdlTipoGasto.SelectedItem.Text, "")
'IMPUESTOS: SI ES COMPRA, FACUTRA O CON OC, NO MODIFICA IMPUESTOS!!
'Dim IVA = (TxtIVAModal.Text.ToDouble / 100)
Dim IVA = Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2)
Dim RetISR = (TxtRetISRModal.Text.ToDouble / 100)
Dim RetIVA = (TxtRetIVAModal.Text.ToDouble / 100)
Dim IEPSPS = (TxtIEPSModal.Text.ToDouble / 100)
Dim IEPSPSIVA = 0
If Not (CveCompra > 0 Or CveFactura > 0 Or OCVinculada) Then
'If DdlIVA.SelectedValue.ToDouble = 0 Then DrPS("IVA") = 0 Else DrPS("IVA") = IVA * Total
DrPS("IVA") = IVA * Total
DrPS("IVAPorcentaje") = IVA
DrPS("RetIVA") = RetIVA * Total
DrPS("RetIVAPorcentaje") = RetIVA
DrPS("RetISR") = RetISR * Total
DrPS("RetISRPorcentaje") = RetISR
DrPS("IEPSPS") = IEPSPS * Total
DrPS("IEPSPSPorcentaje") = IEPSPS
DrPS("IEPSPSIVA") = IEPSPSIVA * Total
DrPS("IEPSPSIVAPorcentaje") = IEPSPSIVA
AplicaCalculaTotales = True
End If
TmpDT.AcceptChanges()
AddPS2(AplicaCalculaTotales)
CargaGvInv()
End Sub
#End Region
#Region " RECLASIFICA PARTIDAS - CLASIFICACION - SUBPROYECTO "
Private Sub CargaClasificaciones()
If UsuarioActual.Empresa.UsaAC Then
DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion")
DdlAplicaClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion")
Else
DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion")
DdlAplicaClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion")
End If
DdlClasificacion.DataBind()
DdlAplicaClasificacion.DataBind()
End Sub
Private Sub BtnAplicarClasificacion_Click(sender As Object, e As EventArgs) Handles BtnAplicarClasificacion.Click
ReclasificaClasificacion()
End Sub
Protected Sub DdlAplicaClasificacion_SelectedIndexChanged(sender As Object, e As EventArgs)
ReclasificaClasificacion()
End Sub
Private Sub ReclasificaClasificacion()
If Not DdlAplicaClasificacion.SelectedValue.ToEntero > 0 Then
Exit Sub
End If
Dim ErrorPS = False
'Actualiza Clasificacion directamente a la DB cuando ya se tiene alguna clasificacion
'Solo cuando el PS ya esta registrado
If UsuarioActual.TienePermisoProceso(104) Then
Dim ObjPS As New ClsProductosServicios
For Each gvr As GridViewRow In GvPS.Rows
If gvr.FCCheckBox("CheckClasificacion").Checked AndAlso gvr.DataKey("CvePS").ToString.ToEntero > 0 Then
If Not ObjPS.UpdateClasificacionPS(DdlAplicaClasificacion.SelectedValue.ToEntero, UsuarioActual.CveUsuario, gvr.DataKey("CvePS").ToString.ToEntero) Then
ErrorPS = True
Exit For
End If
End If
Next
ObjPS.Dispose()
End If
If Not ErrorPS Then
Dim index = 0
For Each Dr As DataRow In TmpDT.Rows
If Dr("CvePS").ToString.ToEntero = 0 OrElse Dr("CveClasificacion").ToString.ToEntero <= 0 Then
'Dr("CveClasificacion") = DdlClasificacion.SelectedValue.ToEntero
Dr("Clasificacion") = DdlAplicaClasificacion.SelectedItem.Text
Dr("CveClasificacionActualizar") = DdlAplicaClasificacion.SelectedValue.ToEntero
ElseIf UsuarioActual.TienePermisoProceso(104) AndAlso GvPS.Rows(index).FCCheckBox("CheckClasificacion").Checked Then
Dr("Clasificacion") = DdlAplicaClasificacion.SelectedItem.Text
Dr("CveClasificacionActualizar") = DdlAplicaClasificacion.SelectedValue.ToEntero
End If
index += 1
Next
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
Alert("La Clasificacion ha sido aplicada correctamente.", TipoMensaje.MsgInformacion)
'Para validar AC
If UsuarioActual.Empresa.UsaAC Then
CompruebaAgregar()
End If
Else
Alert("Ocurrio un error al actualizar la Clasificación de los Productos/Servicios")
End If
End Sub
Protected Sub DdlAsignarProyecto_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlAsignarProyecto.SelectedIndexChanged
CargaSubProyectoAsignado()
End Sub
Private Sub CargaProyectoAsignado()
DdlAsignarProyecto.Items.Clear()
DdlAsignarProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1).FiltraParametros("", "", {"CveProyecto", "Proyecto"}), GlobalDTProyectos(UsuarioActual.CveEmpresa, -1).FiltraParametros("", "", {"CveProyecto", "Proyecto"}))
DdlAsignarProyecto.DataBind()
DdlAsignarProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
UpReclasificarSubProyecto.Update()
End Sub
Private Sub CargaSubProyectoAsignado()
DdlAsignaSubProyecto.Items.Clear()
If DdlAsignarProyecto.SelectedValue.ToEntero > 0 Then
DdlAsignaSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, DdlAsignarProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(DdlAsignarProyecto.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa, 1))
End If
DdlAsignaSubProyecto.DataBind()
DdlAsignaSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
UpReclasificarSubProyecto.Update()
End Sub
Protected Sub DdlAsignaSubProyecto_SelectedIndexChanged(sender As Object, e As EventArgs)
ReclasificaSubProyecto()
End Sub
Private Sub BtnAsignarSubProyecto_Click(sender As Object, e As EventArgs) Handles BtnAsignarSubProyecto.Click
ReclasificaSubProyecto()
End Sub
Private Sub ReclasificaSubProyecto()
If Not GvPS.Rows.Count > 0 Then
Alert("No hay partidas para reclasificar el SubProyecto", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If Not DdlAsignaSubProyecto.SelectedValue.ToEntero > 0 Then
Exit Sub
End If
Dim CveSubProyecto As Integer
Dim CveProyecto As Integer
If DdlAsignaSubProyecto.SelectedValue.Contains("|") Then
CveSubProyecto = DdlAsignaSubProyecto.SelectedValue.Split("|"c)(0).ToString.ToEntero
Else
CveSubProyecto = DdlAsignaSubProyecto.SelectedValue.ToEntero()
End If
If DdlAsignarProyecto.SelectedValue.Contains("|") Then
CveProyecto = DdlAsignarProyecto.SelectedValue.Split("|"c)(0).ToString.ToEntero
Else
CveProyecto = DdlAsignarProyecto.SelectedValue.ToEntero()
End If
For Each Dr As DataRow In TmpDT.Rows
Dr("CveProyecto") = CveProyecto
Dr("Proyecto") = If(CveSubProyecto = -1, "SE", DdlAsignarProyecto.SelectedItem.Text)
Dr("CveSubProyecto") = CveSubProyecto
Dr("SubProyecto") = If(CveSubProyecto = -1, "SE", DdlAsignaSubProyecto.SelectedItem.Text)
Next
GvPS.DataSource = TmpDT.FiltraParametros("", "Consec")
GvPS.DataBind()
UpPS.Update()
CargaGvPersonal()
'Para validar AC
If UsuarioActual.Empresa.UsaAC Then
CompruebaAgregar()
End If
Alert("SubProyectos cambiados correctamente", TipoMensaje.MsgInformacion)
End Sub
Protected Sub DdlTipoGastoAsignar_SelectedIndexChanged(sender As Object, e As EventArgs)
If Not GvPS.Rows.Count > 0 Then
Alert("No hay partidas para reclasificar el tipo de gasto", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If Not DdlTipoGastoAsignar.SelectedValue.ToEntero > 0 Then
Exit Sub
End If
If DdlTipoGastoAsignar.SelectedValue.ToEntero > 0 Then
For Each Dr As DataRow In TmpDT.Rows
Dr("CveTipoGasto") = DdlTipoGastoAsignar.SelectedValue.ToEntero
Dr("TipoGasto") = DdlTipoGastoAsignar.SelectedItem.Text
Next
GvPS.DataSource = TmpDT.FiltraParametros("", "Consec")
GvPS.DataBind()
UpPS.Update()
End If
If UsuarioActual.Empresa.UsaAC Then
CompruebaAgregar()
End If
Alert("Los tipos de gastos han sido cambiados correctamente", TipoMensaje.MsgInformacion)
End Sub
#End Region
#Region " PS ALIAS "
Protected Sub DdlPSAlias_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPSAlias2.selectedindexchange
If Not DdlPSAlias2.SelectedValue = "" Then
Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPSAlias2.SelectedValue.ToEntero).FiltroPrimero("")
If DrPS IsNot Nothing Then
DdlUnidadAlias.DataSource = GlobalDTProductosServiciosEquivalencias(DdlPSAlias2.SelectedValue.ToEntero, -1)
DdlUnidadAlias.DataBind()
HdnPSAliasCveClasificacion.Value = DrPS("CveClasificacion").ToString
HdnPSAliasClasificacion.Value = DrPS("Clasificacion").ToString
End If
End If
UpPSAlias.Update()
End Sub
Protected Sub BtnAddPSAlias_Click(sender As Object, e As EventArgs) Handles BtnAddPSAlias.Click
Dim PS As New ClsProductosServicios
Dim CvePS = -1
Dim tPS = ""
CvePS = DdlPSAlias2.SelectedValue.ToEntero
tPS = DdlPSAlias2.SelectedText
If PS.AddPSAlias(TxtPSAlias.Text.Trim, CvePS) Then
GlobalDTProductosServiciosAlias(-1) = PS.DtResultados
TmpDT.Rows(HdnAliasInd.Value.ToEntero)("CvePS") = CvePS
TmpDT.Rows(HdnAliasInd.Value.ToEntero)("PS") = tPS
TmpDT.Rows(HdnAliasInd.Value.ToEntero)("CveUM") = DdlUnidadAlias.SelectedValue.ToEntero
TmpDT.Rows(HdnAliasInd.Value.ToEntero)("UM") = DdlUnidadAlias.SelectedItem.Text
TmpDT.Rows(HdnAliasInd.Value.ToEntero)("CveClasificacion") = HdnPSAliasCveClasificacion.Value.ToEntero
TmpDT.Rows(HdnAliasInd.Value.ToEntero)("Clasificacion") = HdnPSAliasClasificacion.Value
TmpDT.Rows(HdnAliasInd.Value.ToEntero)("Obs") = TxtPSAlias.Text.Trim
'busco si el producto está en otros renglones QUE NO LO TENGAN ASIGNADO, LO VINCULE
For Each drt As DataRow In TmpDT.Select($"PS ='{TxtPSAlias.Text.Trim}' and ISNULL(CvePS,0) = 0")
drt("CvePS") = CvePS
drt("PS") = tPS
drt("CveUM") = DdlUnidadAlias.SelectedValue.ToEntero
drt("UM") = DdlUnidadAlias.SelectedItem.Text
drt("CveClasificacion") = HdnPSAliasCveClasificacion.Value.ToEntero
drt("Clasificacion") = HdnPSAliasClasificacion.Value
drt("Obs") = TxtPSAlias.Text.Trim
Next
TmpDT.AcceptChanges()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
Alert("Registro actualizado con exito.", TipoMensaje.MsgInformacion)
RegistraScript("$('#ModalPSAlias').modal('hide');", "ModalPSAliasHide")
End If
PS.Dispose()
End Sub
Private Sub RecargaGlobalEquivalencias()
Dim Hilo As New System.Threading.Thread(AddressOf GeneraGlobalEquivalencias)
Hilo.Start()
End Sub
Private Sub GeneraGlobalEquivalencias()
Dim ObjPS = New ClsProductosServicios
If ObjPS.GetPSEquivalencias(-1, -1) Then
GlobalDTProductosServiciosEquivalencias(-1, -1) = ObjPS.DtResultados
End If
ObjPS.Dispose()
End Sub
#End Region
#Region " UM: ALIAS - EQUIVALENCIAS "
Private Sub CargarUMAlias()
DdlUMAlias.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa)
DdlUMAlias.DataBind()
DdlUMAlias.Items.Insert(0, New ListItem("Seleccione", "-1"))
UpUMAlias.Update()
End Sub
Protected Sub DdlUMAlias_SelectedIndexChanged(sender As Object, e As EventArgs)
If GlobalDTProductosServiciosEquivalencias(TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)("CvePS").ToString.ToEntero, DdlUMAlias.SelectedValue.ToEntero).Rows.Count > 0 Then
RegistraScript("$('#RowUMEquivalencia').addClass('hidden')", "RowUMEquivalenciaShow")
Else
RegistraScript("$('#RowUMEquivalencia').removeClass('hidden')", "RowUMEquivalenciaHide")
End If
RegistraScript("$('#RowUMAlias').removeClass('hidden');$('#LtUMAlias').text('Registrar Unidad de Medida Alias'); $('#BtnUMAlias').val('Registrar Alias'); SetTextEquivalencia(1);", "RowUMAliasHide")
End Sub
Protected Sub BtnUMAlias_Click(sender As Object, e As EventArgs)
Dim ObjUM As New ClsUnidadesMedida
Dim ObjPS As New ClsProductosServicios(ObjUM.IniciaTransacSQL())
Dim TieneError = False
Dim DtEquivalencia = GlobalDTProductosServiciosEquivalencias(TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)("CvePS").ToString.ToEntero, -1)
Dim CveUM = -1
Dim UM = ""
Dim Equivalencia = 0.0
Select Case HdnUMAliasModalidad.Value.ToEntero
Case 1 'AGREGA ALIAS
If Not ObjUM.AddUnidadMedidaAlias(TxtUMAlias.Text.Trim, DdlUMAlias.SelectedValue.ToEntero, If(HdnUMAliasCveSATUM.Value.ToEntero > 0, HdnUMAliasCveSATUM.Value.ToEntero, -1)) Then
TieneError = True
End If
'SI NO TIENE EQUIVALENCIA DEL PS - AGREGA LA EQUIVALENCIA
If Not TieneError Then
If Not GlobalDTProductosServiciosEquivalencias(TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)("CvePS").ToString.ToEntero, DdlUMAlias.SelectedValue.ToEntero).Rows.Count > 0 Then
If Not ObjPS.AddPSEquivalencias(TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)("CvePS").ToString.ToEntero, DdlUMAlias.SelectedValue.ToEntero, TxtUMEquivalenciaCantidad.Text.ToDecimal, False, 0, UsuarioActual.CveUsuario) Then
TieneError = True
End If
End If
End If
'CveUM = DtEquivalencia.FiltroPrimeroValor("CveUM", "UnidadBase = 1").ToEntero
'UM = DtEquivalencia.FiltroPrimeroValor("UM", "UnidadBase = 1")
CveUM = DdlUMAlias.SelectedValue.ToEntero
UM = TxtUMAlias.Text.Trim
Equivalencia = TxtUMEquivalenciaCantidad.Text.ToDouble
Case 2
Case 3 'AGREGA EQUIVALENCIA
CveUM = DtEquivalencia.FiltroPrimeroValor("CveUM", "UnidadBase = 1").ToEntero
UM = DtEquivalencia.FiltroPrimeroValor("UM", "UnidadBase = 1")
Equivalencia = TxtUMEquivalenciaCantidad.Text.ToDouble
If Not TieneError Then
If Not ObjPS.AddPSEquivalencias(TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)("CvePS").ToString.ToEntero, TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)("CveUM").ToString.ToEntero, TxtUMEquivalenciaCantidad.Text.ToDecimal, False, 0, UsuarioActual.CveUsuario) Then
TieneError = True
End If
End If
Case 4 'AGREGA UNIDAD DE MEDIDA
CveUM = ObjUM.AddUnidadMedida(TxtUMAlias.Text.Trim, TxtUMAbreviatura.Text.Trim, "", "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, If(HdnUMAliasCveSATUM.Value.ToEntero > 0, HdnUMAliasCveSATUM.Value.ToEntero, -1))
UM = TxtUMAlias.Text.Trim
Equivalencia = TxtUMEquivalenciaCantidad.Text.ToDouble
If Not CveUM > 0 Then
TieneError = True
End If
'AGREGA LA EQUIVALENCIA
If Not TieneError Then
If Not ObjPS.AddPSEquivalencias(TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)("CvePS").ToString.ToEntero, CveUM, TxtUMEquivalenciaCantidad.Text.ToDecimal, False, 0, UsuarioActual.CveUsuario) Then
TieneError = True
End If
End If
'AGREGA ALIAS SI ES DIFERENTE EL TEXTO AL QUE VIENE EN EL XML
If Not TieneError And TxtUMAlias.Text.Trim <> HdnUMAlias.Value Then
If Not ObjUM.AddUnidadMedidaAlias(HdnUMAlias.Value, CveUM) Then
TieneError = True
End If
End If
'CveUM = DtEquivalencia.FiltroPrimeroValor("CveUM", "UnidadBase = 1").ToEntero
'UM = DtEquivalencia.FiltroPrimeroValor("UM", "UnidadBase = 1")
Case Else
End Select
If Not TieneError Then
ObjPS.Commit()
Alert("Unidad de medida actualizada correctamente.", TipoMensaje.MsgInformacion)
'ACTUALIZA DIRECTO DT
Dim Dr = TmpDT.Rows(HdnUMAliasInd.Value.ToEntero)
Dim CvePSModificado = Dr("CvePS").ToString.ToEntero
Dim CveUMModificada = Dr("CveUM").ToString.ToEntero
Dim UMModificada = Dr("UM").ToString
For Each DrUM As DataRow In TmpDT.Rows
If DrUM("CveUM").ToString.ToEntero = CveUMModificada And DrUM("UM").ToString = UMModificada Then
DrUM("CveUM") = CveUM
DrUM("UM") = UM
If Equivalencia > 0 Then
DrUM("Cantidad") = DrUM("Cantidad").ToString.ToDouble * Equivalencia
DrUM("PU") = DrUM("PU").ToString.ToDouble / Equivalencia
End If
TmpDT.AcceptChanges()
End If
Next
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
RegistraScript("$('#ModalUMAlias').modal('hide');", "ModalUMAliasHide")
DdlUMAlias.SelectedValue = "-1"
UpUMAlias.Update()
RecargaGlobalUM()
Else
ObjPS.RollBack()
Alert("Ocurrió un error al guardar la unidad de medida", TipoMensaje.MsgError)
End If
ObjPS.Dispose()
End Sub
Protected Sub LBAplicarEquivalencia_Click(sender As Object, e As EventArgs)
Dim Dr = TmpDT.Rows(CType(CType(sender, LinkButton).NamingContainer, GridViewRow).RowIndex)
Dim DtEquivalencia = GlobalDTProductosServiciosEquivalencias(Dr("CvePS").ToString.ToEntero, -1)
Dim Equivalencia = DtEquivalencia.FiltroPrimeroValor("Cantidad", $"CveUM = {Dr("CveUM")}").ToDouble
If Equivalencia > 0 Then
Dr("CveUM") = DtEquivalencia.FiltroPrimeroValor("CveUM", "UnidadBase = 1")
Dr("UM") = DtEquivalencia.FiltroPrimeroValor("UM", "UnidadBase = 1")
Dr("Cantidad") = Dr("Cantidad").ToString.ToDouble * Equivalencia
Dr("PU") = Math.Round(Dr("PU").ToString.ToDouble / Equivalencia, 6)
TmpDT.AcceptChanges()
GvPS.DataSource = TmpDT
GvPS.DataBind()
UpPS.Update()
Else
Alert("La cantidad de equivalencia de la unidad de medida debe ser mayor a 0", TipoMensaje.MsgAdvertencia)
End If
End Sub
Private Sub RecargaGlobalUM()
Dim Hilo As New System.Threading.Thread(AddressOf GeneraGlobalUM)
Hilo.Start()
End Sub
Private Sub GeneraGlobalUM()
Dim ObjPS = New ClsProductosServicios
Dim OjbUM As New ClsUnidadesMedida
If ObjPS.GetPSEquivalencias(-1, -1) Then
GlobalDTProductosServiciosEquivalencias(-1, -1) = ObjPS.DtResultados
End If
If OjbUM.GetUnidadesMedidaAlias(-1) Then
GlobalDTUnidadesMedidaAlias = OjbUM.DtResultados
End If
ObjPS.Dispose()
OjbUM.Dispose()
End Sub
#End Region
#Region " COMPLEMENTOS PAGO "
Private Sub CargaComplementosPago()
Dim ObjCompras As New ClsCompras
If ObjCompras.GetCompraComplementoPago(CveCompra, UsuarioActual.CveEmpresa) Then
GvComplementoPagos.DataSource = ObjCompras.DtResultados
LnkCompleplementos.Visible = ObjCompras.DtResultados.Rows.Count > 0
Else
GvComplementoPagos.DataSource = Nothing
LnkCompleplementos.Visible = False
End If
If UsuarioActual.TienePermisoProceso(272) Then
GvComplementoPagos.Columns(5).Visible = True
End If
ObjCompras.Dispose()
GvComplementoPagos.DataBind()
UpComplementoPagos.Update()
End Sub
Protected Sub GvComplementoPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvComplementoPagos.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(3).Text = String.Format("<a class=""texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"" target=""_blank""><i class=""fa fa-ad-excel""></i></a>", Encripta(String.Format("OP=Fact&EXT=xml&CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo(("RFCde").ToString.Replace("&", "%26%")))))
e.Row.Cells(4).Text = String.Format("<a class=""texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"" target=""_blank""><i class=""fa fa-ad-pdf""></i></a>", Encripta(String.Format("OP=Fact&EXT=pdf&CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo("RFCde").ToString.Replace("&", "%26%"))))
End If
End Sub
#End Region
#Region " OTROS GASTOS "
Protected Sub LnkAddOtrosGastos_Click(sender As Object, e As EventArgs)
DdlOrdenCorte.SelectedIndex = 0
DdlOrdenCorte.SelectedValueExist(CveOrdenCorte)
UpOtrosGastos.Update()
RegistraScript("$('#DivOtrosGastos').modal();")
End Sub
Protected Sub BtnAddOtrosGastos_Click(sender As Object, e As EventArgs)
CveOrdenCorte = DdlOrdenCorte.SelectedValue.ToEntero()
RegistraScript("$('#DivOtrosGastos').modal('hide');")
End Sub
#End Region
'#Region " DROPDOWN IVA "
' 'Protected Sub DdlIVA_SelectedIndexChanged(sender As Object, e As EventArgs)
' ' CalculaTotales(True)
' 'End Sub
'#End Region
#Region " APLICA NC "
Private Sub InicializaAplicaNCFact()
HLAplicaNCFact.Visible = True
LblTotalNC.Text = TxtTotal.Text.FormatoNumero
CargaCuentasXPagar()
End Sub
Private Sub CargaCuentasXPagar()
Dim ObjMovtos As New ClsMovimientos()
If ObjMovtos.GetCxPProveedor(CveProveedor, "-1", "-1", -1, -1, -1, -1, -1, -1, -1, -1, "-1", "-1") Then
GvFacturaNC.DataSource = ObjMovtos.DtResultados.FiltraParametros("Saldo > 0")
TmpCXP = ObjMovtos.DtResultados.FiltraParametros("Saldo > 0")
End If
ObjMovtos.Dispose()
GvFacturaNC.DataBind()
UpFacturaNC.Update()
End Sub
Protected Sub GvFacturaNC_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
If Not e.Row.DBCampo("CveCompra").ToEntero > 0 Then
e.Row.CssClass = "Totales"
e.Row.Cells(0).Text = ""
e.Row.Cells(4).Text = ""
Else
e.Row.FCTextBox("TxtImporte").Attributes.Add("onkeyup", $"LimitaCantidadNC({e.Row.DBCampo("Saldo").ToDouble},{TxtTotal.Text.ToDouble}, this);")
e.Row.FCCheckBox("ChkFacturaNC").Attributes.Add("onclick", $"FnCambiaFacturaNC({e.Row.DBCampo("Saldo").ToDouble},{e.Row.FCTextBox("TxtImporte").ClientID},{TxtTotal.Text.ToDouble},{LblAplicado.ClientID}, this);")
End If
End If
End Sub
#End Region
#Region " DEVOLUCION DE ALMACEN - DEVOLUCION AL PROVEEDOR "
Private Sub InicializaDevolucionAlmacen()
If Not GvInv.Rows.Count > 0 Or LblCompraEstatus.Text = "CANCELADA" Then
Exit Sub
End If
If CveCompra > 0 Then
'If CveVenta > 0 And DdlTipoComprobante.SelectedValue.Contiene({"Rem", "Ped"}) Then
If Not EstatusAlmacen = 2 Then
LiDevolucionAlmacen.Visible = True
End If
If EstatusAlmacen = 1 Then
LBDevolucionAlmacen.Text = "<i class='fa fa-pencil'></i> Cancelar Devolución Almacén"
LBDevolucionAlmacen.ToolTip = "¿Está seguro de Cancelar la Devolución de Almacén?"
Else
LBDevolucionAlmacen.Text = "<i class='fa fa-pencil'></i> Solicitar Devolución Almacén"
LBDevolucionAlmacen.ToolTip = "¿Está seguro de Solicitar la Devolución de Almacén?"
End If
End If
'UpInvDev.Update()
End Sub
Protected Sub LBDevolucionAlmacen_Click(sender As Object, e As EventArgs)
Dim ObjCompras As New ClsCompras
If ObjCompras.UpdateEstatusAlmacen(CveCompra, If(EstatusAlmacen = 1, 0, 1)) Then
EstatusAlmacen = If(EstatusAlmacen = 1, 0, 1)
Alert(If(EstatusAlmacen = 1, "La solicitud de devolución de almacen se guardo correctamente.", "La solicitud de almacen se canceló correctamente."))
End If
ObjCompras.Dispose()
InicializaDevolucionAlmacen()
End Sub
Private Sub HabilitaNCInv()
If Not UsuarioActual.CveUsuario = 100 Then
If Not UsuarioActual.CveEmpresa.Contiene(72, 119, 80) Then
Exit Sub
End If
End If
If CveCompra > 0 And GvInvMov.Rows.Count > 0 Then
Dim ObjInventarios As New ClsInventarios
If ObjInventarios.RecepcionAlmacenGet(CveCompra, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then
DtPendientesAlmacen = ObjInventarios.DtResultados.FiltraParametros("CantidadF > 0").Copy
End If
ObjInventarios.Dispose()
If DtPendientesAlmacen IsNot Nothing AndAlso DtPendientesAlmacen.Rows.Count > 0 Then
ChkNCInv.Visible = True
GVNCInv.DataSource = DtPendientesAlmacen
GVNCInv.DataBind()
End If
End If
End Sub
Protected Sub ChkNCInv_CheckedChanged(sender As Object, e As EventArgs)
CargaAnticipos(CveProveedor, If(ChkNCInv.Checked, "NC", "-1"))
UpAnticipos.Update()
End Sub
Private Sub CargaNCINV()
Dim SaldoAnticipo = 0.0
Dim CveCompras As String = ""
If ChkNCInvNC.Checked Then
For Each gvr As GridViewRow In GvFacturaNC.Rows
If gvr.FCCheckBox("ChkFacturaNC") IsNot Nothing AndAlso gvr.FCCheckBox("ChkFacturaNC").Checked Then
SaldoAnticipo += gvr.FCTextBox("TxtImporte").Text.ToDouble
If CveCompras <> "" Then
CveCompras = $"{CveCompras},{gvr.DataKey("CveCompra").ToString}"
Else
CveCompras = gvr.DataKey("CveCompra").ToString
End If
End If
Next
Else
For Each gvr As GridViewRow In GVAnticipos.Rows
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
SaldoAnticipo += gvr.FCTextBox("TxtAnticipo").Text.ToDouble
End If
Next
End If
If SaldoAnticipo <= 0 Then
Alert("No hay movimientos seleccionados para aplicar", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
LbNCInvSaldo.Text = SaldoAnticipo.FormatoNumero()
If ChkNCInvNC.Checked Then
Dim ObjInventarios As New ClsInventarios
If ObjInventarios.RecepcionAlmacenGet(-1, -1, UsuarioActual.CveEmpresa, CveProveedor) AndAlso ObjInventarios.DtResultados.FiltraParametros($"CveCompra IN ({CveCompras}) AND CantidadF > 0").Rows.Count > 0 Then
DtPendientesAlmacen = ObjInventarios.DtResultados.FiltraParametros($"CveCompra IN ({CveCompras}) AND CantidadF > 0").Copy
End If
ObjInventarios.Dispose()
End If
If (DtPendientesAlmacen IsNot Nothing AndAlso DtPendientesAlmacen.Rows.Count > 0) Then
If ChkNCInvNC.Checked Then
GVNCInv.DataSource = DtPendientesAlmacen
GVNCInv.DataBind()
UpNCInv.Update()
RegistraScript("$('#FacturaNC').modal('hide');", "FacturaNC")
End If
RegistraScript("$('#ModalNCInv').modal('show');", "ModalNCInv")
Else
If ChkNCInvNC.Checked Then
Alert("Niguna de las facturas seleccionadas cuenta con productos pendientes de darles entrada.", TipoMensaje.MsgAdvertencia)
ChkNCInvNC.Checked = False
UpChkNCInvNC.Update()
Exit Sub
Else
RegistraScript("$('#ModalNCConfirmación').modal('show');", "ModalNCInv")
End If
End If
UpNCInv.Update()
End Sub
Protected Sub GVNCInv_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVNCInv.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
'e.Row.FCCheckBox("cbInv").Attributes.Add("onclick", "FnCambiaInvNC(this);")
e.Row.FCTextBox("TxtCantidadNCInv").Attributes.Add("onkeyup", $"ValidarCantidad(this,{e.Row.DBCampo("CantidadF")});FnCambiaInvNC(this);")
End If
End Sub
Protected Sub BtnNCInv_Click(sender As Object, e As EventArgs)
If ChkNCInvNC.Checked Then
RegistraScript("$('#ModalNCInv').modal('hide');", "ModalNCInv")
RegistraScript("$('#DivAnticipos').modal('hide');", "FacturaNC")
Exit Sub
End If
Dim Contador = 0
Dim CveCompraNC = -1
For Each gvr As GridViewRow In GVAnticipos.Rows
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
Contador += 1
CveCompraNC = gvr.DataKey("CveCompra").ToString.ToEntero
End If
Next
If Contador <> 1 Then
Alert("Debe seleccionar por lo menos una NC a aplicar.", TipoMensaje.MsgAdvertencia)
RegistraScript("$('#ModalNCInv').modal('hide');", "ModalNCInv")
RegistraScript("$('#DivAnticipos').modal('hide');", "ModalAnticipos")
Exit Sub
End If
If Not CveCompraNC > 0 Then
Alert("Ocurrió un error al guardar la cancelación de inventarios. Por favor comuniquese con asistencia SIG", TipoMensaje.MsgError)
Exit Sub
End If
Dim ObjCompras As New ClsCompras
Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL)
Dim TieneError = False
For Each Gvr As GridViewRow In GVNCInv.Rows
If Gvr.FCTextBox("TxtCantidadNCInv").Text.ToDouble > 0 Then
If Not ObjCompras.ComprasDetalleDevolucionesAdd(Gvr.DataKey("CveCompraDetalle").ToEntero, CveCompraNC, Gvr.FCTextBox("TxtCantidadNCInv").Text.ToDouble, UsuarioActual.CveEmpresa) Then
TieneError = True
Exit For
End If
End If
Next
If Not TieneError Then
GuardaAnticipos(ObjCompras, ObjConta)
Else
ObjCompras.RollBack()
End If
ObjCompras.Dispose()
RegistraScript("$('#ModalNCInv').modal('hide');", "ModalNCInv")
RegistraScript("$('#DivAnticipos').modal('hide');", "ModalAnticipos")
End Sub
Protected Sub BtnNCConfirmacion_Click(sender As Object, e As EventArgs)
GuardaAnticipos(Nothing, Nothing)
End Sub
#End Region
#Region " INVENTARIO: MOVIMIENTOS DE LA COMPRA "
Private Sub InventarioMov()
Dim ObjVentas As New ClsInventarios
If ObjVentas.GetInv_ComprasMov(CveCompra, UsuarioActual.CveEmpresa) Then
If ObjVentas.DtResultados.Rows.Count > 0 Then
GvInvMov.DataSource = ObjVentas.DtResultados
End If
End If
GvInvMov.DataBind()
GvInvMov.Visible = True
ObjVentas.Dispose()
UpINV.Update()
End Sub
Private Sub GvInvMov_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvInvMov.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DBCampo("CvePS") = "" Then
e.Row.FCLiteral("LtlPS").Text = String.Format("<a Class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"">Folio: {1} Fecha: {2} {3} {4}</a>", e.Row.DBCampo("CveMovimiento"), e.Row.DBCampo("Folio"), e.Row.DBCampo("Fecha").ToString.ToDate.ToShortDateString, e.Row.DBCampo("Almacen").ToString, e.Row.DBCampo("Concepto").ToString)
If e.Row.DataKey("Origen").ToEntero > 0 Then
e.Row.CssClass = "SubTotales"
Else
e.Row.BackColor = Drawing.Color.FromArgb(224, 130, 131)
e.Row.ForeColor = Drawing.Color.White
e.Row.Font.Bold = True
End If
Else
e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Left
End If
End If
End Sub
Private Sub GvAcarreo_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvAcarreo.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.FCLiteral("LtlImporte").Text = "$" + FormatNumber(e.Row.FCLiteral("LtlImporte").Text.ToDouble, 2, , , TriState.True)
End If
End Sub
#End Region
#Region " REGENERA PREPOLIZA "
Protected Sub BtnRegenerarPrePolizaAlmacen_Click(sender As Object, e As EventArgs)
'RegeneraPrePoliza()
Dim ObjCompra As New ClsCompras
Dim ObjContabilidad As New ClsContabilidad(ObjCompra.IniciaTransacSQL)
Dim Estatus = ActualizarPrePoliza(ObjContabilidad, ObjCompra)
If Estatus Then
ObjCompra.Commit()
Alert("La PrePoliza se regeneró correctamente.", TipoMensaje.MsgInformacion)
Else
ObjCompra.RollBack()
Alert("Ocurrió un error al regenerar la PrePoliza.", TipoMensaje.MsgError)
End If
ObjCompra.Dispose()
End Sub
Private Sub RegeneraPrePoliza()
'Alert($"CvePrePoliza de la compra: {CvePrePoliza}", TipoMensaje.MsgInformacion)
'MOVIMIENTOS DE ALMACEN DE LA COMPRA
Dim ObjInventarios As New ClsInventarios
Dim DtInv As New DataTable
If ObjInventarios.GetInv_ComprasMov(CveCompra, UsuarioActual.CveEmpresa) AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then
DtInv = ObjInventarios.DtResultados
End If
ObjInventarios.Dispose()
Dim DtTemporal = TmpDT.Copy
DtTemporal.Columns.Add("ImporteEnAlmacen", GetType(Decimal))
Dim ObjConta As New ClsContabilidad
ObjConta.IniciaTransacSQL()
Dim TieneError = True
'ELIMINA DETALLES DE [AF - INV - GASTO]
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 49, CveCompra, 1) Then
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 68, CveCompra, 1) Then
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 6, CveCompra, 1) Then
TieneError = False
End If
End If
End If
'INGRESAMOS DETALLES
If Not TieneError Then
'CONFIGURACIONES
Dim CuentasContablesInvalidas As New StringBuilder
Dim CuentasContablesInvalidasSIG As New StringBuilder
Dim IdCtaContable As Integer = 0
Dim CveCuenta As Integer = 0
Dim CveProveedorConcepto = 0
Dim Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
Dim Multiplicador = If(DdlTipoComprobante.SelectedValue = "NC", -1, 1)
Dim ImporteMovimiento = 0.0D
Dim importeMN = 0.0D
Dim TipoCambioActual = 0.0D
Dim TipoCambioPago = 0.0D
Dim FechaMovimiento As Date = TxtFecha.Text.ToDate
'TIPO CAMBIO
If DdlMoneda.SelectedValue.ToString.ToEntero = 2 Then
TipoCambioActual = GlobalTipoCambio(FechaMovimiento).ToString.ToDecimal
TipoCambioPago = GlobalTipoCambio(TxtFechaPago.Text.ToDate).ToString.ToDecimal
Else
TipoCambioActual = 1
TipoCambioPago = 1
End If
'CTA PROVEEDOR
Select Case RBLContado.SelectedValue
Case "4" ' Deudores
CveProveedorConcepto = DdlDeudor.SelectedValue.ToEntero
Case "5" ' Acreedores
CveProveedorConcepto = DdlAcreedor.SelectedValue.ToEntero
Case Else ' Proveedores - F y E - Doctos
CveProveedorConcepto = CveProveedor
End Select
'INGRESA DETALLE DE AF(49) - TipoAF 2 es para las compras
Dim DT = DtTemporal.FiltraParametros("ISNULL(TipoAF,0) = 2")
If DT.Rows.Count > 0 AndAlso DdlTipoComprobante.SelectedValue <> "NC" Then
For Each Row2 As DataRow In DT.Rows
ImporteMovimiento = Row2("Total").ToString.ToDecimal * Multiplicador
importeMN = ImporteMovimiento * TipoCambioActual
If ObjConta.GetRetCuenta(49, Row2("CveActivoFijo").ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContActivoFijo").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCtaContActivoFijoSIG").ToString.ToEntero
End If
End If
If ImporteMovimiento <> 0 Then
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 49))("ConceptoContable").ToString)
End If
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 49))("ConceptoContable").ToString)
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, Row2("CodAF").ToString, 49, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveActivoFijo:=Row2("CveActivoFijo").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(TipoCambioActual = 1, 0, ImporteMovimiento), CveCuenta:=CveCuenta) Then
TieneError = True
End If
End If
Next
End If
ImporteMovimiento = 0
IdCtaContable = 0
'INGRESA DETALLE DE ALMACÉN(68)
Dim DtAlmacenes = GlobalDTAlmacen(UsuarioActual.CveEmpresa)
If UsuarioActual.Empresa.UsaInventarios AndAlso Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
Dim CveMovimientoInventario = -1
Dim ModalidadAlmacen = -1
Dim DtMovtosAlmacen As New DataTable
DtMovtosAlmacen.Columns.Add("CveMovimiento", GetType(Integer))
DtMovtosAlmacen.Columns.Add("IdCtaContable", GetType(Integer))
DtMovtosAlmacen.Columns.Add("CveCuenta", GetType(Integer))
DtMovtosAlmacen.Columns.Add("Importe", GetType(Decimal))
If DtTemporal.FiltraParametros("ISNULL(TipoAF,0) <> 2").Rows.Count > 0 Then
For Each Row2 As DataRow In DtTemporal.FiltraParametros("ISNULL(TipoAF,0) <> 2").Rows
'VALIDAMOS TIPO ALMACEN DE LA COMPRA DETALLE - SI ES TIPO "SOLO EXISTENCIA" (0) SKIPEAMOS
ModalidadAlmacen = DtInv.MIN("ModalidadAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToEntero
If ModalidadAlmacen = 0 Then
Continue For
End If
CveMovimientoInventario = DtInv.MAX("CveMovimiento", $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToEntero
IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero
CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero
ImporteMovimiento = DtInv.SUM(If(DdlMoneda.SelectedValue = "1", "Total", "TotalExtranjero"), $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToDecimal
ImporteMovimiento = If(ImporteMovimiento > Row2("Total").ToString.ToDecimal, Row2("Total").ToString.ToDecimal, ImporteMovimiento) * Multiplicador
'VALIDA QUE CUANDO SEA DOLARES TENGA PUEXTRANJERO EN EL MOVTO DE ALMACEN
If DdlMoneda.SelectedValue = "2" And ImporteMovimiento = 0 And DtInv.SUM("Total", $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToDecimal > 0 Then
TieneError = True
Exit For
End If
Dim DrInv = DtMovtosAlmacen.NewRow
DrInv("CveMovimiento") = CveMovimientoInventario
DrInv("IdCtaContable") = IdCtaContable
DrInv("CveCuenta") = CveCuenta
DrInv("Importe") = ImporteMovimiento
DtMovtosAlmacen.Rows.Add(DrInv)
If ImporteMovimiento <> 0 Then
Row2("ImporteEnAlmacen") = ImporteMovimiento
End If
Next
For Each Row As DataRow In DtMovtosAlmacen.FiltraParametros("", "", {"CveMovimiento", "IdCtaContable"}).Rows
ImporteMovimiento = DtMovtosAlmacen.SUM("Importe", $"CveMovimiento = {Row("CveMovimiento").ToString.ToEntero} AND IdCtaContable = {Row("IdCtaContable").ToString.ToEntero}").ToString.ToDecimal
importeMN = ImporteMovimiento * TipoCambioActual
If ImporteMovimiento <> 0 Then
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString)
End If
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString)
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, Concepto, 68, Concepto, FechaMovimiento, Row("IdCtaContable").ToString.ToEntero, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveMovimientoAlmacen:=Row("CveMovimiento").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(TipoCambioActual = 1, 0, ImporteMovimiento), CveCuenta:=Row("CveCuenta").ToString.ToEntero) Then
TieneError = True
Exit For
End If
End If
Next
End If
End If
ImporteMovimiento = 0
IdCtaContable = 0
CveCuenta = 0
'INGRESA DETALLE DE GASTO(6)
DT = DtTemporal
'RECORREMOS PARA DETECTAR LA MODALIDAD DEL ALMACEN, EN CASO DE SER SOLO EXISTENCIA LIMPIAMOS CVEALMACEN
For Each Dr As DataRow In DT.Rows
Dr("CveAlmacen") = DtInv.MIN("ModalidadAlmacen", $"CveCompraDetalle = {Dr("CveCompraDetalle")}").ToEntero
Dr.AcceptChanges()
Next
DT.AcceptChanges()
If UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
DT = DT.FiltraParametros("ISNULL(TipoAF,0) <> 2", "", {"CveClasificacion", "Clasificacion", "SubProyecto", "CveProyecto", "CveSubProyecto"})
Else
DT = DT.FiltraParametros("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1", "", {"CveClasificacion", "Clasificacion", "SubProyecto", "CveProyecto", "CveSubProyecto"})
End If
If DT.Rows.Count > 0 Then
Dim ImporteAlmacen = 0.0D
For Each Row2 As DataRow In DT.Rows
If UsuarioActual.Empresa.Funcionalidad(126) = "1" Then
ImporteMovimiento = DtTemporal.SUM("Total", String.Format("ISNULL(TipoAF,0) <> 2 AND CveClasificacion = {0} AND CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString.ToDecimal
ImporteAlmacen = DtTemporal.SUM("ImporteEnAlmacen", String.Format("ISNULL(TipoAF,0) <> 2 AND CveClasificacion = {0} AND CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString.ToDecimal
Else
ImporteMovimiento = DtTemporal.SUM("Total", String.Format("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND CveClasificacion = {0} AND CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString.ToDecimal
ImporteAlmacen = DtTemporal.SUM("ImporteEnAlmacen", String.Format("ISNULL(TipoAF,0) <> 2 AND CveClasificacion = {0} AND CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString.ToDecimal
End If
ImporteMovimiento = (ImporteMovimiento - ImporteAlmacen) * Multiplicador
importeMN = ImporteMovimiento * TipoCambioActual
If Row2("CveClasificacion").ToString.ToEntero > 0 Then
If ObjConta.GetRetCuenta(6, Row2("CveClasificacion").ToString.ToEntero) Then
If ObjConta.DtResultados.Rows.Count > 0 AndAlso (ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero > 0 Or ObjConta.DtResultados.Rows(0)("IdCuentaGastoSIG").ToString.ToEntero > 0) Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaGasto").ToString.ToEntero
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaGastoSIG").ToString.ToEntero
Else
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToString.ToEntero
End If
End If
End If
Dim IdSegmentoNegocio As Integer = -1
Dim drT As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero).FiltroPrimero(String.Format("CveSubProyecto = {0} ", Row2("CveSubProyecto")))
If drT IsNot Nothing Then
IdSegmentoNegocio = drT("IdSegNeg").ToString.ToEntero
End If
If ImporteMovimiento <> 0 Then
If IdCtaContable = 0 Then
CuentasContablesInvalidas.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString)
End If
If CveCuenta = 0 Then
CuentasContablesInvalidasSIG.Append("<br>" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString)
End If
Dim tcvecon As Integer = 6
Dim tidctacon As Integer = 6
tidctacon = IdCtaContable
If DdlTipoComprobante.SelectedValue = "Ant" Then
tcvecon = 264
tidctacon = ViewState("CtaProveedorAnticipos").ToString.ToEntero
If DdlMoneda.SelectedValue = "2" Then
tidctacon = ViewState("CtaProveedorAnticiposExtranjera").ToString.ToEntero
End If
End If
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, Concepto, tcvecon, Concepto, FechaMovimiento, IdCtaContable, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(TipoCambioActual = 1, 0, ImporteMovimiento), CveCuenta:=CveCuenta) Then
TieneError = True
End If
End If
Next
End If
End If
If Not TieneError Then
ObjConta.Commit()
Alert("La PrePoliza se regeneró correctamente.", TipoMensaje.MsgInformacion)
Else
ObjConta.RollBack()
Alert("Ocurrió un error al regenerar la PrePoliza. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjConta.Dispose()
End Sub
#End Region
#Region " ACTUALIZAR TIPO CAMBIO PREPOLIZA "
Private Sub InicializaActualizarTC()
If CveCompra > 0 And DdlMoneda.SelectedValue.ToEntero = 2 And CvePrePoliza > 0 Then
TxtActualizarTC_TCActual.Text = TipoCambio.FormatoNumero(4)
TxtActualizarTC_TCActualizar.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).FormatoNumero(4)
HLModalActualizarTC.Visible = True
End If
End Sub
Protected Sub BtnActualizarTC_Click(sender As Object, e As EventArgs)
Dim ObjContabilidad As New ClsContabilidad
Dim ObjCompras As New ClsCompras(ObjContabilidad.IniciaTransacSQL())
Dim ObjEventos As New ClsOIEventos(ObjContabilidad.IniciaTransacSQL())
Dim TieneError = False
Dim MensajeError = ""
If ObjEventos.AddEventoBitacora($"Se actualizó el Tipo de Cambio de la compra. TC anterior: {TxtActualizarTC_TCActual.Text.FormatoNumero(4)} | TC actual: {TxtActualizarTC_TCActualizar.Text.FormatoNumero(4)}", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then
If ObjCompras.UpdateCompraTipoCambio(TxtActualizarTC_TCActualizar.Text.ToDouble, CveCompra, CvePrePoliza, UsuarioActual.CveEmpresa) Then
If Not ObjContabilidad.ReconstruirPP_Compra(CveCompra) Then
TieneError = True
MensajeError = "Ocurrió un error al actualizar el Tipo de Cambio al documento"
End If
Else
TieneError = True
MensajeError = "Ocurrió un error al actualizar el asiento contable"
End If
Else
TieneError = True
MensajeError = "Ocurrió un error al guardar el historal al actualizar el Tipo de Cambio al documento"
End If
If Not TieneError Then
ObjContabilidad.Commit()
Alert("Se actualizó correctamente el tipo de cambio del documento.", TipoMensaje.MsgInformacion)
RegistraScript("$('#ModalActualizarTC').modal('hide');")
Else
ObjContabilidad.RollBack()
Alert(MensajeError, TipoMensaje.MsgError)
End If
ObjContabilidad.Dispose()
End Sub
#End Region
#Region "PAQUETERIAS GUIAS"
Protected Sub LnkAgregarGuia_Click(sender As Object, e As EventArgs)
'' 25/05/2018 - Se agrega Link a Modulo Paqueterias Guias
RegistraScript(String.Format("AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveCompra={0}',800,620);", CveCompra))
End Sub
#End Region
#Region "DEDUCCIONES IEPS / OTROS IMPUESTOS"
Protected Sub CargaProductos(Ddl As DropDownList, CvePS As Integer)
Ddl.DataSource = TmpDT
Ddl.DataBind()
Ddl.Items.Insert(0, New ListItem("Seleccione un concepto", "-1"))
Ddl.SelectedValueExist("-1")
If CvePS > 0 Then
Ddl.Items.Insert(1, New ListItem(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimeroValor("PS"), CvePS.ToString))
End If
'Ddl.Items.Insert(1, New ListItem(Concepto, "-1"))
End Sub
Protected Sub BtnAgregarIEPS_Click(sender As Object, e As EventArgs)
TrasladoIEPS = TxtIEPS.Text.ToDecimal
OtrosImpuestos = TxtOtrosImpuestos.Text.ToDecimal
If ChkIEPS.Checked Then IEPSGasto = True
If ChkOtrosI.Checked Then OtrosImpuestosGasto = True
If IEPSGasto Or OtrosImpuestosGasto Then
'AGREGA IEPS COMO CONCEPTO
If IEPSGasto Then
Dim CvePS As Integer = DdlConceptoIEPS.SelectedValue.ToEntero
' If CvePS = -1 Then CvePS = UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero
AgregarConceptoIEPS(TrasladoIEPS, CvePS)
TrasladoIEPS = 0
TxtIEPS.Text = 0.ToString.FormatoNumero
TrIEPS.Visible = False
For Each Dr As DataRow In TmpDT.Rows
Dr("IEPSPS") = 0
Dr("IEPSPSPorcentaje") = 0
Next
TmpDT.AcceptChanges()
End If
'AGREGA OTROS IMPUESTOS COMO CONCEPTO
If OtrosImpuestosGasto Then
Dim CvePS As Integer = DdlConceptoOI.SelectedValue.ToEntero
'If CvePS = -1 Then CvePS = UsuarioActual.Empresa.Funcionalidad(305).ToString.ToEntero
AgregarConceptoIEPS(OtrosImpuestos, CvePS)
OtrosImpuestos = 0
TxtOtrosImpuestos.Text = 0.ToString.FormatoNumero
TrOtrosImpuestos.Visible = False
End If
CargaGvPersonal()
UpPS.Update()
RegistraScript("$('#ModalIEPS').modal('hide');")
Else
Alert("Debe seleccionar al menos un impuesto", TipoMensaje.MsgAdvertencia)
End If
End Sub
#End Region
#Region "C R E D I T O S"
Private Sub ChkCreditoMultiple_CheckedChanged(sender As Object, e As EventArgs) Handles ChkCreditoMultiple.CheckedChanged
If ChkCreditoMultiple.Checked Then
romCreditosTabla.Visible = True
Dim ObjBancos As New ClsBancos
If ObjBancos.GetCreditosDetalleCompras(UsuarioActual.CveEmpresa, CveProveedor, -1, -1, -1) Then
GvCreditos.DataSource = ObjBancos.DtResultados
Else
GvCreditos.DataSource = Nothing
End If
ObjBancos.Dispose()
GvCreditos.DataBind()
End If
End Sub
Private Sub GvCreditos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvCreditos.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim TxtCapital As TextBox = e.Row.FCTextBox("TxtCapital")
Dim TxtInteres As TextBox = e.Row.FCTextBox("TxtInteres")
Dim TxtAmbos As TextBox = e.Row.FCTextBox("TxtAmbos")
Dim CveCreditoDetalle As Integer = e.Row.DataKey("CveCreditoDetalle").ToEntero
Dim CveCompraCapital As Integer = e.Row.DataKey("CveCompra").ToEntero
Dim CveCompraInteres As Integer = e.Row.DataKey("CveCompraInteres").ToEntero
If CveCompraCapital > 0 Then
TxtCapital.Enabled = False
TxtAmbos.Enabled = False
End If
If CveCompraInteres > 0 Then
TxtInteres.Enabled = False
TxtAmbos.Enabled = False
End If
TxtCapital.Attributes.Add("class", $"CsCreGlobal CsSelCapital{CveCreditoDetalle}")
TxtCapital.Attributes.Add("onkeyup", $"ValidaCredito(this,event,{CveCreditoDetalle},1)")
'TxtCapital.Attributes.Add("data-CD", CveCreditoDetalle.ToString)
TxtInteres.Attributes.Add("class", $"CsCreGlobal CsSelInteres{CveCreditoDetalle}")
TxtInteres.Attributes.Add("onkeyup", $"ValidaCredito(this,event,{CveCreditoDetalle},1)")
'TxtInteres.Attributes.Add("data-CD", CveCreditoDetalle.ToString)
TxtAmbos.Attributes.Add("class", $"CsCreGlobal CsSelAmbos{CveCreditoDetalle}")
TxtAmbos.Attributes.Add("onkeyup", $"ValidaCredito(this,event,{CveCreditoDetalle},2)")
'TxtAmbos.Attributes.Add("data-CD", CveCreditoDetalle.ToString)
End If
End Sub
Private Sub CargaCreditosDisponibles()
If RBLPago.SelectedValue.ToEntero = 4 Then
Dim ObjBancos As New ClsBancos
If ObjBancos.GetCreditosDetalleCompras(UsuarioActual.CveEmpresa, CveProveedor, -1, -1, -1) Then
GvCreditos.DataSource = ObjBancos.DtResultados
Else
GvCreditos.DataSource = Nothing
End If
ObjBancos.Dispose()
romCreditosTabla.Visible = True
GvCreditos.DataBind()
Else
romCreditosTabla.Visible = False
End If
UpGvCreditos.Update()
End Sub
#End Region
#Region "FLETES / IMPORTACIONES"
Private Sub CargaFolio()
Dim ObjFolios As New ClsGralFolios
If ObjFolios.GetFolios("FLE", UsuarioActual.CveEmpresa) Then
If ObjFolios.DtResultados.Rows.Count > 0 Then
LblFolioModalFletes.Text = ObjFolios.DtResultados(0)("FActual").ToString
BtnCrearFleteImportacion.Enabled = True
Else
Alert("Necesita registrar un folio de fletes", TipoMensaje.MsgAdvertencia)
BtnCrearFleteImportacion.Enabled = False
End If
End If
ObjFolios.Dispose()
End Sub
Protected Sub BtnGuardarModalFletesImportaciones_Click(sender As Object, e As EventArgs)
If DdlFleteImportacion.SelectedValue.ToEntero = 237 And Not DdlFletes.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar un flete", TipoMensaje.MsgAdvertencia) : Exit Sub
If DdlFleteImportacion.SelectedValue.ToEntero = 240 And Not DdlImportaciones.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar una importación", TipoMensaje.MsgAdvertencia) : Exit Sub
If DdlFletes.SelectedValue.ToEntero > 0 Then
Dim ObjInventario As New ClsInventarios
Dim Dr As DataRow = Nothing
If ObjInventario.GetFletes(UsuarioActual.CveEmpresa, DdlFletes.SelectedValue.ToEntero) Then
If ObjInventario.DtResultados.Rows.Count > 0 Then
Dr = ObjInventario.DtResultados.Rows(0)
End If
End If
If Dr IsNot Nothing Then
If Dr("CveCompra").ToString.ToEntero > 0 And RblFleteImportacionOpcion.SelectedValue.ToEntero = 1 Then
Alert("Este flete ya tiene compra asignada", TipoMensaje.MsgAdvertencia)
ObjInventario.Dispose()
Exit Sub
End If
End If
ObjInventario.Dispose()
End If
If DdlFleteImportacion.SelectedValue.ToEntero = 237 Then DdlTipoCompra.SelectedValueExist("4") : UpEstatus.Update()
If DdlFleteImportacion.SelectedValue.ToEntero = 240 Then DdlTipoCompra.SelectedValueExist("5") : UpEstatus.Update()
CveImportacion = DdlImportaciones.SelectedValue.ToEntero
CveFlete = DdlFletes.SelectedValue.ToEntero
FleteImportacionOpcion = RblFleteImportacionOpcion.SelectedValue.ToEntero
CveConceptoContableAlmacen = DdlFleteImportacion.SelectedValue.ToEntero
If CveCompra > 0 AndAlso (CveImportacion > 0 Or CveFlete > 0) Then
Dim ObjCompras As New ClsCompras
Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL)
Dim ObjInventario As New ClsInventarios(ObjCompras.IniciaTransacSQL)
Dim ErrorTrans As Boolean = False
Select Case CveConceptoContableAlmacen
Case 237
Select Case FleteImportacionOpcion
Case 1
Dim Dr As DataRow = Nothing
If ObjInventario.GetFletes(UsuarioActual.CveEmpresa, CveFlete) Then
If ObjInventario.DtResultados.Rows.Count > 0 Then
Dr = ObjInventario.DtResultados.Rows(0)
End If
End If
If Dr IsNot Nothing Then
If Not ObjInventario.UpdateFlete(CveFlete, Dr("Descripcion").ToString, Dr("Fecha").ToString.ToDate, -1, CveCompra, UsuarioActual.CveUsuario) Then
ErrorTrans = True
End If
Else
ErrorTrans = True
End If
Case 2
If Not ObjInventario.AddFleteDetalle(CveFlete, CveCompra) Then
ErrorTrans = True
End If
'actualiza la compra para que no se surta en almacen. sino por el flete o importación
If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then
ErrorTrans = True
End If
End Select
Case 240
Select Case FleteImportacionOpcion
Case 1
If Not ObjCompras.AddImportacionCompra(CveImportacion, CveCompra) Then
ErrorTrans = True
End If
Case 2
If Not ObjCompras.AddImportacionDetalle(CveImportacion, CveCompra) Then
ErrorTrans = True
End If
'actualiza la compra para que no se surta en almacen. sino por el flete o importación
If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then
ErrorTrans = True
End If
End Select
End Select
'Removemos los conceptos de la prepoliza
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 6, CveCompra, 1) Then ErrorTrans = False 'GASTO
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 68, CveCompra, 1) Then ErrorTrans = False 'ALMACEN
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 49, CveCompra, 1) Then ErrorTrans = False 'AF
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 205, CveCompra, 1) Then ErrorTrans = False 'PS YA RECIBIDO
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 230, CveCompra, 1) Then ErrorTrans = False 'PS YA RECIBIDO
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 231, CveCompra, 1) Then ErrorTrans = False 'PS YA RECIBIDO
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 176, CveCompra, 1) Then ErrorTrans = False 'PS NO RECIBIDO
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 228, CveCompra, 1) Then ErrorTrans = False 'PS NO RECIBIDO
If Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 229, CveCompra, 1) Then ErrorTrans = False 'PS NO RECIBIDO
Dim ConceptoContabilizacion As Integer = CveConceptoContableAlmacen
Dim ConceptoContabilizacionME As Integer = -1
Dim ConceptoContabilizacionMEComp As Integer = -1
Dim importeMovimiento As Decimal = 0
Dim importeMN As Decimal = 0
Dim IdCtaContable As Integer = -1
Dim IdCtaContableME As Integer = -1
Dim IdCtaContableMEComp As Integer = -1
Dim tipoCambioActual As Decimal = 0
Dim Multiplicador = If(DdlTipoComprobante.SelectedValue = "NC", -1, 1)
If DdlMoneda.SelectedValue.ToString.ToEntero = 2 Then
tipoCambioActual = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString.ToDecimal
tipoCambioActual = If(DivTC.Visible, TipoCambio.ToDecimal, tipoCambioActual)
Else
tipoCambioActual = 1
End If
Select Case ConceptoContabilizacion
Case 237
ConceptoContabilizacionME = 238
ConceptoContabilizacionMEComp = 239
importeMovimiento = TmpDT.SUMD(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"))
importeMN = importeMovimiento * tipoCambioActual * Multiplicador 'TIENE QUE TENER EL IMPORTEMN IGUAL AL IMPORTEMOVIMIENTO PORQUE NO TOMA EN CUENTA SI UN PRODUCTO ES TIPO SERVICIO
Case 240
ConceptoContabilizacionME = 241
ConceptoContabilizacionMEComp = 242
importeMovimiento = TmpDT.SUMD(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"))
importeMN = importeMovimiento * tipoCambioActual * Multiplicador 'TIENE QUE TENER EL IMPORTEMN IGUAL AL IMPORTEMOVIMIENTO PORQUE NO TOMA EN CUENTA SI UN PRODUCTO ES TIPO SERVICIO
End Select
If ObjConta.GetRetCuenta(ConceptoContabilizacion, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
If ObjConta.GetRetCuenta(ConceptoContabilizacionME, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableME = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
If ObjConta.GetRetCuenta(ConceptoContabilizacionMEComp, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableMEComp = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero
End If
Dim Concepto As String = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If DdlMoneda.SelectedValue.ToEntero <> 1 Then
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, Concepto, ConceptoContabilizacionME, Concepto, TxtFecha.Text.ToDate, IdCtaContableME, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=importeMovimiento, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMN - importeMovimiento, Concepto, ConceptoContabilizacionMEComp, Concepto, TxtFecha.Text.ToDate, IdCtaContableMEComp, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=importeMN - importeMovimiento, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual) Then
ErrorTrans = True
End If
Else
ErrorTrans = True
End If
Else
If importeMN <> 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMN, Concepto, ConceptoContabilizacion, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual) Then
ErrorTrans = True
End If
End If
If Not ErrorTrans Then
ObjCompras.Commit()
Else
ObjCompras.RollBack()
End If
ObjCompras.Dispose()
ObjConta.Dispose()
ObjInventario.Dispose()
End If
RegistraScript("$('#ModalFletesImportaciones').modal('hide')")
End Sub
Private Sub CargaModalFletesImportaciones()
TxtFechaModalImportacionesFletes.Text = Now.ToShortDateString
TxtDescripcionModalFletesImportacion.Text = ""
TxtPedimento.Text = ""
RblTipo.SelectedValue = "1"
RblFleteImportacionOpcion.SelectedValue = "1"
CargaCombosFletesImportaciones()
CambiaTipo()
DdlFletes.SelectedValueExist(CveFlete)
DdlImportaciones.SelectedValueExist(CveImportacion)
If FleteImportacionOpcion > 0 Then RblFleteImportacionOpcion.SelectedValue = FleteImportacionOpcion.ToString
RegistraScript("$('#ModalFletesImportaciones').modal()")
UpModalFletesImportaciones.Update()
End Sub
Protected Sub RblTipo_SelectedIndexChanged(sender As Object, e As EventArgs)
CambiaTipo()
UpModalFletesImportaciones.Update()
End Sub
Private Sub CambiaTipo()
Select Case RblTipo.SelectedValue.ToEntero
Case 1
DivVinculacion.Visible = True
DivCrear.Visible = False
Select Case DdlFleteImportacion.SelectedValue.ToEntero
Case 237
LblTitulo.Text = "Costo Indirecto"
DivFletes.Visible = True
DivImportaciones.Visible = False
Case 240
LblTitulo.Text = "Importación"
DivFletes.Visible = False
DivImportaciones.Visible = True
End Select
Case 2
DivVinculacion.Visible = False
DivCrear.Visible = True
Select Case DdlFleteImportacion.SelectedValue.ToEntero
Case 237
LblTitulo.Text = "Costo Indirecto"
DivLblFolio.Visible = True
DivPedimento.Visible = False
CargaFolio()
Case 240
LblTitulo.Text = "Importación"
DivLblFolio.Visible = False
DivPedimento.Visible = True
End Select
End Select
End Sub
Protected Sub BtnCrearFleteImportacion_Click(sender As Object, e As EventArgs)
Dim CveFlete As Integer = 0
Dim CveImportacion As Integer = 0
Select Case DdlFleteImportacion.SelectedValue.ToEntero
Case 237
Dim ObjInv As New ClsInventarios
If ObjInv.AddFlete(LblFolioModalFletes.Text, TxtDescripcionModalFletesImportacion.Text.Trim, TxtFechaModalImportacionesFletes.Text.ToDate, -1, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then
CveFlete = ObjInv.CveFlete
Alert("Costo indirecto creado correctamente")
End If
ObjInv.Dispose()
Case 240
Dim ObjCompras As New ClsCompras
CveImportacion = ObjCompras.AddImportacion(TxtPedimento.Text.Trim, TxtDescripcionModalFletesImportacion.Text.Trim, CveProveedor, -1, TxtFechaModalImportacionesFletes.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
ObjCompras.Dispose()
If CveImportacion > 0 Then Alert("Importación creada correctamente")
End Select
If CveFlete > 0 Or CveImportacion > 0 Then
RblTipo.SelectedValue = "1"
CambiaTipo()
CargaCombosFletesImportaciones()
Select Case DdlFleteImportacion.SelectedValue.ToEntero
Case 237
DdlFletes.SelectedValueExist(CveFlete)
Case 240
DdlImportaciones.SelectedValueExist(CveImportacion)
End Select
TxtFechaModalImportacionesFletes.Text = Now.ToShortDateString
TxtDescripcionModalFletesImportacion.Text = ""
TxtPedimento.Text = ""
UpModalFletesImportaciones.Update()
End If
End Sub
Private Sub CargaCombosFletesImportaciones()
DdlFletes.Items.Clear()
DdlImportaciones.Items.Clear()
Dim ObjCompras As New ClsCompras
If ObjCompras.GetImportaciones(-1, -1, -1, "-1", "-1", UsuarioActual.CveEmpresa) Then
DdlImportaciones.DataSource = ObjCompras.DtResultados
DdlImportaciones.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
ObjCompras.Dispose()
Dim ObjInv As New ClsInventarios
If ObjInv.GetFletes(UsuarioActual.CveEmpresa) Then
DdlFletes.DataSource = ObjInv.DtResultados
DdlFletes.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
ObjInv.Dispose()
DdlImportaciones.DataBind()
DdlFletes.DataBind()
End Sub
Private Sub LnkFletesImportaciones_Click(sender As Object, e As EventArgs) Handles LnkFletesImportaciones.Click
CargaModalFletesImportaciones()
End Sub
Protected Sub DdlFleteImportacion_SelectedIndexChanged1(sender As Object, e As EventArgs)
CambiaTipo()
UpModalFletesImportaciones.Update()
End Sub
#End Region
Private Function AjustarPrePolizaVinculacionOC(ByRef OC As ClsOC, ByRef OCBitacora As ClsOIEventos, ByRef ObjInventarios As ClsInventarios, ByRef ObjConta As ClsContabilidad) As Boolean
'VARIABLES
Dim CveProveedorSucursal As Integer = -1
Dim CveProveedorContacto As Integer = -1
Dim Retorno As Boolean = True
Dim CveProveedor As Integer = -1
Dim GeneraReq = False
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))
DtInvOCDiferencias.Columns.Add("CveOrdenCompraDetalle", GetType(Integer))
DtInvOCDiferencias.Columns.Add("Diferencia", GetType(Decimal))
DtInvOCDiferencias.Columns.Add("PUCompra", GetType(Decimal))
DtInvOCDiferencias.Columns.Add("CveMoneda", GetType(Integer))
DtInvOCDiferencias.Columns.Add("FolioOC", GetType(String))
DtInvOCDiferencias.Columns.Add("CveProveedor", GetType(Integer))
'DtInvOCDiferencias.Columns.Add("ImporteMovto", GetType(Double))
'DtInvOCDiferencias.Columns.Add("ImporteMovtoDLLS", GetType(Double))
DtInvOCDiferencias.Columns.Add("CveAlmacen", GetType(Integer))
DtInvOCDiferencias.Columns.Add("CveMovimiento", GetType(Integer))
DtInvOCDiferencias.Columns.Add("TipoCambioAjuste", GetType(Double))
DtInvOCDiferencias.Columns.Add("ConceptoSalida", GetType(Integer))
DtInvOCDiferencias.Columns.Add("PS", GetType(String))
Dim dr2 As DataRow
For Each gvr As GridViewRow In GvOC1.Rows
If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then
dr2 = DTOCGV.Rows(gvr.RowIndex)
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
DrInvOCDiferencias = DtInvOCDiferencias.NewRow
DrInvOCDiferencias("CveOrdenCompra") = dr2("CveOrdenCompra").ToString.ToEntero
DrInvOCDiferencias("CveOrdenCompraDetalle") = dr2("CveOrdenCompraDetalle").ToString.ToEntero
DrInvOCDiferencias("Diferencia") = diferencia.RoundSQL()
DrInvOCDiferencias("PUCompra") = Math.Round(gvr.FCTextBox("TxtPU").Text.ToDecimal, 6)
DrInvOCDiferencias("CveMoneda") = dr2("CveMoneda").ToString.ToEntero
DrInvOCDiferencias("FolioOC") = dr2("FolioOC").ToString
DrInvOCDiferencias("CveProveedor") = dr2("CveProveedorOC").ToString.ToEntero
DrInvOCDiferencias("PS") = dr2("PS").ToString
If DdlOCVinculaInv.SelectedValue.ToEntero.Contiene(205) Then
DrInvOCDiferencias("TipoCambioAjuste") = 0
DrInvOCDiferencias("CveAlmacen") = 0
DrInvOCDiferencias("CveMovimiento") = 0
DrInvOCDiferencias("ConceptoSalida") = 0
DtInvOCDiferencias.Rows.Add(DrInvOCDiferencias)
Else
If ObjInventarios.GetMovimientosOC(dr2("CveOrdenCompra").ToString.ToEntero, UsuarioActual.CveEmpresa) Then
DtInvOC = ObjInventarios.DtResultados.FiltraParametros($"CvePS > 0 AND CveOrdenCompraDetalle = {dr2("CveOrdenCompraDetalle").ToString.ToEntero}").Copy
End If
Dim drInv As DataRow = DtInvOC.FiltroPrimero("")
DrInvOCDiferencias("TipoCambioAjuste") = drInv("TipoCambioAjuste").ToString.ToDecimal
DrInvOCDiferencias("Diferencia") = ((gvr.FCTextBox("TxtPU").Text.ToDecimal * drInv("TipoCambioAjuste").ToString.ToDecimal) - drInv("PU").ToString.ToDecimal) * gvr.FCTextBox("TxtCantidad").Text.ToDecimal 'diferencia * drInv("TipoCambioAjuste").ToString.ToDecimal '
DrInvOCDiferencias("CveAlmacen") = drInv("CveAlmacen").ToString.ToEntero
DrInvOCDiferencias("CveMovimiento") = drInv("CveMovimiento").ToString.ToEntero
DrInvOCDiferencias("ConceptoSalida") = drInv("ConceptoSalida").ToString.ToEntero
DtInvOCDiferencias.Rows.Add(DrInvOCDiferencias)
End If
End If
End If
Next
If DdlOCVinculaInv.SelectedValue.ToEntero.Contiene(205) Then
If DtInvOCDiferencias.Rows.Count > 0 Then
For Each DrDiferencias As DataRow In DtInvOCDiferencias.Rows
Dim CveOrdenCompra As Integer = DrDiferencias("CveOrdenCompra").ToString.ToEntero
Dim CveOCDetalle As Integer = DrDiferencias("CveOrdenCompraDetalle").ToString.ToEntero
Dim PUCompra As Decimal = DrDiferencias("PUCompra").ToString.ToDecimal
Dim DiferenciaInvOC As Decimal = DrDiferencias("Diferencia").ToString.ToDecimal
If DiferenciaInvOC.RoundSQL() <> 0 Then
If Not OC.UpdateOrdenCompraDetalleAjuste(CveOrdenCompra, CveOCDetalle, PUCompra) Then
Retorno = False
Exit For
End If
End If
Next
End If
Else
'PREPOLIZA DE AJUSTE ALMACEN POR ADELANTADO
If DtInvOCDiferencias.Rows.Count > 0 Then
'VARIABLES
Dim CveOrdenCompra = -1
Dim DiferenciaInvOC = 0.0D
Dim CveMovimientoAlmacen = -1
Dim CveOCDetalle = -1
Dim CveAlmacen = -1
Dim IdCtaContableAlmacen As Integer = -1
Dim CveCuentaAlmacen As Integer = -1
Dim IdCtaContableRecepcionOC = -1
Dim IdCtaContableRecepcionOCME = -1
Dim IdCtaContableRecepcionOCComplementaria = -1
Dim IdCtaContableRecepcionOCER = -1
Dim IdCtaContableRecepcionOCERME = -1
Dim IdCtaContableRecepcionOCERComplementaria = -1
Dim Fecha As Date = Now
Dim CveProveedorInvOC As Integer = -1
Dim ProveedorNombre As String = ""
Dim SerieFolio As String = ""
Dim CvePrePoliza As Integer = -1
Dim ConceptoSalida = -1
Dim TCInvOC = 0.0D
Dim ImporteME = 0.0D
Dim ImporteMEComp = 0.0D
Dim SumatoriaMN = 0.0D
Dim SumatoriaME = 0.0D
Dim SumatoriaMEComp = 0.0D
Dim PUCompra = 0.0D
Dim CveMoneda As Integer = 1
Dim PS As String = ""
If ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionOC = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If ObjConta.GetRetCuenta(228, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionOCME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If ObjConta.GetRetCuenta(229, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionOCComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If ObjConta.GetRetCuenta(177, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionOCER = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If ObjConta.GetRetCuenta(232, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionOCERME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If ObjConta.GetRetCuenta(233, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionOCERComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
'AJUSTES EN PREPOLIZA - SALIDA CONTABLE (CON SALIDA DE VENTA O SIN SALIDA)
For Each DrDiferencias As DataRow In DtInvOCDiferencias.FiltraParametros("ConceptoSalida IN (0,1)").Rows
CveOrdenCompra = DrDiferencias("CveOrdenCompra").ToString.ToEntero
CveOCDetalle = DrDiferencias("CveOrdenCompraDetalle").ToString.ToEntero
CveMoneda = DrDiferencias("CveMoneda").ToString.ToEntero
DiferenciaInvOC = DrDiferencias("Diferencia").ToString.ToDecimal
PUCompra = DrDiferencias("PUCompra").ToString.ToDecimal
PS = DrDiferencias("PS").ToString
Fecha = Now
SerieFolio = $"OC: {DrDiferencias("FolioOC").ToString}"
CveProveedor = DrDiferencias("CveProveedor").ToString.ToEntero
ProveedorNombre = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("RazonSocial", $"CveProveedor = {CveProveedor}").ToString
Dim ConceptoPartida As String = String.Format("{0} OC# {1}", ProveedorNombre, DrDiferencias("FolioOC"))
ConceptoSalida = DrDiferencias("ConceptoSalida").ToString.ToEntero
CveAlmacen = DrDiferencias("CveAlmacen").ToString.ToEntero
CveMovimientoAlmacen = DrDiferencias("CveMovimiento").ToString.ToEntero
TCInvOC = DrDiferencias("TipoCambioAjuste").ToString.ToDecimal
IdCtaContableAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero
CveCuentaAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero
If DiferenciaInvOC.RoundSQL() <> 0 Then
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
ImporteME = (DiferenciaInvOC / TCInvOC).RoundSQL()
ImporteMEComp = (DiferenciaInvOC - ImporteME).RoundSQL()
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, 177, ConceptoPartida, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then
Retorno = False
Exit For
End If
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteME, SerieFolio, 228, ConceptoPartida, Fecha, IdCtaContableRecepcionOCME, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteME, ImporteME:=ImporteME, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMEComp, SerieFolio, 229, ConceptoPartida, Fecha, IdCtaContableRecepcionOCComplementaria, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteMEComp, ImporteME:=ImporteME, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then
Retorno = False
Exit For
End If
Else
Retorno = False
Exit For
End If
Else
'2018.11.24 se cambia concepto 177, de cargo a abono negativo., petición MALL
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), ConceptoPartida, Fecha, If(ConceptoSalida = 0, IdCtaContableAlmacen, IdCtaContableRecepcionOCER), -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, ConceptoPartida, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then
Retorno = False
Exit For
End If
Else
Retorno = False
Exit For
End If
End If
If Not OC.UpdateOrdenCompraDetalleAjuste(CveOrdenCompra, CveOCDetalle, PUCompra) Then
Retorno = False
Exit For
End If
If Retorno Then
If Not OCBitacora.AddEventoBitacora(String.Format("Se registró una póliza de ajuste por cambio de precio en producto: {0}", PS), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveOC:=CveOrdenCompra) Then
Retorno = False
End If
End If
End If
End If
Next
End If
End If
Return Retorno
End Function
#Region "A G R E G A R - P R O D U C T O S S E R V I C I O S"
Private Sub CargaDatosAgregarPS()
DdlClasificacionPS.Items.Clear()
If UsuarioActual.Empresa.UsaAC Then
DdlClasificacionPS.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=If(UsuarioActual.Empresa.UsaContabilidad, -1, -1)).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion")
Else
DdlClasificacionPS.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=If(UsuarioActual.Empresa.UsaContabilidad, -1, -1)).FiltraParametros("", Orderby:="Clasificacion")
End If
DdlClasificacionPS.DataBind()
DdlClasificacionPS.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlUnidadMedida.Items.Clear()
DdlUnidadMedida.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa)
DdlUnidadMedida.DataBind()
End Sub
Protected Sub BtnAgregarPSNuevo_Click(sender As Object, e As EventArgs)
Dim PS As New Modelos.MProductoServicio()
PS.Codigo = TxtCodigoPS.Text
PS.PS = TxtPS.Text
PS.CveUnidadMedida = DdlUnidadMedida.SelectedValue.ToEntero()
PS.CveClasificacion = DdlClasificacionPS.SelectedValue.ToEntero()
PS.CveTipoPS = DdlTipoPS.SelectedValue.ToEntero()
PS.AplicaParaVenta = True
PS.CveUsuario = UsuarioActual.CveUsuario
PS.CveEmpresa = UsuarioActual.CveEmpresa
Dim ObjPS As New ClsProductosServicios
If ObjPS.AddPSSimplificado(PS) > 0 Then
Alert("El P/S fue agregado correctamente.")
RecargaGlobalEquivalencias()
End If
ObjPS.Dispose()
TxtPS.Text = ""
TxtCodigoPS.Text = ""
DdlUnidadMedida.SelectedValueExist(-1)
DdlClasificacionPS.SelectedValueExist(-1)
DdlTipoPS.SelectedValueExist(-1)
UpAgregarPS.Update()
RegistraScript("$('#DivAgregarPS').modal('hide');")
RecargaPSGlobal()
End Sub
Private Sub RecargaPSGlobal()
Dim ObjPS As New ClsProductosServicios
If ObjPS.GetPSSimplificado(-1) Then Application("GlobalDTPSSimplificado") = ObjPS.DtResultados.AsEnumerable()
ObjPS.Dispose()
End Sub
#End Region
#Region "TIPO DE COMPRA"
Protected Sub DdlTipoCompra_SelectedIndexChanged(sender As Object, e As EventArgs)
End Sub
#End Region
Protected Sub BtnFacturaNC_Click(sender As Object, e As EventArgs)
If ChkNCInvNC.Checked Then
CargaNCINV()
Else
RegistraScript("$('#FacturaNC').modal('hide');", "FacturaNC")
End If
End Sub
#Region "ES NO DEDUCIBLE"
Protected Sub ChkEsNoDeducible_CheckedChanged1(sender As Object, e As EventArgs)
If ChkEsNoDeducible.Checked Then
EsNoDeducible = True
dvNoDeducible.Visible = True
GvPS.Columns(10).Visible = True
UpEsNoDeduciblePS.Visible = True
Else
EsNoDeducible = False
dvNoDeducible.Visible = False
GvPS.Columns(10).Visible = False
UpEsNoDeduciblePS.Visible = False
End If
'DivEsNoDeducible.Visible = False
'For Each Dr As DataRow In TmpDT.Rows
' Dim Total As Double = Dr("IVA").ToString.ToDouble - (Dr("RetIVA").ToString.ToDouble + Dr("RetISR").ToString.ToDouble) + Dr("IEPSPS").ToString.ToDouble + Dr("IEPSPSIVA").ToString.ToDouble
' Dr("Total") = Dr("Total").ToString.ToDouble + Total
' Dr("PU") = Dr("Total").ToString.ToDouble / Dr("Cantidad").ToString.ToDouble
' Dr("IVA") = 0
' Dr("IVAPorcentaje") = 0
' Dr("RetIVA") = 0
' Dr("RetIVAPorcentaje") = 0
' Dr("RetISR") = 0
' Dr("RetISRPorcentaje") = 0
' Dr("IEPSPS") = 0
' Dr("IEPSPSPorcentaje") = 0
' Dr("IEPSPSIVA") = 0
' Dr("IEPSPSIVAPorcentaje") = 0
'Next
'TmpDT.AcceptChanges()
AddPS2(EsNoDeducible:=EsNoDeducible)
UpPS.Update()
End Sub
#End Region
Public Sub LnkDesVincularComplemento_Click(sender As Object, e As EventArgs)
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
Dim CveFacturaComplemento As Integer = GvRow.DataKey("CveFactura").ToEntero
Dim ObjCompra As New ClsCompras
If ObjCompra.RemoveComplementoPagoDesVincular(CveFacturaComplemento, UsuarioActual.CveEmpresa) Then
RegistraScript("$('#ModalComplementoPagos').modal('hide');")
Alert("Complemento des vinculado correctamente.")
End If
ObjCompra.Dispose()
End Sub
Protected Sub LnkCompleplementos_Click(sender As Object, e As EventArgs)
'ModalComplementoPagos
CargaComplementosPago()
RegistraScript("$('#ModalComplementoPagos').modal('show');")
End Sub
Protected Sub ChkEsNoDeduciblePS_CheckedChanged(sender As Object, e As EventArgs)
Dim Chk As CheckBox = CType(sender, CheckBox)
Dim gvr As GridViewRow = CType(Chk.BindingContainer, GridViewRow)
For Each drt As DataRow In TmpDT.Select("Consec = " & gvr.RowIndex + 1)
drt("NoDeducible") = Chk.Checked
Next
TmpDT.AcceptChanges()
AddPS2(EsNoDeducible:=EsNoDeducible)
End Sub
End Class