From ebb6f15df44910ceb267b9f328ca0941a5dbbbff Mon Sep 17 00:00:00 2001 From: Rene Molina Date: Fri, 30 Aug 2019 16:31:51 -0700 Subject: [PATCH 01/54] =?UTF-8?q?apertura=20de=20registro=20de=20conexi?= =?UTF-8?q?=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 20 ++++++++++++ App_Code/ClsVentas.vb | 47 +++++++++++++++++++++++++++++ Inventarios/EntradasSalidas.aspx.vb | 2 +- Ventas/ProductosServicios.aspx | 10 +++++- Ventas/Ventas.aspx.vb | 7 +++-- 5 files changed, 81 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 7bbbff371..e887da8ff 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,23 @@ /Menu /Web.config /Log.txt +/LogTimbrado.txt +/LogMail.txt +/Bin/Microsoft.ReportViewer.WebForms.dll.refresh +/Bin/Microsoft.ReportViewer.WebForms.dll +/Bin/Microsoft.ReportViewer.WebDesign.dll.refresh +/Bin/Microsoft.ReportViewer.WebDesign.dll +/Bin/Microsoft.ReportViewer.ProcessingObjectModel.dll.refresh +/Bin/Microsoft.ReportViewer.ProcessingObjectModel.dll +/Bin/Microsoft.ReportViewer.Design.dll.refresh +/Bin/Microsoft.ReportViewer.Design.dll +/Bin/Microsoft.ReportViewer.DataVisualization.dll.refresh +/Bin/Microsoft.ReportViewer.DataVisualization.dll +/Bin/Microsoft.ReportViewer.Common.dll.refresh +/Bin/Microsoft.ReportViewer.Common.dll +/.vs +/Temp/637022536882545607-PLANTILLA CFE 2019 DISTRIBUCION.xlsx +/Temp/637020871040720361-FormatoAlmacen (1).xlsx +/Temp/637020865803848374-FormatoAlmacen (1).xlsx +/Temp/637020863973072383-FormatoAlmacen (1).xlsx +/Temp/637020854397859419-FormatoAlmacen (1).xlsx diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index c74d9d6a6..9c625731f 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -75,6 +75,7 @@ Public Class ClsVentas Public Sub RollBack() SqlTransacc.Rollback() End Sub + Private CveConexion As Integer = 0 Sub New(Optional TransaccionCompartida As SqlTransaction = Nothing) If TransaccionCompartida Is Nothing Then @@ -82,6 +83,7 @@ Public Class ClsVentas SqlConexion.ConnectionString = ConfigurationManager.ConnectionStrings("Conexion").ConnectionString Try SqlConexion.Open() + AddConexion() Catch ex As Exception OnError("Ocurrió un error al intentar conectarse a la base de datos.", ex) End Try @@ -93,6 +95,8 @@ Public Class ClsVentas SqlAdapter = New SqlDataAdapter("", SqlConexion) End Sub + + Private Sub DataAdapter(ByVal pStrSQL As String, Optional ByVal TipoComando As CommandType = CommandType.StoredProcedure) With SqlAdapter.SelectCommand .Parameters.Clear() @@ -102,6 +106,48 @@ Public Class ClsVentas If Not SqlTransacc Is Nothing Then SqlAdapter.SelectCommand.Transaction = SqlTransacc Data = New DataTable End Sub + + +#Region "Conexiones" + + + Private Sub ConexionAdd() + If ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then + + DataAdapter(String.Format("INSERT INTO Sis_Conexiones (Clase,Modulo) VALUES ('ClsVentas',{0})", HttpContext.Current.Request.Url.Authority), CommandType.Text) ' pendiente de terminar parra registrar el cveconexion, falta el rarámetro de módulo + With SqlAdapter.SelectCommand.Parameters + + .Add("@CveConexion", SqlDbType.Int).Direction = ParameterDirection.Output + End With + + Try + SqlAdapter.Fill(Data) + CveConexion = SqlAdapter.SelectCommand.Parameters("@Opcion").Value.ToString.ToEntero + Catch ex As Exception + OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + End If + End Sub + + Private Sub ConexionClose() + If ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then + + DataAdapter(String.Format("UPDATE Sis_Conexiones SET FechaCierre = GETDATE WHERE CveConexion = ", CveConexion), CommandType.Text) + + Try + SqlAdapter.Fill(Data) + + Catch ex As Exception + OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + End If + + End Sub + +#End Region + Public Function GetVenta(CveVenta As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_VentasGet") @@ -3879,6 +3925,7 @@ Public Class ClsVentas Protected Overridable Sub Dispose(disposing As Boolean) If Not Me.disposedValue Then If disposing Then + AddConexion() ' TODO: dispose managed state (managed objects). If Not Data Is Nothing Then Data.Dispose() If Not Dataset Is Nothing Then Dataset.Dispose() diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index be7cc478a..f2a7e7405 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -1089,7 +1089,7 @@ Partial Class Inventarios_EntradasSalidas If ObjConta IsNot Nothing Then ObjConta.RollBack() Inv.RollBack() - Alert("Ocurrió un error al eliminar el movimiento. Por favor vuelva a intetar.", TipoMensaje.MsgError) + Alert("Ocurrió un error al eliminar el movimiento. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If CveMovimiento = 0 diff --git a/Ventas/ProductosServicios.aspx b/Ventas/ProductosServicios.aspx index 29c2aca5d..06edab7a6 100644 --- a/Ventas/ProductosServicios.aspx +++ b/Ventas/ProductosServicios.aspx @@ -209,7 +209,15 @@ - + +
+ + + + + +
+
Seleccione diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index e6643891b..e7ba78c06 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -15750,12 +15750,13 @@ Partial Class Ventas Next End If + Dim ErrorLista As New StringBuilder 'Orden Produccion' If Not OcurrioError Then If UsuarioActual.CveEmpresa.Contiene(126) Then If CveVenta > 0 And DdlOrdenProduccion.SelectedValue.ToEntero > 0 Then If Not ObjCGame.UpdateOrdenProduccionVenta(DdlOrdenProduccion.SelectedValue.ToEntero(), CveVenta) Then - ErrorList.Add("Ocurrió un error al actualizar la orden de producción") + ErrorLista.Append("Ocurrió un error al actualizar la orden de producción") End If End If End If @@ -15765,7 +15766,7 @@ Partial Class Ventas If ObjConta.ValorPolizaDescuadre > 0 Then If ObjConta.ValorPolizaDescuadre = 2 Then OcurrioError = True - ErrorList.Add(ObjConta.MensajePolizaDescuadre) + ErrorLista.Append(ObjConta.MensajePolizaDescuadre) End If End If End If @@ -15778,7 +15779,7 @@ Partial Class Ventas If OcurrioError Then ObjVentas.RollBack() - Alert("Ocurrió un error al guardar los cambios. Por favor intente de nuevo.", TipoMensaje.MsgError) + Alert("Ocurrió un error al guardar los cambios. Por favor intente de nuevo." & ErrorLista.ToString, TipoMensaje.MsgError) Else ObjVentas.Commit() If ObjAC IsNot Nothing Then ObjAC.Commit() From 41298351e4b1fd9c57872f7ba762c0ecb20cae11 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Sat, 31 Aug 2019 12:47:49 -0700 Subject: [PATCH 02/54] Validar saldo del almacen correctamente --- App_Code/Modelos.vb | 93 ++++++++++++++++++++++++------------------- Ventas/Ventas.aspx.vb | 6 ++- 2 files changed, 58 insertions(+), 41 deletions(-) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 954c278f3..f64bb2cfd 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2780,23 +2780,17 @@ Namespace Modelos Next - End If - - If DtRemisionesRelacionadas Is Nothing Then - If ObjVentas.GetRemisionesRelacionadas(ObjFactura.CveVenta, ObjFactura.TipoDocto) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then - DtRemisionesRelacionadas = ObjVentas.DtResultados.Copy() - End If + End If + + If ObjFactura.RemisionesLista.Count = 0 AndAlso (DtRemisionesRelacionadas IsNot Nothing AndAlso DtRemisionesRelacionadas.Rows.Count > 0) Then + For Each Row As DataRow In DtRemisionesRelacionadas.Rows + ObjFactura.RemisionesLista.Add(Row("CveVenta").ToString().ToEntero()) + Next End If 'Si es Facturacion de una remision cancelamos, traspasamos saldos y agregamos evento a la bitacora If (DtRemisionesRelacionadas IsNot Nothing AndAlso DtRemisionesRelacionadas.Rows.Count > 0) OrElse ObjFactura.RemisionesLista.Count > 0 Then - If ObjFactura.RemisionesLista.Count = 0 AndAlso (DtRemisionesRelacionadas IsNot Nothing AndAlso DtRemisionesRelacionadas.Rows.Count > 0) Then - For Each Row As DataRow In DtRemisionesRelacionadas.Rows - ObjFactura.RemisionesLista.Add(Row("CveVenta").ToString().ToEntero()) - Next - End If - If ObjFactura.RemisionesLista.Count > 0 Then For Each CveRemision As Integer In RemisionesLista If Not ObjConta.TraspasarSaldosRemision(CveRemision, ObjFactura.CvePrePoliza, ObjFactura.CveVenta) Then @@ -2817,25 +2811,30 @@ Namespace Modelos Exit For End If Next - End If - - 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO - If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso NuevaFactura <> 1 AndAlso Not SeCancelaRemisionProceso Then ' se debe de excluir cuando es refacturación - For Each Dr As DataRow In DtRemisionesRelacionadas.Rows - - Dim DebeCancelar As Boolean = CancelarRemisiones AndAlso ListaRemisionesCancelar.Any(Function(CveRemision) CveRemision = Dr("CveVenta").ToString.ToEntero()) - - If Not DebeCancelar Then - If Not ObjConta.TraspasarSaldosRemision(Dr("CveVenta").ToString.ToEntero, ObjFactura.CvePrePoliza, ObjFactura.CveVenta, 1) Then - ErrorPrepoliza = True - End If - If Not ObjEventos.AddEventoBitacora($"Facturación cancelada en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=Dr("CveVenta").ToString.ToEntero) Then - ErrorPrepoliza = True - End If - End If - Next End If - + End If + + If DtRemisionesRelacionadas Is Nothing Then + If ObjVentas.GetRemisionesRelacionadas(ObjFactura.CveVenta, ObjFactura.TipoDocto) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then + DtRemisionesRelacionadas = ObjVentas.DtResultados.Copy() + End If + End If + + 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO + If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso NuevaFactura <> 1 AndAlso Not SeCancelaRemisionProceso AndAlso DtRemisionesRelacionadas IsNot Nothing Then ' se debe de excluir cuando es refacturación + For Each Dr As DataRow In DtRemisionesRelacionadas.Rows + + Dim DebeCancelar As Boolean = CancelarRemisiones AndAlso ListaRemisionesCancelar.Any(Function(CveRemision) CveRemision = Dr("CveVenta").ToString.ToEntero()) + + If Not DebeCancelar Then + If Not ObjConta.TraspasarSaldosRemision(Dr("CveVenta").ToString.ToEntero, ObjFactura.CvePrePoliza, ObjFactura.CveVenta, 1) Then + ErrorPrepoliza = True + End If + If Not ObjEventos.AddEventoBitacora($"Facturación cancelada en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=Dr("CveVenta").ToString.ToEntero) Then + ErrorPrepoliza = True + End If + End If + Next End If @@ -3583,6 +3582,13 @@ Namespace Modelos Dim TieneAlmacen As Boolean = False + If ObjFactura.SaldoAlmacen <> 0 Then + Retorno.Mensaje = "El pedido no se puede cancelar ya que tiene movimientos de almacén.
Nota: Primero hay que hacer la devolución al almacén." + Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia + + Return Retorno + End If + 'VALIDA QUE LA FACTURA NO TENGA PAGOS If ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso ObjFactura.Pagado > 0 Then Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene pagos vinculados." @@ -3608,7 +3614,7 @@ Namespace Modelos End If 'LA VALIDACION DE SALDOS CUANDO ES REFACTURACION SE HACE ANTES ASI QUE SI ES REFACTURACION IGNORAMOS ESTA CONDICION, SI ES ANTICIPO VERIFICA QUE NO ESTÉ APLICADO - If ObjFactura.TipoDocto = "Ant" AndAlso ObjFactura.Pagado > 0 AndAlso DTDocumentosRelacionados.Rows.Count > 0 Then + If ObjFactura.TipoDocto.Contiene("Ing", "Ant", "Rem") AndAlso ObjFactura.Pagado > 0 AndAlso DTDocumentosRelacionados.Rows.Count > 0 Then Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene pagos vinculados." Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia @@ -3670,7 +3676,7 @@ Namespace Modelos Dim RevivirRemisiones = Not EsRefacturacion AndAlso ((TieneRemisionesRelacionadas AndAlso ListaRemisionesCancelar Is Nothing) OrElse (DtRemisionesRelacionadas.Rows.Count > ListaRemisionesCancelar.Count)) 'REMISION YA SE DEBE HACER POR EL PROCESO DE DEVOLUCION DE ALMACEN - If Not EsRefacturacion AndAlso (ObjFactura.SaldoAlmacen > 0 AndAlso ObjFactura.EsDevolucionVenta.Contiene(0, 1)) AndAlso Not RealizarDevolucionAlmacen And RevivirRemisiones = False Then + If Not EsRefacturacion AndAlso (ObjFactura.SaldoAlmacen <> 0 AndAlso ObjFactura.EsDevolucionVenta.Contiene(0, 1)) AndAlso Not RealizarDevolucionAlmacen And RevivirRemisiones = False Then Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene movimientos de inventario." Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia @@ -4190,7 +4196,8 @@ Namespace Modelos End If - Dim CveEstatusRefacturacion As Integer = 0 + Dim CveEstatusRefacturacion As Integer = If(ObjFactura.CveEstatusRefacturacion <= 0, 0, ObjFactura.CveEstatusRefacturacion) + 'ACTUALIZA ESTATUS If Not ErrorCancelar Then Select Case ObjFactura.TipoDocto @@ -4208,11 +4215,17 @@ Namespace Modelos End If End If - - If Not ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, CancelacionAcuse, CancelacionFecha, CveVenta, IDPoliza, CvePAC:=CvePACCancelacion, CveEstatusRefacturacion:=CveEstatusRefacturacion, - CveUsuarioCambiaEstatus:=UsuarioActual.CveUsuario, FechaCambioEstatus:=Now.ToString("yyyy-MM-dd hh:mm:ss.mmm")) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al guardar el estatus de cancelación." + If CveEstatus.Contiene(4, 5) Then + If Not ObjVentas.UpdateCancelaVenta(CveVenta, CancelacionFecha, CancelacionAcuse, UsuarioActual.CveEmpresa, CvePACCancelacion) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al guardar el estatus de cancelación." + End If + Else + If Not ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, CancelacionAcuse, CancelacionFecha, CveVenta, IDPoliza, CvePAC:=CvePACCancelacion, CveEstatusRefacturacion:=CveEstatusRefacturacion, + CveUsuarioCambiaEstatus:=UsuarioActual.CveUsuario, FechaCambioEstatus:=Now.ToString("yyyy-MM-dd hh:mm:ss.mmm")) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al guardar el estatus de cancelación." + End If End If If CancelarRemisiones Then @@ -4701,8 +4714,8 @@ Namespace Modelos #End Region -#Region "P R O P I E D A D E S" - +#Region "P R O P I E D A D E S" + Public Property CveEstatusRefacturacion As Integer = 0 Public Property NuevaFactura As Integer Public Property EnviarCorreo As Boolean = False Public Property ErrorList As List(Of String) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index e6643891b..f5bf8561c 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -17448,7 +17448,11 @@ Partial Class Ventas If resp.CveEstatus = 5 Then Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnEnviarMailCancelacion();", TextoConfirmacion:="    Si    ", TextoCancelacion:="    No    ") Else - Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();") + If Not EsRefacturacion Then + Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();") + Else + Response.Redirect($"/Ventas/RepCancelacionesPorRespuesta.aspx?CveVenta={Me.CveVenta}") + End If End If ObjFactura.CveAlmacen = -1 From 14cab8d59718b6110f2d21c09935bd990fd91ba1 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Sat, 31 Aug 2019 13:24:23 -0700 Subject: [PATCH 03/54] Registrar en 0 mercncia en transito nc --- Compras/Compras.aspx.vb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 02bb186f9..01188dd7f 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6207,7 +6207,6 @@ Partial Class Compras_Compras Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}" - If importeMovimiento <> 0 Then 'Conta ContPAQ If IdCtaContable = 0 Then CuentasContablesInvalidas.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) @@ -6224,9 +6223,8 @@ Partial Class Compras_Compras End If - End If - Dim ContienePSNeteoBonif As Boolean = False + 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 From 6f6294d91da2118be302c44b2c385c9fb2b0a14d Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Sun, 1 Sep 2019 13:50:01 -0700 Subject: [PATCH 04/54] Nominas Timbrado --- .gitignore | 2 +- App_Code/ClsPaginas.vb | 2 +- App_Code/ClsRH.vb | 22 ++++++++ App_Code/Timbrado.vb | 22 ++++---- Nomina/Finiquito.aspx | 24 +++++++++ Nomina/Finiquito.aspx.vb | 110 +++++++++++++++++++++++++-------------- 6 files changed, 132 insertions(+), 50 deletions(-) diff --git a/.gitignore b/.gitignore index b14cc0feb..03c601b3e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ ################################################################################ # Este archivo .gitignore ha sido creado automáticamente por Microsoft(R) Visual Studio. ################################################################################ - +/Utilerias /Empresas /Menu /Web.config diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 653c048d5..e498feb95 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4124,7 +4124,7 @@ Public Class ClsPaginas PaginaDict.Add("/Nomina/CatSatRegimenContratacion.aspx".ToUpper(), 257) PaginaDict.Add("/Nomina/CatSatTipoIncapacidad.aspx".ToUpper(), 258) PaginaDict.Add("/Nomina/CatSatRiesgoPuesto.aspx".ToUpper(), 259) - PaginaDict.Add("/Nomina/Utilidades.aspx".ToUpper(), 870) + PaginaDict.Add("/Nomina/ReportePTU.aspx".ToUpper(), 870) #End Region 'Ordenes de Servicios #Region "OS" diff --git a/App_Code/ClsRH.vb b/App_Code/ClsRH.vb index c6400cce7..e21b6511f 100644 --- a/App_Code/ClsRH.vb +++ b/App_Code/ClsRH.vb @@ -1984,6 +1984,28 @@ Public Class ClsRH Return Retorno End Function + Public Function UpPersonalAltas(CvePersonal As Integer, fechaInicio As String, fechaFin As String, CvePeriodoFiniquito As Integer, CveMotivoBaja As Integer, esLiquidacion As Boolean) As Boolean + Dim Retorno As Boolean = False + SqlDataAdapter("PA_RH_PersonalAltasUp") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CvePersonal", SqlDbType.Int).Value = CvePersonal + .Add("@fechaInicio", SqlDbType.VarChar).Value = fechaInicio + .Add("@fechaFin", SqlDbType.VarChar).Value = fechaFin + .Add("@CvePeriodoFiniquito", SqlDbType.Int).Value = CvePeriodoFiniquito + .Add("@CveMotivoBaja", SqlDbType.Int).Value = CveMotivoBaja + .Add("@esLiquidacion", SqlDbType.Int).Value = If(esLiquidacion, 1, 0) + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener el reporte de Altas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function + Public Function GetPersonalAltas(CvePersonal As Integer) As Boolean Dim Retorno As Boolean = False SqlDataAdapter("PA_RH_PersonalAltasGet") diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index ef77aa206..9ccf49d07 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -634,7 +634,7 @@ Public Class Timbrado 'Retorno = TimbrarFacturaProFact(UsuarioActual, Ventas, TmpDTConceptos, TmpDTImpuestos, TmpDTComplementos, Ruta, LstFordASN, FordGSDBM, ObjV) Case 4 - Dim Ret As String = TimbrarFacturaGoCFDIv33(Ventas, UsuarioActual) + Dim Ret As String = TimbrarFacturaGoCFDIv33(Ventas, UsuarioActual, CvePACEspecial) Retorno = If(Ret = "", True, False) End Select @@ -1571,7 +1571,10 @@ Public Class Timbrado 'GC.Collect() Return Retorno End Function - Public Function TimbrarFacturaGoCFDIv33(Ventas As Modelos.Factura, UsuarioActual As Usuario) As String + Public Function TimbrarFacturaGoCFDIv33(Ventas As Modelos.Factura, UsuarioActual As Usuario, Optional CvePACEspecial As Integer = -1) As String + If CvePACEspecial = -1 Then + CvePACEspecial = UsuarioActual.Empresa.CvePAC + End If Dim sw As New Diagnostics.Stopwatch Dim swmili As Long = 0 Dim swTiempo As New StringBuilder @@ -1581,8 +1584,8 @@ Public Class Timbrado ' 'Sucursal matriz de la empresa Dim ArchivoLLave As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoKey) Dim ArchivoCertificado As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoCer) - Dim UsuarioServicio As String = If(UsuarioActual.Empresa.CvePAC = 2, UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx") - Dim ClaveServicio As String = If(UsuarioActual.Empresa.CvePAC = 2, UsuarioActual.Empresa.RFC.ToLower, "rene2018") + Dim UsuarioServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx") + Dim ClaveServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC.ToLower, "rene2018") Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey Dim EmisorRFC As String = UsuarioActual.Empresa.RFC Dim UrlServicio As String = "" ' Produccion @@ -1591,8 +1594,7 @@ Public Class Timbrado Dim SubTotal As Decimal = 0 Dim TimbraProduccion As Boolean = True If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo) - - Select Case UsuarioActual.Empresa.CvePAC + Select Case CvePACEspecial Case 2 UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" Case 4 @@ -1606,7 +1608,7 @@ Public Class Timbrado ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer" Clave = "12345678a" TimbraProduccion = False - Select Case UsuarioActual.Empresa.CvePAC + Select Case CvePACEspecial Case 2 UsuarioServicio = "fgomez" ClaveServicio = "12121212" @@ -2090,7 +2092,7 @@ Public Class Timbrado Using ObjVentas As New ClsVentas() - If ObjVentas.UpdateEstatusFactura(3, FolioFiscal, "", ObjCFDITimbre.Comprobante.Fecha, Ventas.CveVenta, CvePAC:=UsuarioActual.Empresa.CvePAC) Then + If ObjVentas.UpdateEstatusFactura(3, FolioFiscal, "", ObjCFDITimbre.Comprobante.Fecha, Ventas.CveVenta, CvePAC:=CvePACEspecial) Then Retorno = "" Else Retorno = "Error" @@ -2113,7 +2115,7 @@ Public Class Timbrado If ObjCFDITimbre.Comprobante.TipoComprobante = "N" Then Using ObjNomina2 As New ClsNominas() - If ObjNomina2.UpdateEstatusNomNominas(3, UsuarioActual.Empresa.CvePAC, FolioFiscal, "", ("01/01/2000").ToDate, ObjCFDITimbre.Nomina.CveNomina, 0, 0, 0, 0, 0) Then + If ObjNomina2.UpdateEstatusNomNominas(3, CvePACEspecial, FolioFiscal, "", ("01/01/2000").ToDate, ObjCFDITimbre.Nomina.CveNomina, 0, 0, 0, 0, 0) Then Retorno = "" Else Retorno = "Error" @@ -2159,7 +2161,7 @@ Public Class Timbrado End If #End Region - GuardaLogTimbrado(swTiempo.ToString, UsuarioActual.Empresa.CvePAC) + GuardaLogTimbrado(swTiempo.ToString, CvePACEspecial) Return Retorno End Function Public Sub GuardaLogTimbrado(Str As String, CvePAC As Integer) diff --git a/Nomina/Finiquito.aspx b/Nomina/Finiquito.aspx index 599e4f46c..44af81510 100644 --- a/Nomina/Finiquito.aspx +++ b/Nomina/Finiquito.aspx @@ -188,6 +188,10 @@
+
+ + +
+
+ ¿es Liquidación? + +
@@ -285,6 +293,22 @@ <%--" PercepcionesDeducciones "--%> diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 014263330..f009aa10e 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -649,6 +649,7 @@ Partial Class Bancos_IE CveIE = -1 TxtFechaDocumento.Text = Now.ToShortDateString ImgUpdateCuentaDeposito.Visible = False + TxtFechaDocumento.Attributes.Add("onchange", "CambiaTC(this);") End If InicializaSolicitudAnticipoOC() @@ -2251,7 +2252,12 @@ Partial Class Bancos_IE Dep.Dispose() Return EsValido - End Function + End Function + + Protected Sub BtnCambiaTipoMoneda_Click(sender As Object, e As EventArgs) + CambiaTipoMoneda() + End Sub + Protected Sub BtnGuardar_Click(sender As Object, e As System.EventArgs) Handles BtnGuardar.Click @@ -2259,9 +2265,7 @@ Partial Class Bancos_IE Exit Sub End If - 'PARA QUE TOME EL TIPO DE CAMBIO DEL DIA - TxtTipoCambio.Text = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToString - UpTipoCambio.Update() + Dim ObjIE As New ClsBancos() @@ -3045,14 +3049,13 @@ Partial Class Bancos_IE 'BANCOS COMPLEMENTARIA If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then Dim ImporteAplicar As Decimal = TxtImporte.Text.ToDecimal - Dim TCPago As Decimal = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToDecimal - Dim ImporteAplicarMN = (ImporteAplicar * TCPago - ImporteAplicar).RoundSQL() - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteAplicar, Ref, 204, Conc, Now, IDCtaContableComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=CveCuentaConta, TipoCambio:=TCPago) Then + Dim ImporteAplicarMN = (ImporteAplicar * TxtTipoCambio.Text.ToDecimal - ImporteAplicar).RoundSQL() + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteAplicar, Ref, 204, Conc, Now, IDCtaContableComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=CveCuentaConta, TipoCambio:=TxtTipoCambio.Text.ToDecimal) Then MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" End If If CveConceptoCompra = 10 Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, ImporteAplicar, Ref, 266, Conc, Now, IdCtaAnticipoComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=0, TipoCambio:=TCPago) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, ImporteAplicar, Ref, 266, Conc, Now, IdCtaAnticipoComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=0, TipoCambio:=TxtTipoCambio.Text.ToDecimal) Then MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" End If End If diff --git a/Bancos/Reportes.aspx.vb b/Bancos/Reportes.aspx.vb index 3bb4858d2..cdd1eb1d7 100644 --- a/Bancos/Reportes.aspx.vb +++ b/Bancos/Reportes.aspx.vb @@ -119,7 +119,7 @@ Partial Class Bancos_Reportes If Not UsuarioActual.CveEmpresa.Contiene(13, 83) Then 'CONVIERTO A PESOS CUANDO SE PAGA CON PESOS FACTURAS DE DOLARES For Each Dr As DataRow In dtMovs.Rows - Dr("Importe") = Dr("Importe").ToString.ToDecimal * Dr("TC").ToString.ToDecimal + Dr("Importe") = Dr("ImporteMN").ToString.ToDecimal Dr("ImporteNC") = Dr("ImporteNC").ToString.ToDecimal * Dr("TC").ToString.ToDecimal Dr("Total") = Dr("Total").ToString.ToDecimal * Dr("TC").ToString.ToDecimal Dr("Saldo") = Dr("Saldo").ToString.ToDecimal * Dr("TC").ToString.ToDecimal From 1d6fbe9cb3b5d61117411fa2c20d2685cf923196 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Mon, 2 Sep 2019 17:09:50 -0700 Subject: [PATCH 12/54] Editar compra cuando esta contabilizada --- Compras/Compras.aspx.vb | 6011 ++++++++++++++++++++------------------- 1 file changed, 3010 insertions(+), 3001 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 01188dd7f..c8595839f 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -4166,1486 +4166,1594 @@ Partial Class Compras_Compras '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 + 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 - Else - UsuarioActual.Sesion("Comp-NumeroReembolso") = "" End If + If Not ErrorMovtosIE Then - If Not ErrorReembolso Then + 'REEMBOLSOS NO USA AC + Dim NumeroReembolso = "-1" + If TxtNumeroReembolso IsNot Nothing And RBLPago.SelectedValue = "3" Then + NumeroReembolso = TxtNumeroReembolso.Text - 'PORCENTAJE IVA - Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal + ''GUARDA VALORES PARA SESSION + UsuarioActual.Sesion("Comp-NumeroReembolso") = TxtNumeroReembolso.Text + UsuarioActual.Sesion("Comp-CveFYE") = DdlPersonalReembolso.SelectedValue + UsuarioActual.Sesion("Comp-Descripcion") = TxtDescripcion.Text - '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 + If NumeroReembolso <> "-1" Then + If CvePersonal <= 0 And CveCajaChica <= 0 Then + ErrorReembolso = True End If - - 'Condiciones para los casos de facturas que son en 0 pero que se utiliza el almacen - ElseIf OCVinculada AndAlso Not (CveImportacion > 0 Or CveFlete > 0) AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then - CveConceptoContableAlmacen = DdlOCVinculaInv.SelectedValue.ToEntero - ElseIf (CveImportacion > 0 Or CveFlete > 0) AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then - CveConceptoContableAlmacen = CveConceptoContableAlmacen End If + Else + UsuarioActual.Sesion("Comp-NumeroReembolso") = "" End If - If RBLPago.SelectedValue.ToEntero = 4 And EstatusCredito.Contiene(1, 101) Then - CveEstatusFactura = 6 - End If + If Not ErrorReembolso Then - '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 + 'PORCENTAJE IVA + Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal - 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 DdlIVA.SelectedValue.ToDouble = 1.16 Then + ' PorcentajeIVA = 0.16 + 'ElseIf DdlIVA.SelectedValue.ToDouble = 1.08 Then + ' PorcentajeIVA = 0.08 + 'End If - 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 + '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 - TotalPorDevengar = TotalPorDevengar * 3 + CveConceptoContableAlmacen = 225 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 + 'Condiciones para los casos de facturas que son en 0 pero que se utiliza el almacen + ElseIf OCVinculada AndAlso Not (CveImportacion > 0 Or CveFlete > 0) AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then + CveConceptoContableAlmacen = DdlOCVinculaInv.SelectedValue.ToEntero + ElseIf (CveImportacion > 0 Or CveFlete > 0) AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then + CveConceptoContableAlmacen = CveConceptoContableAlmacen + End If + End If - '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 + If RBLPago.SelectedValue.ToEntero = 4 And EstatusCredito.Contiene(1, 101) Then + CveEstatusFactura = 6 + 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 + '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 - 'Dim tTotalIVA, tTotalGral, tDiferenciaIVA, tIVA As Double - tTotalIVA = TxtIVA.Text.ToDecimal - tRetIVA = TxtRetIVA.Text.ToDecimal - tRetISR = TxtRetISR.Text.ToDecimal + 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 - 'tTotalIVA = tTotalIVA - tRetIVA - tRetISR + If CveImportacion > 0 Or CveFlete > 0 Then - 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 + 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 - - '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 + 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 - - 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) + 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 - 'Presupuesto Egresos - DtPresupuestosTemp = DtPresupuestos.FiltraParametros(String.Format("CvePresupuestoEgreso = {0}", grp.CvePresupuestoEgreso)) - If DtPresupuestosTemp.Rows.Count <> 1 Then + + 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(" - DtPresupuestosTemp.Rows.Count <> 1 ") - Exit For + ErrorACMEnsaje.Append(" - DrCuenta Nula") 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 + Else + ErrorACMEnsaje.Append(" - Error al consultar cuenta 021190000000000000 ") + ErrorAC = True + End If + End If - '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 + 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 - ErrorACMEnsaje.Append(" - Error al agregar movimiento contabilidad 1") Exit For End If Else - ErrorACMEnsaje.Append(" - Error al agregar movimiento contabilidad 2") + ErrorACMEnsaje.Append(" - Error al agregar movimiento contabilidad 4") 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 - If ContadorInventario > 0 Then - CuentaMatrizAlmacen = CtaAlmacen - ElseIf grp.CveActivoFijo > 0 Then + Dim CtaAF = -1 + Dim AF = "" + Dim CuentaInicial = -1 - 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 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 - 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) - '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) + 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 drCuenta nulo") + ErrorACMEnsaje.Append(" - Error al obtener cuentas 0{0}0000000000000") ErrorAC = True End If - Else - ErrorACMEnsaje.Append(" - Error al obtener cuentas 0{0}0000000000000") - ErrorAC = True End If + + CuentaMatrizAlmacen = CtaAF + Else + CuentaMatrizAlmacen = IdCuentaMatriz End If - CuentaMatrizAlmacen = CtaAF - Else - CuentaMatrizAlmacen = IdCuentaMatriz - End If + + ''AFECTAR MATRIZ EGRESOS + If ObjContaAC.AddMovimiento(IdPoliza, CuentaMatrizAlmacen, False, MultiplicadorNC * Importe, "", ConceptoRenglon, 0, Fecha, "") Then - ''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 - ''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(" - Error AFECTAR MATRIZ EGRESOS ObjContaAC.AddMovimiento") + ErrorACMEnsaje.Append(" - For Each grp In Presup Importe > 0 ") 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 - 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 - ''[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 - ' '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") + ' '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 - 'TERMINA: PRUEBA AGRUPACION CONCEPTOS - - 'registrar amortizar anticipos + Else + ErrorACMEnsaje.Append(" - Id Poliza = 0 ") + ErrorAC = True End If - Else - ErrorACMEnsaje.Append(" - Id Poliza = 0 ") + TieneError = True + ErrorACMEnsaje.Append("- TotalPorDevengar <= TxtTotal.Text.ToDouble And TotalPorDevengar > 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 + 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 + ''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 + ''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 TmpDr As DataRow = TmpDT.Select($"Consec = {Row("Consec").ToString}")(0) - TmpDr("CveCompraDetalle") = ObjCompras.CveCompraDetalle + Dim CvePersonal = -1 + Dim Referencia = "" - ' 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 + 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 - End If + '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) - '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 + '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 - Else + + '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 - '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 + ''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 - '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 + ''ALMACEN CONSIGNACION + If CveConsignacion > 0 Then - 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 + '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 - Next - If Not ErrorMovInv Then + ''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.ToDouble > 0 Then + 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) 'Charlie - TmpDr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero 'Charlie + 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 - Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dr("Consec").ToString.ToEntero}")(0) 'Charlie - TmpDr("CveAlmacen") = 0 'Charlie + Dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero + Dr("Cantidad") = GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble - dr("CveAlmacen") = 0 + 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 cvemovimientosalida = 0 - Dim cvemovimientoentrada = 0 - Dim cvemovimientosalidagasto = 0 - Dim folio = 0 - Dim fecha As Date = TxtFecha.Text.ToDate + 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 + 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 + 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 + Dim fecha As Date = TxtFecha.Text.ToDate 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 + 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 - Exit For Else - CveMovimientoInventario = cvemovimientoentrada + + 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 - 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 + For Each Dr As DataRow In DtInv.Rows - ErrorMovInv = True - Exit For + 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 - End If - Next + Else - End If + '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'") - '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 + '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 - 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 + '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 - - 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 - i = i + 1 - Next - End If - Next + + 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 - If AplicarCostoIndirecto(ObjInventario, ObjCompras) Then - ErrorMovInv = True - End If + 'Afectable con el tabpanel Contable + Dim CveProveedorLocal As Integer + Dim CveProveedorConcepto As Integer + Dim CveAcreedor As Integer + Dim CveColectiva As Integer = -1 - 'Else - ' Alert("El tipo de cambio no esta actualizado. Por favor comuniquese con un asistente SIG.", TipoMensaje.MsgError) - ' ErrorMovInv = True - 'End If + 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) - End If + If RBLPago.SelectedValue = "1" Or RBLPago.SelectedValue = "3" Then + 'Credito Proveedor + CveProveedorLocal = CveProveedor + CveProveedorConcepto = CveProveedor + CveAcreedor = -1 - '*************************************************** 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 + Else + 'cuando es contado - 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 + 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 = 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 + 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 - 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 Select End If - For Each GvRow As GridViewRow In GvCreditos.Rows + If RBLPago.SelectedValue.ToEntero = 4 Then + Dim TmpTotal As Decimal = TxtTotal.Text.ToDecimal + Dim TmpTotalCreditos As Decimal = 0 - 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 + 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 - 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 TmpTotalCreditos > TmpTotal Then + ErrorCredito = True + End If - If Capital > 0 Or Interes > 0 Or Ambos > 0 Then + For Each GvRow As GridViewRow In GvCreditos.Rows - If ObjIE.GetCreditosDetalle(CveCreditoTemp, -1) Then + 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 CveCompraCapital As Integer = -1 - Dim CveCompraInteres As Integer = -1 + 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 - 'Dim ImporteCapital As Decimal = 0 - ' Dim ImporteCapitalIVA As Decimal = 0 + If Capital > 0 Or Interes > 0 Or Ambos > 0 Then - 'Dim ImporteInteres As Decimal = 0 - ' Dim ImporteInteresIVA As Decimal = 0 + If ObjIE.GetCreditosDetalle(CveCreditoTemp, -1) Then - ' Dim ImporteIEMensualidad As Decimal = ObjIE.DtResultados.FiltroPrimeroValor("ImporteIE", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToDecimal - CreditoEstatus = ObjIE.DtResultados.FiltroPrimeroValor("Estatus", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero + Dim CveCompraCapital As Integer = -1 + Dim CveCompraInteres As Integer = -1 - CveCompraCapital = ObjIE.DtResultados.FiltroPrimeroValor("CveCompra", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero - CveCompraInteres = ObjIE.DtResultados.FiltroPrimeroValor("CveCompraInteres", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero + 'Dim ImporteCapital As Decimal = 0 + ' Dim ImporteCapitalIVA As Decimal = 0 - CveCompraCapital = If(CveCompraCapital < 1, -1, CveCompraCapital) - CveCompraInteres = If(CveCompraInteres < 1, -1, CveCompraInteres) + 'Dim ImporteInteres As Decimal = 0 + ' Dim ImporteInteresIVA As Decimal = 0 - TipoCreditoInteres = Boolean.Parse(ObjIE.DtResultados.FiltroPrimeroValor("TipoInteres", $"CveCreditoDetalle = {CveCreditoDetalleTemp}")) - ImporteIECredito = ObjIE.DtResultados.FiltroPrimeroValor("ImportePago", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToDecimal + ' Dim ImporteIEMensualidad As Decimal = ObjIE.DtResultados.FiltroPrimeroValor("ImporteIE", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToDecimal + CreditoEstatus = ObjIE.DtResultados.FiltroPrimeroValor("Estatus", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero - If Ambos > 0 Then - CveCompraCapital = CveCompra - CveCompraInteres = CveCompra + CveCompraCapital = ObjIE.DtResultados.FiltroPrimeroValor("CveCompra", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero + CveCompraInteres = ObjIE.DtResultados.FiltroPrimeroValor("CveCompraInteres", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToEntero - Capital = Ambos - Interes = Ambos + CveCompraCapital = If(CveCompraCapital < 1, -1, CveCompraCapital) + CveCompraInteres = If(CveCompraInteres < 1, -1, CveCompraInteres) - End If + TipoCreditoInteres = Boolean.Parse(ObjIE.DtResultados.FiltroPrimeroValor("TipoInteres", $"CveCreditoDetalle = {CveCreditoDetalleTemp}")) + ImporteIECredito = ObjIE.DtResultados.FiltroPrimeroValor("ImportePago", $"CveCreditoDetalle = {CveCreditoDetalleTemp}").ToDecimal - If Capital > 0 Then - CveCompraCapital = CveCompra - End If - If Interes > 0 Then - CveCompraInteres = CveCompra - End If + If Ambos > 0 Then + CveCompraCapital = CveCompra + CveCompraInteres = CveCompra + Capital = Ambos + Interes = Ambos - - 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 + 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 - '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:

" - Dim idCuentaContabilizacion As Long = 1 - 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 + Next 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 + Dim TipoMovimientoCompra As Boolean = False + Dim TipoMovimientoImpuestos As Boolean = True If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then - importeNC = TxtTotal.Text.ToDecimal + CveConceptoAfectacion = 18 'Devolución del Proveedor (NC) + TipoMovimientoCompra = Not TipoMovimientoCompra + TipoMovimientoImpuestos = Not TipoMovimientoImpuestos End If - '************************************************************************************************************************** + If EmpresaPrueba Then 'Empresa Prueba - 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 + 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:

" + Dim idCuentaContabilizacion As Long = 1 + 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 - 'CASO ESPECIAL CREDITOS - If CveIECreditos > 0 Then - CveIE = CveIECreditos - 'Dim CveIEProvisional = CveIE - End If + 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 - If ObjConta.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPrePoliza) Then + '****** X Acreditar + 'IVA X Acreditar (14) + Dim importeIVAxAcreditar As Decimal = 0 + importeIVAxAcreditar = TxtIVA.Text.ToDecimal - Dim DTPlatilla As New DataTable - DTPlatilla = ObjConta.DtResultados + 'IEPS X Acreditar (25) + Dim ImporteIEPSxAcreditar As Decimal = 0 + ImporteIEPSxAcreditar = TxtIEPS.Text.ToDecimal - For Each Row As DataRow In DTPlatilla.Rows + 'Otros Impuestos (224) + Dim OtrosImpuestos As Decimal = 0 + OtrosImpuestos = TxtOtrosImpuestos.Text.ToDecimal - 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 + '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 - Select Case ConceptoContable + + '****** 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 + 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString) - idCuentaContabilizacion = 0 - End If - 'Conta SIG - If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
" & 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 + importeMovimiento = importePagoProv + importeMN = importeMovimiento * tipoCambioActual * Multiplicador 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 + + + 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString) + idCuentaContabilizacion = 0 + End If + 'Conta SIG + If CveCuenta = 0 Then + CuentasContablesInvalidasSIG.Append("
" & 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 - 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 + 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 - 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 TipoCreditoInteres Then - 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 + 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 - '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 + + + + 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 - 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 + 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(308).ToEntero > 0 Then - IdCtaContable = UsuarioActual.Empresa.Funcionalidad(308).ToEntero + 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 @@ -5655,7 +5763,105 @@ Partial Class Compras_Compras End If End If - 'Agregamos el Opuesto del 22 -> 15 + 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 @@ -5665,547 +5871,341 @@ Partial Class Compras_Compras 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 + 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 CtaProveedorRetIVA > 0 Then - IdCtaContable = CtaProveedorRetIVA - CveCuenta = CveCuentaProveedorRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(307).ToEntero > 0 Then - IdCtaContable = UsuarioActual.Empresa.Funcionalidad(307).ToEntero + 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)("IdCuentaRetIVACirculacion").ToString.ToEntero - CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero + 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 - 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 + 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 CtaProveedorRetIVA > 0 Then - IdCtaContable = CtaProveedorRetIVA - CveCuenta = CveCuentaProveedorRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(310).ToEntero > 0 Then - IdCtaContable = UsuarioActual.Empresa.Funcionalidad(310).ToEntero + 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)("IdCuentaRetIVACirculacion").ToString.ToEntero - CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero + 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 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 + 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 CtaProveedorRetIVA > 0 Then - IdCtaContable = CtaProveedorRetIVA - CveCuenta = CveCuentaProveedorRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(312).ToEntero > 0 Then - IdCtaContable = UsuarioActual.Empresa.Funcionalidad(312).ToEntero + 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)("IdCuentaRetIVACirculacion").ToString.ToEntero - CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero + 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 186 -> 185 + 'Agregamos el Opuesto del 244 -> 243 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 + 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 - 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 + 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 - 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 + + 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 - - If tipoCambioActual > 1 Then Concepto += $" TC:{tipoCambioPago} ${importeMovimiento.FormatoNumero(2)}" + Else + importeMovimiento = 0 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 + Case 6 'Compra - '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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 49))("ConceptoContable").ToString) - idCuentaContabilizacion = 0 - End If - 'Conta SIG - If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
" & 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 + If RBLPago.SelectedValue.ToEntero = 4 Then + Exit Select 'Es credito el concepto 6 se agrega en CASE 17 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 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 = 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 + 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(68, GvInv.HeaderRow.FCDropDownList("ddlAlmacen").SelectedValue.ToString.ToEntero) Then + If ObjConta.GetRetCuenta(49, Row2("CveActivoFijo").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 + 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) + CuentasContablesInvalidas.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 49))("ConceptoContable").ToString) idCuentaContabilizacion = 0 End If 'Conta SIG If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) + CuentasContablesInvalidasSIG.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 49))("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 + 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 - End If - 'LIMPIA - importeMovimiento = 0 - IdCtaContable = 0 - CveCuenta = 0 + '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 + '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 - '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 - 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 + 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) + idCuentaContabilizacion = 0 + End If + 'Conta SIG + If CveCuenta = 0 Then + CuentasContablesInvalidasSIG.Append("
" & 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 - If ObjConta.GetRetCuenta(ConceptoContabilizacionME, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableME = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero - End If + 'LIMPIA + importeMovimiento = 0 + IdCtaContable = 0 + CveCuenta = 0 - If ObjConta.GetRetCuenta(ConceptoContabilizacionMEComp, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableMEComp = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero - End If + ''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 + 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 + '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 - ErrorPrepoliza = True - Exit For + 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 - 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 + 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 - 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 + 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 - ErrorPrepoliza = True + + 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 - Else + End Select + 'End If - 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}" + + '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}" 'Conta ContPAQ If IdCtaContable = 0 Then @@ -6225,551 +6225,489 @@ Partial Class Compras_Compras 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 + 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 + 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 + + + + If Not ChkNCInvNC.Checked OrElse Not ListaDocumentos.Count > 0 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString) + idCuentaContabilizacion = 0 + End If + 'Conta SIG + If CveCuenta = 0 Then + CuentasContablesInvalidasSIG.Append("
" & 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) + idCuentaContabilizacion = 0 + End If + 'Conta SIG + If CveCuenta = 0 Then + CuentasContablesInvalidasSIG.Append("
" & 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 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 - 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 + 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 - End If - End If - - End If - - - - If Not ChkNCInvNC.Checked OrElse Not ListaDocumentos.Count > 0 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 6))("ConceptoContable").ToString) - idCuentaContabilizacion = 0 - End If - 'Conta SIG - If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
" & 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) - idCuentaContabilizacion = 0 - End If - 'Conta SIG - If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
" & 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 + '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", 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 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 - 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 + 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 - 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) - idCuentaContabilizacion = 0 - End If - 'Conta SIG - If CveCuenta = 0 Then - CuentasContablesInvalidas.Append("
" & 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 + 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 - 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 + Else ErrorPrepoliza = True Exit For End If - Else - ErrorPrepoliza = True - Exit For + + ' 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) + idCuentaContabilizacion = 0 + End If + 'Conta SIG + If CveCuenta = 0 Then + CuentasContablesInvalidas.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) + idCuentaContabilizacion = 0 End If - If TxtTotal.Text.ToDouble > 0 Then + '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 ' 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 + 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 @@ -6779,34 +6717,6 @@ Partial Class Compras_Compras 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) @@ -6832,232 +6742,590 @@ Partial Class Compras_Compras End If End If End If - End If - Else + 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 - - 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 + importeMNNC = importeMovimientoNC * TipoCambioNC * Multiplicador 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 + 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 - '** 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) + Next + importeMovimiento = 0 - '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 + End If + End Select - '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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) - idCuentaContabilizacion = 0 - End If - 'COnta SIG - If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
" & 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 + If ErrorPrepoliza Then Exit For End If - 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("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) + idCuentaContabilizacion = 0 + End If + 'COnta SIG + If CveCuenta = 0 Then + CuentasContablesInvalidasSIG.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString) + CveCuentaContabilizacion = 0 + End If - Next + 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 - '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 - - 'Simplificacion de PrePolizas - If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then - If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then - ErrorPrepolizaDescuadre = True - 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.Funcionalidad(200).ToString = "1" 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:
{0}", CuentasContablesInvalidas), TipoMensaje.MsgAdvertencia) - ErrorPrepoliza = True + + 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 + + 'Simplificacion de PrePolizas + If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then + If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then + ErrorPrepolizaDescuadre = True + 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.Funcionalidad(200).ToString = "1" 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:
{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 + '' 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 - 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 + '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 ImporteAnticipo > 0 Then + + 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 @@ -7065,6 +7333,7 @@ Partial Class Compras_Compras TieneError = True Exit For End If + Else TieneError = True Exit For @@ -7088,634 +7357,365 @@ Partial Class Compras_Compras Next Else - ErrorACMEnsaje.Append(" - error al obtener presupuestos ObjCompras.GetPresupuestosCompras") + ErrorACMEnsaje.Append("- error al obtener presupuestos 2") 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 + '' 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 - End If + Dim ImportePagadoFE As Decimal = 0 + Dim ImporteAPagarFE As Decimal = TxtDocumentoImporteFE.Text.ToDecimal + Dim ImportePagar As Decimal = ImporteAPagarFE - 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 + '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 - 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 + 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 - 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 + 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 - 'Agrego el RetIVA 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 - 'Agrego el RetISR 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 - 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 + End If 'Empresa Prueba - 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 + Else + ErrorMovtosCxP = True 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 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 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 + 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 - 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.
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.
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.
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.
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.
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.
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.
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.
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 + Next + Else 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 - - - '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 - + 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 - 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("

Ver Póliza", IdPoliza) - End If - - If CveMovimientoInventario > 0 Then - Dim TempParametros = Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoInventario)) - Msg.AppendFormat("
Ver Movimiento de Almacen", CveMovimientoInventario) - Msg.AppendFormat("
Imprimir Entrada Almacen", TempParametros) - End If - - ObjCompras.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, PolizaFolio.ToString, IdPoliza, CvePrePoliza, CveCompra, 0) - - If EntregaDirecta Then - Msg.AppendFormat($"
Recibir mercancía de entrega directa.") - 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("

El proveedor tiene evaluaciones pendientes
") - Msg.Append("¿Desea realizar una evaluacion al proveedor?") - Msg.AppendFormat($"
Evaluar Proveedor.") + + '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 - Alert(Msg.ToString, TipoMensaje.MsgInformacion, MsgAccionAceptar) + 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.
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.
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.
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.
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.
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.
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.
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.
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 + + + + '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("

Ver Póliza", IdPoliza) + End If + + If CveMovimientoInventario > 0 Then + Dim TempParametros = Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoInventario)) + Msg.AppendFormat("
Ver Movimiento de Almacen", CveMovimientoInventario) + Msg.AppendFormat("
Imprimir Entrada Almacen", TempParametros) + End If + + ObjCompras.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, PolizaFolio.ToString, IdPoliza, CvePrePoliza, CveCompra, 0) + + If EntregaDirecta Then + Msg.AppendFormat($"
Recibir mercancía de entrega directa.") + 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("

El proveedor tiene evaluaciones pendientes
") + Msg.Append("¿Desea realizar una evaluacion al proveedor?") + Msg.AppendFormat($"
Evaluar Proveedor.") + 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() - 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) + Alert("Ocurrió un error al agregar el movimiento bancario.
Revise sus datos de pago y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia) ObjCompras.RollBack() - If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() End If - Else - Alert("Ocurrió un error al agregar el movimiento bancario.
Revise sus datos de pago y cualquier detalle comuníquese a Soporte Técnico", TipoMensaje.MsgAdvertencia) - ObjCompras.RollBack() - End If - End If Catch ex As Exception @@ -8846,6 +8846,12 @@ Partial Class Compras_Compras ' End If 'End If + If IdPoliza > 0 Then + If Not ObjContabilidad.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then + Retorno = False + End If + End If + 'If UsuarioActual.Empresa.Funcionalidad(207) = "1" Then If Not ActualizarPrePoliza(ObjContabilidad, ObjCompra) Then Retorno = False @@ -8853,7 +8859,7 @@ Partial Class Compras_Compras 'End If ''EMPIEZA: SI USA AC - If UsuarioActual.Empresa.UsaAC And IdPoliza > 0 Then + If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso IdPoliza > 0 Then ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) ObjContaAC.IniciaTransacSQL() @@ -9174,6 +9180,8 @@ Partial Class Compras_Compras End If ''TERMINA: SI USA AC + + If Not ErrorAC Then Dim Cont As Integer = 0 For Each Row As DataRow In TmpDT.Rows @@ -9241,6 +9249,7 @@ Partial Class Compras_Compras 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 From ceb40eb9adc0624c54bcf2f31cf9c25881f30d0c Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Mon, 2 Sep 2019 18:22:33 -0700 Subject: [PATCH 13/54] Seleccion multiple tipo de comprobante reporte de productos servicios ventas --- Ventas/RepProductosServicios.aspx | 48 ++++++++++++++++++++- Ventas/RepProductosServicios.aspx.vb | 3 +- Ventas/RepProductosServiciosDetalle.aspx | 47 +++++++++++++++++++- Ventas/RepProductosServiciosDetalle.aspx.vb | 8 ++-- 4 files changed, 98 insertions(+), 8 deletions(-) diff --git a/Ventas/RepProductosServicios.aspx b/Ventas/RepProductosServicios.aspx index df1d14bf3..ee9d8692e 100644 --- a/Ventas/RepProductosServicios.aspx +++ b/Ventas/RepProductosServicios.aspx @@ -9,6 +9,40 @@ background-color: rgba(172, 195, 222, 0.65) !important; } + .select2 .select2-selection__rendered { + line-height: 1; + color: #111; + } + + .select2 .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 20px; + user-select: none; + -webkit-user-select: none; + } + + .select2-container--default .select2-selection--multiple .select2-selection__choice { + margin-top: 10px; + } + + .select2-selection__rendered { + margin-top: 0px; + height: 25px; + } + + .select2-selection { + margin-top: 0px; + height: 31px; + } + + .select2-container--default.select2-container--focus .select2-selection--multiple { + border: none; + outline: 0; + } + + #chartdiv { width: 100%; height: 500px; @@ -65,7 +99,17 @@
- + + + + + + + + + + + <%-- @@ -74,7 +118,7 @@ - + --%>
Fecha Inicio: diff --git a/Ventas/RepProductosServicios.aspx.vb b/Ventas/RepProductosServicios.aspx.vb index 648d3cfdf..cf47e16aa 100644 --- a/Ventas/RepProductosServicios.aspx.vb +++ b/Ventas/RepProductosServicios.aspx.vb @@ -248,6 +248,7 @@ Partial Class Ventas_RepProductosServicios Private Sub CargaDatos() + Dim TipoComprobante As String = If(DdlTipoComprobante.GetSelectedValuesM = "", "-1", DdlTipoComprobante.GetSelectedValuesM) Dim FechaI, FechaF, FechaIEjec, FechaFEjec As Date FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.ToDate, MinFecha) FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.ToDate, MaxFecha) @@ -262,7 +263,7 @@ Partial Class Ventas_RepProductosServicios If ObjVentas.GetRepProductosServicios(DdlProyecto.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, DdlCategoria.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlPS.SelectedValue.ToEntero, FechaI, FechaF, FechaIEjec, FechaFEjec, CveCliente, DdlSubProyectoEjecucion.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, DdlUsuario.SelectedValue.ToEntero, DdlEstatus.SelectedValue.ToEntero, "-1", - UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, CveUsuarioConsulta:=UsuarioActual.CveUsuario, TipoDocto:=DdlTipoComprobante.SelectedValue, + UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, CveUsuarioConsulta:=UsuarioActual.CveUsuario, TipoDocto:=TipoComprobante, CveClienteClasificacion:=DdlClienteClasificacion.SelectedValue.ToEntero, TipoCambio:=TipoCambio, TCEspecifico:=TCEspecifico, CveProveedorCompra:=CveProveedorCompra, CveMarca:=DdlMarcaPSDes.SelectedValue.ToEntero) Then GvDatos.DataSource = ObjVentas.DtResultados DtVentas = ObjVentas.DtResultados diff --git a/Ventas/RepProductosServiciosDetalle.aspx b/Ventas/RepProductosServiciosDetalle.aspx index 744e2616b..70da39f4f 100644 --- a/Ventas/RepProductosServiciosDetalle.aspx +++ b/Ventas/RepProductosServiciosDetalle.aspx @@ -5,6 +5,39 @@ + + + + + + + + 2.0288cm + + + 2.67118cm + + + 4.83954cm + + + 1.42176cm + + + 1.39642cm + + + 2.02084cm + + + 1.46813cm + + + 1.65333cm + + + 2.5cm + + + + + 0.46771cm + + + + + true + true + + + + + Tipo Cuenta + + + + + + + Textbox3 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Banco + + + + + + + Textbox5 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + No. Cuenta/ Resp. Caja Chica + + + + + + + Textbox21 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + CLABE + + + + + + + Textbox19 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Moneda + + + + + + + Textbox27 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Folio Inicial + + + + + + + Textbox31 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Estatus + + + + + + + Textbox4 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Fecha + + + + + + + Textbox14 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Usuario + + + + + + + Textbox16 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + =Fields!TipoCuenta.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Banco.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!NumCuenta.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CLABE.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Moneda.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!FInicial.Value + + + + + + + FInicial + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Estatus.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Fecha.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Usuario.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + DataSet1 + 0.36336cm + 0.06868cm + 1.06771cm + 20cm + 1 + + + + + + 0.60091in + + + + + + true + true + + + + + =Parameters!NombreEmpresa.Value + + + + + + + Textbox1 + 0.11854cm + 2.56328cm + 0.6cm + 14.35806cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + REPORTE DE CUENTAS BANCARIAS / CAJAS CHICAS + + + + + + + + + + + + + + + + Textbox2 + 1.03604cm + 3.80683cm + 0.52945cm + 11.89976cm + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + 1.19061cm + true + true + + + 0.11437cm + 0.10583cm + 0cm + 19.96285cm + + + + + + true + true + + + + + Usuario: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!UsuarioImprimio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresión: + + + + + + + Textbox10 + 0.22726cm + 6.97591cm + 0.36335cm + 2.92333cm + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Globals!ExecutionTime + + + + + + + Textbox11 + 0.22726cm + 9.88513cm + 0.36335cm + 4.32745cm + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Página " & Globals.PageNumber & " de " & Globals.TotalPages + + + + + + + Textbox3 + 0.22726cm + 18.00281cm + 0.36335cm + 2.06587cm + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + IMPRESO EN SIG, Cuentas Bancarias / Caja Ch. + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 0.5cm + 0.5cm + 0.13cm + + + + + + + + + 5.32348cm + + + 6.48486cm + + + 2.5cm + + + 1.42176cm + + + 1.83034cm + + + 2.5cm + + + + + 0.46771cm + + + + + true + true + + + + + Banco + + + + + + + Textbox3 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Ejecutivo + + + + + + + Textbox5 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Telefono + + + + + + + Textbox21 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Estado + + + + + + + Textbox19 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Fecha + + + + + + + Textbox27 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Usuario + + + + + + + Textbox31 + + + + Black + + + Black + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + =Fields!Banco.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Ejecutivo.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Telefono.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Estatus.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Fecha.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Usuario.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + DataSet1 + 0.36336cm + 0.06868cm + 1.06771cm + 20.06044cm + 1 + + + + + + 0.60091in + + + + + + true + true + + + + + =Parameters!NombreEmpresa.Value + + + + + + + Textbox1 + 0.11854cm + 2.56328cm + 0.6cm + 14.35806cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + REPORTE DE BANCOS + + + + + + + + + + + + + + + + Textbox2 + 1.03604cm + 3.80683cm + 0.52945cm + 11.89976cm + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + 1.19061cm + true + true + + + 0.11437cm + 0.10583cm + 0cm + 19.96285cm + + + + + + true + true + + + + + Usuario: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!UsuarioImprimio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresión: + + + + + + + Textbox10 + 0.22726cm + 6.97591cm + 0.36335cm + 2.92333cm + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Globals!ExecutionTime + + + + + + + Textbox11 + 0.22726cm + 9.88513cm + 0.36335cm + 4.32745cm + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Página " & Globals.PageNumber & " de " & Globals.TotalPages + + + + + + + Textbox3 + 0.22726cm + 18.00281cm + 0.36335cm + 2.06587cm + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + IMPRESO EN SIG, Bancos + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 0.5cm + 0.5cm + 0.13cm + - +   - + - + - + - + -
- - - -
- -
-
-
-
Datos del Concepto
+ + +
+
+
+
+
+ + Información +
+
+
+
+
+
+ + + +
-
-
- -
- - - -
-
-
- -
- - - -
-
-
- -
- - - -
-
-
- -
- - - -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
+
+
+
-
- +
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+ +
+
+
+ +
+ +
+
+
+ + Fórmulas +
+
+
+ Actualizar +
+
+
+
+ + + -
-
-
ESTATUS
-
-
-
- -
- -
-
-
- -
- -
-
-
-
+
- -
+ + + + + + + + <%--
+
+
+ + + +
+
+
--%> +
-
-
-
-
-
INFORMACIÓN
+ +
+
+
+ + Estatus +
+
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+
+
- -
- +
+ +
+
+
-
- -
- +
+
+
+
+ +
+
+
-
- -
- +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
- +
+
+
+ + + + <%----%> + + +   +
+ + +<%-- + + --%> + + + + + + - - - -
-
- - - - - <%----%> - -   - - -
- -
- + + + + + + - + + <%: System.Web.Optimization.Scripts.Render("~/Metronic/assets/global/plugins/codemirror/JS") %> + <%: System.Web.Optimization.Scripts.Render("~/Metronic/assets/global/plugins/jstree/dist/jstree.min.js") %> + + + diff --git a/Nomina/ConceptoNomina.aspx.cs b/Nomina/ConceptoNomina.aspx.cs index d8088ac08..0b80caa9a 100644 --- a/Nomina/ConceptoNomina.aspx.cs +++ b/Nomina/ConceptoNomina.aspx.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Linq; +using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; @@ -53,10 +54,124 @@ public partial class Nomina_CatConcepto : ClsPaginas { if (!IsPostBack) { + tree_Tables(); InicializaDatos(); } } + #region Arboles conceptos + DataTable dtrefrencias; + StringBuilder strKeys; + StringBuilder strKeys2; + StringBuilder strKeys3; + public void tree_Tables() + { + ClsNominas objnom = new ClsNominas(); + strKeys = new StringBuilder(); + strKeys2 = new StringBuilder(); + strKeys3 = new StringBuilder(); + StringBuilder tablaarbol = new StringBuilder(); + objnom.GetNom_Refencias(); + dtrefrencias = objnom.DtResultados; + objnom.Dispose(); + strKeys.Append("{"); + int tipo = 1; + #region tablas + tablaarbol.AppendLine("
    "); + foreach (DataRow row in dtrefrencias.FiltraParametros($"Nivel=0 AND Tipo ={tipo}").Rows) + { + AddchildtoEnd(ref tablaarbol, row, " ", " ", tipo); + } + tablaarbol.AppendLine("
"); + LtlArbolTabla.Text = tablaarbol.ToString(); + #endregion + + #region Formulas + tablaarbol.Clear(); + tipo = 2; + tablaarbol.AppendLine("
    "); + foreach (DataRow row in dtrefrencias.FiltraParametros($"Nivel=0 AND Tipo ={tipo}").Rows) + { + AddchildtoEnd(ref tablaarbol, row, " ", " ", tipo); + } + tablaarbol.AppendLine("
"); + LtlArbolFormulas.Text = tablaarbol.ToString(); + #endregion + + #region Funciones + tablaarbol.Clear(); + tipo = 3; + tablaarbol.AppendLine("
    "); + foreach (DataRow row in dtrefrencias.FiltraParametros($"Nivel=0 AND Tipo ={tipo}").Rows) + { + AddchildtoEnd(ref tablaarbol, row, " ", " ", tipo); + } + tablaarbol.AppendLine("
"); + LtlArbolFunciones.Text = tablaarbol.ToString(); + #endregion + + + + if (strKeys.Length > 2) + { + strKeys.Remove(1, 1); + } + strKeys.Append("}"); + LtlKeys.Text = string.Format(" MycurrentT ={0} ; strKeys2='{1}'; strKeys3='{2}'; ", strKeys.ToString(), strKeys2.ToString(), strKeys3.ToString()); + UpTablas.Update(); + //TxtMycurrentT.Text = strKeys.ToString(); + //TxtstrKeys2.Text = strKeys2.ToString(); + //TxtstrKeys3.Text = strKeys3.ToString(); + + } + public void AddchildtoEnd(ref StringBuilder tablaarbol, DataRow item, string identacion, string identacion2, int tipo) + { + string identacion3 = string.Format("{0}{1}", identacion, identacion2); + DataTable dt = dtrefrencias.FiltraParametros($"CveNomReferenciaPadre={item["CveNomReferencia"].ToString().ToEntero()} AND Nivel= {(item["Nivel"].ToString().ToEntero() + 1)} AND Tipo ={tipo}"); + string data_jstree = ""; + if (dt.Rows.Count == 0) + { + data_jstree = "data-jstree='{ \"icon\" : \"fa fa-file icon-state-info \" }'"; + } + tablaarbol.AppendLine(string.Format("{0}
  • ", identacion, data_jstree)); + tablaarbol.AppendLine(""); + tablaarbol.Append(identacion3); + if (item["EsUltimo"].ToString() == "1") + { + tablaarbol.Append(" "); + string campo = item["Campo"].ToString(); + if (tipo < 3) + { + strKeys2.Append(string.Format(" {0}", campo)); + } + else + { + string[] scampos = campo.Split('('); + campo = ""; + if (scampos.Length > 0) + { + campo = scampos[0].Trim(); + } + strKeys3.Append(string.Format(" {0}", campo)); + } + strKeys.Append(string.Format(",'{0}':[]", campo)); + } + tablaarbol.Append(item["Texto"]); + if (item["EsUltimo"].ToString() == "1") { tablaarbol.Append(""); } + tablaarbol.AppendLine(""); + if (dt.Rows.Count > 0) + { + tablaarbol.AppendLine(string.Format("{0}
      ", identacion3)); + foreach (DataRow row in dt.Rows) + { + AddchildtoEnd(ref tablaarbol, row, identacion3, identacion2, tipo); + } + tablaarbol.AppendLine(string.Format("{0}
    ", identacion3)); + } + tablaarbol.AppendLine(string.Format("{0}
  • ", identacion)); + + } + #endregion protected void InicializaDatos() { if (Request["CveConcepto"] != null && !Request["CveConcepto"].ToString().Equals("") && Request["CveConcepto"].ToEntero() > 0) @@ -260,7 +375,7 @@ public partial class Nomina_CatConcepto : ClsPaginas TxtCodigo.Text = ObjNomina.DtResultados.FiltroPrimeroValor("Codigo"); TxtConcepto.Text = ObjNomina.DtResultados.FiltroPrimeroValor("Concepto"); DdlTipo.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("Tipo")); - TxtFormula.Text = ObjNomina.DtResultados.FiltroPrimeroValor("Formula"); + TxtFormulaTotal.Text = ObjNomina.DtResultados.FiltroPrimeroValor("Formula"); if (ObjNomina.DtResultados.FiltroPrimeroValor("EsRetencion").Equals("1")) ChkRetencion.Checked = true; if (ObjNomina.DtResultados.FiltroPrimeroValor("TipoCalculo").Equals("True")) ChkTipoCalculo.Checked = true; DdlConceptoPadre.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("CveConceptoPadre")); @@ -307,4 +422,26 @@ public partial class Nomina_CatConcepto : ClsPaginas Alert("Ocurrio un error al eliminar el concepto de nómina", ModExtensiones.TipoMensaje.MsgError); } } + + protected void LnkActualizarFormula_Click(object sender, EventArgs e) + { + tree_Tables(); + string tipo = "Total"; + if (TabsFormulas.ActiveTab == tabFormulaTotal) + { + tipo = "Total"; + } + if (TabsFormulas.ActiveTab == tabFormulaGravada) + { + tipo = "Gravada"; + } + LtlTituloFormula.Text = $"Actualizar Formula {tipo}"; + RegistraScript("$('#ModalDivFormula').modal()"); + UpModalFormulas.Update(); + } + + protected void BtnUpFormula_Click(object sender, EventArgs e) + { + + } } \ No newline at end of file diff --git a/Nomina/ConceptoNominaB.aspx b/Nomina/ConceptoNominaB.aspx new file mode 100644 index 000000000..16363b350 --- /dev/null +++ b/Nomina/ConceptoNominaB.aspx @@ -0,0 +1,179 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="ConceptoNominaB.aspx.cs" Inherits="Nomina_CatConceptob" %> + + + + + + +   + + + + + + + + + + + +
    + + + + + +
    + +
    +
    +
    +
    Datos del Concepto
    +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + + +
    +
    +
    ESTATUS
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    INFORMACIÓN
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + + +
    + + +
    + +
    + + + + + + <%----%> + + +   + + +
    + + + + +
    + + + + + diff --git a/Nomina/ConceptoNominaB.aspx.cs b/Nomina/ConceptoNominaB.aspx.cs new file mode 100644 index 000000000..8a4a3f293 --- /dev/null +++ b/Nomina/ConceptoNominaB.aspx.cs @@ -0,0 +1,310 @@ +using Extensiones; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class Nomina_CatConceptoB : ClsPaginas +{ + #region "Propiedades" + private DataTable DTCuentas + { + get + { + return (DataTable)ViewState["DTCuentas"]; + } + + set + { + ViewState["DTCuentas"] = value; + } + } + private Boolean EsEditar + { + get + { + return (Boolean)ViewState["EsEditar"]; + } + + set + { + ViewState["EsEditar"] = value; + } + } + private int CveConcepto + { + get + { + return ViewState["CveConcepto"].ToEntero(); + } + + set + { + ViewState["CveConcepto"] = value; + } + } + + #endregion + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + InicializaDatos(); + } + } + + protected void InicializaDatos() + { + if (Request["CveConcepto"] != null && !Request["CveConcepto"].ToString().Equals("") && Request["CveConcepto"].ToEntero() > 0) + { + ViewState["CveConcepto"] = Request["CveConcepto"]; + EsEditar = true; + BtnGuardar.Text = "Guardar cambios"; + BtnEliminar.Visible = true; + ChkTipoCalculo.Checked = false; + } + else + { + ViewState["CveConcepto"] = -1; + EsEditar = false; + } + CargaTipo(); + CargaConceptoPadre(); + CargaConceptoContable(); + + CargaClasificacion(); + CargaTipoGasto(); + CargaCtaContable(); + + CargaDatos(); + } + + protected void CargaTipo() + { + DdlTipo.Items.Insert(0, new ListItem("Seleccione", "-1")); + DdlTipo.Items.Insert(1, new ListItem("Percepciones", "P")); + DdlTipo.Items.Insert(2, new ListItem("Deducciones", "D")); + DdlTipo.Items.Insert(3, new ListItem("Obligaciones", "O")); + DdlTipo.SelectedValueExist("-1"); + } + + protected void CargaConceptoPadre() + { + DdlConceptoPadre.DataSource = get_GlobalDTNomConceptos(UsuarioActual.CveEmpresa); + DdlConceptoPadre.DataBind(); + DdlConceptoPadre.Items.Insert(0, new ListItem("Seleccione", "-1")); + DdlConceptoPadre.SelectedValueExist("-1"); + } + protected void CargaConceptoContable() + { + DdlConceptoContable.DataSource = get_GlobalDTContaConceptosContables(-1); + DdlConceptoContable.DataBind(); + DdlConceptoContable.Items.Insert(0, new ListItem("Seleccione", "-1")); + DdlConceptoContable.SelectedValueExist("-1"); + } + protected void CargaClasificacion() + { + DdlClasificacion.DataSource = get_GlobalDTClasificaciones(UsuarioActual.CveEmpresa); + DdlClasificacion.DataBind(); + DdlClasificacion.Items.Insert(0, new ListItem("Seleccione", "-1")); + DdlClasificacion.SelectedValueExist("-1"); + } + + protected void CargaTipoGasto() + { + DdlTipoGasto.DataSource = get_GlobalDTTiposGastos(UsuarioActual.CveEmpresa); + DdlTipoGasto.DataBind(); + DdlTipoGasto.Items.Insert(0, new ListItem("Seleccione", "-1")); + DdlTipoGasto.SelectedValueExist("-1"); + } + + protected void CargaCtaContable() + { + if(UsuarioActual.Empresa.UsaContabilidad) + { + ClsContPAQi ObjConta = new ClsContPAQi(UsuarioActual.Empresa); + if (ObjConta.GetCuentas(-1, "-1", 1)) + { + DdlCtaContable.DataSource = ObjConta.DtResultados; + DdlCtaContable.DataBind(); + } + + DdlCtaContable.Items.Insert(0, new ListItem("Seleccione", "-1")); + DdlCtaContable.SelectedValueExist("-1"); + } + } + + + protected void BtnGuardar_Click(object sender, EventArgs e) + { + String codigo = TxtCodigo.Text; + String concepto = TxtConcepto.Text; + String tipo = DdlTipo.SelectedValue; + String formula = TxtFormula.Text; + + if (!ValidaFormula(formula).Equals("")) + { + Alert("Fórmula no válida. Favor de ingresar una correcta.", ModExtensiones.TipoMensaje.MsgError); + } + else + { + bool retencion; + if (ChkRetencion.Checked) retencion = true; + else retencion = false; + + bool tipoCalculo; + if (ChkTipoCalculo.Checked) tipoCalculo = true; + else tipoCalculo = false; + + int CveConceptoPadre = DdlConceptoPadre.SelectedValue.ToEntero(); + int CveConceptoContable = DdlConceptoContable.SelectedValue.ToEntero(); + + bool estado; + if (ChkEstado.Checked) estado = true; + else estado = false; + + bool sistema; + if (ChkSistema.Checked) sistema = true; + else sistema = false; + + int CveClasificacion = DdlClasificacion.SelectedValue.ToEntero(); + int CveTipoGasto = DdlTipoGasto.SelectedValue.ToEntero(); + int IdCtaContable = DdlCtaContable.SelectedValue.ToEntero(); + + ClsNominas ObjNomina = new ClsNominas(); + ObjNomina.IniciaTransacSQL(); + + bool TieneError = false; + + if (EsEditar) + { + TieneError = !ObjNomina.UpdateConcepto(codigo, concepto, tipo, formula, sistema, estado, CveConceptoPadre, CveConcepto, retencion, CveClasificacion, IdCtaContable, CveTipoGasto, tipoCalculo, CveConceptoContable); + + if (TieneError) + { + ObjNomina.RollBack(); + } + else + { + ObjNomina.Commit(); + Alert("El concepto de nómina fue actualizado correctamente.", ModExtensiones.TipoMensaje.MsgInformacion, $"document.location.href=\"/Nomina/ConceptoNomina.aspx?CveConcepto={CveConcepto}\""); + } + } + else + { + CveConcepto = ObjNomina.AddConcepto(codigo, concepto, tipo, formula, sistema, estado, CveConceptoPadre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, retencion, CveClasificacion, IdCtaContable, CveTipoGasto, tipoCalculo, CveConceptoContable); + + if (CveConcepto == -1) + { + ObjNomina.RollBack(); + } + else + { + ObjNomina.Commit(); + Alert("El concepto de nómina fue creado correctamente.", ModExtensiones.TipoMensaje.MsgInformacion, $"document.location.href=\"/Nomina/ConceptoNomina.aspx?CveConcepto={CveConcepto}\""); + } + } + + ObjNomina.Dispose(); + CargaDatos(); + } + } + + private string ValidaFormula(string Formula) + { + string retorno = "Error en Fórmula"; + + try + { + FormulaEvaluator.Expression exp; + foreach (DataRow dr in GlobalDTNomConceptosFunciones.Rows) + { + exp = new FormulaEvaluator.Expression(String.Format("{0}:=1", dr["Funcion"])); + exp.Eval(); + } + + exp = new FormulaEvaluator.Expression(Formula); + if (exp.Errors.Count > 0) + { + retorno = exp.Errors[0].Message; + } + Object val = exp.Eval(); + if (exp.Errors.Count == 0) + { + retorno = ""; + } + else + { + retorno = exp.Errors[0].Message; + } + } + catch (Exception e) { + Alert(e.Message,ModExtensiones.TipoMensaje.MsgError); + } + + return retorno; + } + + protected void CargaDatos() + { + if(CveConcepto > 0) + { + ClsNominas ObjNomina = new ClsNominas(); + + if (ObjNomina.GetConceptos(UsuarioActual.CveEmpresa, CveConcepto: CveConcepto) && ObjNomina.DtResultados.Rows.Count > 0) + { + TxtCodigo.Text = ObjNomina.DtResultados.FiltroPrimeroValor("Codigo"); + TxtConcepto.Text = ObjNomina.DtResultados.FiltroPrimeroValor("Concepto"); + DdlTipo.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("Tipo")); + TxtFormula.Text = ObjNomina.DtResultados.FiltroPrimeroValor("Formula"); + if (ObjNomina.DtResultados.FiltroPrimeroValor("EsRetencion").Equals("1")) ChkRetencion.Checked = true; + if (ObjNomina.DtResultados.FiltroPrimeroValor("TipoCalculo").Equals("True")) ChkTipoCalculo.Checked = true; + DdlConceptoPadre.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("CveConceptoPadre")); + DdlConceptoContable.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("CveConceptoContable")); + + if (ObjNomina.DtResultados.FiltroPrimeroValor("Estado").Equals("Activo")) ChkEstado.Checked = true; + if (ObjNomina.DtResultados.FiltroPrimeroValor("Sistema").Equals("Sí")) ChkSistema.Checked = true; + + DdlClasificacion.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("CveClasificacion")); + DdlTipoGasto.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("CveTipoGasto")); + DdlCtaContable.SelectedValueExist(ObjNomina.DtResultados.FiltroPrimeroValor("IdCtaContable")); + } + ObjNomina.Dispose(); + + } else + { + TxtCodigo.Text = ""; + TxtConcepto.Text = ""; + DdlTipo.SelectedValueExist("-1"); + TxtFormula.Text = ""; + ChkRetencion.Checked = false; + DdlConceptoPadre.SelectedValueExist("-1"); + DdlConceptoContable.SelectedValueExist("-1"); + + ChkEstado.Checked = false; + ChkSistema.Checked = false; + + DdlClasificacion.SelectedValueExist("-1"); + DdlTipoGasto.SelectedValueExist("-1"); + DdlCtaContable.SelectedValueExist("-1"); + } + } + + protected void BtnEliminar_Click(object sender, EventArgs e) + { + ClsNominas ObjNomina = new ClsNominas(); + + if (ObjNomina.RemoveConcepto(CveConcepto, UsuarioActual.CveEmpresa)) + { + Response.Redirect("./CatConceptos.aspx"); + } + else + { + Alert("Ocurrio un error al eliminar el concepto de nómina", ModExtensiones.TipoMensaje.MsgError); + } + } +} \ No newline at end of file diff --git a/Nomina/Nomina2.aspx b/Nomina/Nomina2.aspx new file mode 100644 index 000000000..4c9a88951 --- /dev/null +++ b/Nomina/Nomina2.aspx @@ -0,0 +1,221 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Nomina2.aspx.cs" Inherits="Nomina_Nomina2" %> + + + + + + + Nominas + + + + + + + +
  • + Cargar Nomina
  • +
    +
    +
    + + + + + + +
    +
    +
    +
    + +
    + +
    + + +
    + + + +
    + + +
    + + + +
    +
    + + + + + + Recibos +
    +
    +
    +
    +
    +
    + +
    + + + + +
    + +
    + + + +
    + + +
    + + + +
    + + +
    + + + +
    + Fecha Pago: +
    +
    + + + + +
    + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    + + Nomina +
    + +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    + + + + + + + + + + + + Nombre + + + + + + + + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    +
    +
    +
    +
    + +
    + + +
    + + + diff --git a/Nomina/Nomina2.aspx.cs b/Nomina/Nomina2.aspx.cs new file mode 100644 index 000000000..b61965b83 --- /dev/null +++ b/Nomina/Nomina2.aspx.cs @@ -0,0 +1,674 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Extensiones; +using System.Data; +using System.Text; + +public partial class Nomina_Nomina2 : ClsPaginas +{ + #region Propiedades + private DataTable dtPeriodos + { + get + { + if (ViewState["dtPeriodos"] == null) { return null; } + else { return (DataTable)ViewState["dtPeriodos"]; } + } + + set { ViewState["dtPeriodos"] = value; } + } + private DataTable dtConceptos + { + get + { + if (ViewState["dtConceptos"] == null) { return null; } + else { return (DataTable)ViewState["dtConceptos"]; } + } + + set { ViewState["dtConceptos"] = value; } + } + private DataTable dtempleados + { + get + { + if (ViewState["dtempleados"] == null) { return null; } + else { return (DataTable)ViewState["dtempleados"]; } + } + + set { ViewState["dtempleados"] = value; } + } + + protected bool PermisoCancelarEmitido + { + get + { + if (ViewState["PermisoCancelarEmitido"] == null) { return false; } + else { return (bool)ViewState["PermisoCancelarEmitido"]; } + } + + set { ViewState["PermisoCancelarEmitido"] = value; } + } + protected bool PermisoAutorizar + { + get + { + if (ViewState["PermisoAutorizar"] == null) { return false; } + else { return (bool)ViewState["PermisoAutorizar"]; } + } + + set { ViewState["PermisoAutorizar"] = value; } + } + protected bool PermisoEmitir + { + get + { + if (ViewState["PermisoEmitir"] == null) { return false; } + else { return (bool)ViewState["PermisoEmitir"]; } + } + + set { ViewState["PermisoEmitir"] = value; } + } + protected int CvePeriodoSeleccionado + { + get + { + if (ViewState["CvePeriodoSeleccionado"] == null) { return 0; } + else { return ViewState["CvePeriodoSeleccionado"].ToString().ToEntero(); } + } + + set { ViewState["CvePeriodoSeleccionado"] = value; } + } + #endregion + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + cargaEjercicios(); + CargaTiposPeriodo(); + cargaPeriodos(); + //Permisos + if (UsuarioActual.TienePermisoProceso(82)) + { + PermisoAutorizar = true; + } + else + { + PermisoAutorizar = false; + } + if (UsuarioActual.TienePermisoProceso(83)) + { + PermisoEmitir = true; + PermisoCancelarEmitido = true; + } + else + { + PermisoEmitir = false; + PermisoCancelarEmitido = false; + } + } + + } + #region Filtros + private void cargaEjercicios() + { + int EjercicioActual = UsuarioActual.Empresa.EjercicioActual; + DataTable dtejercicio = null; + using (ClsNominas objnom = new ClsNominas()) + { + if (objnom.GetEjercicios(UsuarioActual.CveEmpresa)) + { + dtejercicio = objnom.DtResultados; + } + } + DdlEjercicios.DataSource = dtejercicio; + DdlEjercicios.DataBind(); + if ((dtejercicio != null) && dtejercicio.Rows.Count > 0) + { + if (dtejercicio.COUNT("Ejercicio", string.Format("Ejercicio={0}", EjercicioActual)) == 0) + { + DdlEjercicios.Items.Insert(0, new ListItem(EjercicioActual.ToString(), EjercicioActual.ToString())); + } + if (dtejercicio.COUNT("Ejercicio", string.Format("Ejercicio={0}", (EjercicioActual - 1))) == 0) + { + DdlEjercicios.Items.Insert(1, new ListItem((EjercicioActual - 1).ToString(), (EjercicioActual - 1).ToString())); + } + } + else + { + DdlEjercicios.Items.Add(new ListItem(EjercicioActual.ToString(), EjercicioActual.ToString())); + DdlEjercicios.Items.Add(new ListItem((EjercicioActual - 1).ToString(), (EjercicioActual - 1).ToString())); + + } + if (DdlEjercicios.Items.Count > 0) + { + DdlEjercicios.SelectedIndex = 0; + } + } + private void CargaTiposPeriodo() + { + DdlTipoPeriodo.DataSource = GlobalDTTipoPeriodo.FiltraParametros("Estatus = 'Activo'"); + DdlTipoPeriodo.DataBind(); + DdlTipoPeriodo.Items.Insert(0, new ListItem("Seleccione", "-1")); + if (DdlTipoPeriodo.Items.Count > 0) + { + DdlTipoPeriodo.SelectedIndex = 0; + } + } + private void cargaPeriodos() + { + int tipoPeriodo = DdlTipoPeriodo.SelectedValue.ToEntero(); + int ejercicio = DdlEjercicios.SelectedValue.ToEntero(); + dtPeriodos = null; + if (DdlTipoPeriodo.SelectedValue.ToEntero() > 0) + { + using (ClsNominas objperiodos = new ClsNominas()) + { + if (objperiodos.GetPeriodos(tipoPeriodo, UsuarioActual.CveEmpresa, ejercicio, -1, -1)) + { + dtPeriodos = objperiodos.DtResultados.FiltraParametros("Estatus IN (1,2,3,4,5)"); + } + } + } + DdlPeriodo.DataSource = dtPeriodos; + DdlPeriodo.DataBind(); + DdlPeriodo.Items.Insert(0, new ListItem("Seleccione", "-1")); + muestraPeriodo(); + } + + protected void DdlEjercicios_SelectedIndexChanged(object sender, EventArgs e) + { + cargaPeriodos(); + } + + protected void DdlTipoPeriodo_SelectedIndexChanged(object sender, EventArgs e) + { + cargaPeriodos(); + } + + protected void DdlPeriodo_SelectedIndexChanged(object sender, EventArgs e) + { + muestraPeriodo(); + } + private void muestraPeriodo() + { + int CvePeriodo = DdlPeriodo.SelectedValue.ToEntero(); + LnkConsultar.Visible = (CvePeriodo > 0); + UPFiltros.Update(); + UpDatos.Update(); + } + #endregion + #region Datos + + protected void LnkConsultar_Click(object sender, EventArgs e) + { + bool continuar = false; + int CveProyecto = DdlProyecto.SelectedValue.ToEntero(); + int CveSubProyecto = DdlSubProyecto.SelectedValue.ToEntero(); + int CveTurno = DdlTurno.SelectedValue.ToEntero(); + int CvePeriodo = DdlPeriodo.SelectedValue.ToEntero(); + int CveEmpresa = UsuarioActual.CveEmpresa; + int Agrupador = DdlAgrupador.SelectedValue.ToEntero(); + + CvePeriodoSeleccionado = 0; + dtempleados = null; + dtConceptos = null; + using (ClsNominas objnom = new ClsNominas()) + { + if (objnom.GetNominaEmpleado(CveProyecto, CveSubProyecto, CveTurno, CvePeriodo, CveEmpresa, Agrupador) && objnom.DTSetResultados.Tables.Count > 1) + { + dtempleados = objnom.DTSetResultados.Tables[0]; + dtConceptos = objnom.DTSetResultados.Tables[1]; + CvePeriodoSeleccionado = CvePeriodo; + continuar = true; + } + + } + #region CargaGrid + if (continuar) + { + + string ctipo = "P"; + while (GvNominas.Columns.Count > 3) + { + GvNominas.Columns.RemoveAt(2); + } + + int CurrentColumn = GvNominas.Columns.Count - 1; + foreach (DataRow row in dtConceptos.FiltraParametros("Tipo IN ('P','D','O') AND EsPadre = 1 ").Rows) + { + int CveConcepto = row["CveConcepto"].ToString().ToEntero(); + string Concepto = row["Concepto"].ToString(); + string Tipo = row["Tipo"].ToString(); + + if (Tipo != ctipo) + { + if (ctipo == "P") + { + + BoundField field = new BoundField(); + field.HeaderText = "Percepciones"; + field.DataField = "SumaPercepciones"; + field.DataFormatString = "{0:N2}"; + field.ItemStyle.Width = Unit.Pixel(120); + field.ItemStyle.HorizontalAlign = HorizontalAlign.Right; + field.ItemStyle.BackColor = System.Drawing.Color.LightGray; + GvNominas.Columns.Insert(CurrentColumn++, field); + if (Tipo != "D") + { + field = new BoundField(); + field.HeaderText = "Deducciones"; + field.DataField = "SumaDeducciones"; + field.DataFormatString = "{0:N2}"; + field.ItemStyle.Width = Unit.Pixel(120); + field.ItemStyle.HorizontalAlign = HorizontalAlign.Right; + field.ItemStyle.BackColor = System.Drawing.Color.LightGray; + GvNominas.Columns.Insert(CurrentColumn++, field); + field = new BoundField(); + field.HeaderText = "Total"; + field.DataField = "Total"; + field.DataFormatString = "{0:N2}"; + field.ItemStyle.Width = Unit.Pixel(120); + field.ItemStyle.HorizontalAlign = HorizontalAlign.Right; + field.ItemStyle.BackColor = System.Drawing.Color.LightGray; + GvNominas.Columns.Insert(CurrentColumn++, field); + } + } + else if (ctipo == "D") + { + + BoundField field = new BoundField(); + field.HeaderText = "Deducciones"; + field.DataField = "SumaDeducciones"; + field.DataFormatString = "{0:N2}"; + field.ItemStyle.Width = Unit.Pixel(120); + field.ItemStyle.HorizontalAlign = HorizontalAlign.Right; + field.ItemStyle.BackColor = System.Drawing.Color.LightGray; + GvNominas.Columns.Insert(CurrentColumn++, field); + + field = new BoundField(); + field.HeaderText = "Total"; + field.DataField = "Total"; + field.DataFormatString = "{0:N2}"; + field.ItemStyle.Width = Unit.Pixel(120); + field.ItemStyle.HorizontalAlign = HorizontalAlign.Right; + field.ItemStyle.BackColor = System.Drawing.Color.LightGray; + GvNominas.Columns.Insert(CurrentColumn++, field); + } + ctipo = Tipo; + } + if (dtempleados.SUM(string.Format("[{0}]", CveConcepto)) > 0) + { + BoundField field = new BoundField(); + field.HeaderText = Concepto; + field.DataField = CveConcepto.ToString(); + field.DataFormatString = "{0:N2}"; + field.ItemStyle.Width = Unit.Pixel(80); + GvNominas.Columns.Insert(CurrentColumn++, field); + } + } + + BoundField field2 = new BoundField(); + field2.HeaderText = "Obligaciones"; + field2.DataField = "SumaObligaciones"; + field2.DataFormatString = "{0:N2}"; + field2.ItemStyle.Width = Unit.Pixel(120); + field2.ItemStyle.HorizontalAlign = HorizontalAlign.Right; + field2.ItemStyle.BackColor = System.Drawing.Color.LightGray; + GvNominas.Columns.Insert(CurrentColumn++, field2); + + + GvNominas.DataSource = dtempleados; + GvNominas.DataBind(); + } + else + { + + GvNominas.DataSource = null; + GvNominas.DataBind(); + } + + #endregion + UpDatos.Update(); + } + + + protected void GvNominas_RowDataBound(object sender, GridViewRowEventArgs e) + { + if (e.Row.RowType == DataControlRowType.DataRow) + { + Literal LtlNombre = e.Row.FCLiteral("LtlNombre"); + LinkButton LnkTimbrar = (LinkButton)e.Row.FindControl("LnkTimbrar"); + int cvePersonal = e.Row.DataKey("CvePersonal").ToEntero(); + int CvePeriodo = e.Row.DataKey("CvePeriodo").ToEntero(); + int CveNomina = e.Row.DataKey("CveNomina").ToEntero(); + string SeTimbro = e.Row.DBCampo("SeTimbro").ToString(); + string Nombre = e.Row.DBCampo("Nombre").ToString(); + string Turno = e.Row.DBCampo("Turno").ToString(); + string SubProyecto = e.Row.DBCampo("SubProyecto").ToString(); + LnkTimbrar.Visible = false; + if (cvePersonal > 0) + { + LtlNombre.Text = String.Format("{1}", cvePersonal, Nombre); + if (CveNomina > 0) + { + if (SeTimbro == "False") + { + LnkTimbrar.Visible = true; + e.Row.CssClass = "info"; + + } + else + { + e.Row.CssClass = "success"; + } + + } + } + else + { + LtlNombre.Text = "Total General"; + if (Turno.Length == 0 && SubProyecto.Length > 0) + { + LtlNombre.Text = String.Format("Sub Proyecto: {0}", SubProyecto); + } + else if (Turno.Length > 0) + { + LtlNombre.Text = String.Format("Turno: {0}", SubProyecto); + } + else + { + + e.Row.CssClass = "SubTotales"; + } + e.Row.FindControl("LnkSobreRecibo").Visible = false; + + } + + } + + } + #endregion + #region SobreRecibo + + protected void LnkSobreRecibo_Click(object sender, EventArgs e) + { + } + #endregion + + + + protected void LnkTimbrar_Click(object sender, EventArgs e) + { + + } + + protected void ImgDelete_Click(object sender, EventArgs e) + { + + } + + protected void LnkCancelar_Click(object sender, EventArgs e) + { + + } + + protected void LnkCargarNomina_Click(object sender, EventArgs e) + { + + List Filesgral = TxtArchivoNomina.getfiles().Archivos; + bool continuar = Filesgral.Count > 0; + string stringError = ""; + Archivo fileItem = continuar ? Filesgral[0] : null; + if (continuar) + { + string FileExtension = fileItem.Extencion.ToUpper(); + if (FileExtension == "XLS" | FileExtension == "XLSX" | FileExtension == "CSV") + { + } + else + { + continuar = false; + stringError = "No se inserto un archivo de tipo Excel"; + } + + } + DataTable DTEXcel = new DataTable(); + if (continuar) + { + try + { + using (System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + fileItem.FileUrl)) + { + conn.Open(); + string exceltableName = "Nomina"; + DataTable tables = conn.GetSchema("Tables"); + if (tables.FiltraParametros(string.Format("TABLE_NAME LIKE'%{0}%'", exceltableName)).Rows.Count == 0) + { + continuar = false; + stringError = "El documento no contiene la hoja nomina"; + + } + else + { + + exceltableName = tables.FiltroPrimero(string.Format("TABLE_NAME LIKE'%{0}%'", exceltableName))["TABLE_NAME"].ToString(); + } + if (continuar) + { + using (System.Data.Odbc.OdbcCommand cmd = conn.CreateCommand()) + { + + cmd.CommandType = CommandType.Text; + cmd.CommandText = $"SELECT * FROM [{exceltableName}] WHERE LEN(Codigo)>0 AND Codigo <> 'Codigo'"; + using (System.Data.Odbc.OdbcDataAdapter da = new System.Data.Odbc.OdbcDataAdapter(cmd)) + { + da.Fill(DTEXcel); + + } + } + } + } + + } + catch (Exception ex) + { + + continuar = false; + stringError = "Ocurrio un Error al procesar el excel "; + string.Format(stringError, ex.ToString()).GuardaLog(); + } + } + if (continuar && DTEXcel.Rows.Count == 0) + { + + continuar = false; + stringError = "No se encontraron cambios"; + } + StringBuilder str = new StringBuilder(); + bool rollback = false; + if (continuar) + { + + int CveMoneda = 1; + List lConceptos = new List(); + foreach (DataColumn item in DTEXcel.Columns) + { + if (item.ColumnName.ToEntero() > 0) + { + lConceptos.Add(item.ColumnName.ToEntero()); + } + + } + using (ClsRH objpersonal = new ClsRH()) + { + using (ClsNominas objNomina = new ClsNominas()) + { + foreach (DataRow row in DTEXcel.Rows) + { + string Codigo = row["Codigo"].ToString(); + int CvePersonal = 0; + int CveNomina = 0; + double SubTotal = 0; + double Total = 0; + int CveMetodoPago = 0; + if (Codigo != "-1" && objpersonal.GetPersonal(-1, Codigo, "-1", "-1", "-1", -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, "-1", -1, -1, -1, -1, -1, -1, "-1", "-1", "-1", "-1", UsuarioActual.CveEmpresa) && + objpersonal.DtResultados.Rows.Count == 1) + { + CvePersonal = objpersonal.CvePersonal; + CveMetodoPago = objpersonal.CveMetodoPago; + } + else + { + str.AppendLine(string.Format("No se encontro el codigo {0}
    ", Codigo)); + } + if (CvePersonal > 0) + { + if (objNomina.GetNom_Nominas(-1, CvePersonal, CvePeriodoSeleccionado, -1, UsuarioActual.CveEmpresa)) + { + if (objNomina.DtResultados.Rows.Count > 0) + { + CveNomina = objNomina.CveNomina; + } + else + { + if (objNomina.AddNom_Nominas(-1, 1, CvePersonal, CvePeriodoSeleccionado, SubTotal, 0, 0, Total, CveMoneda, 1, CveMetodoPago, DateTime.Now, "Deducciones nómina", + "", "", "", "", 0, 0, 0, new DateTime(), new DateTime(), new DateTime(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + CveNomina = objNomina.CveNomina; + } + else + { + rollback = true; + } + } + } + else + { + rollback = true; + } + } + if (CveNomina > 0) + { + foreach (int CveConcepto in lConceptos) + { + decimal Importe = 0; + decimal ImporteGravado = 0; + decimal ImporteExento = 0; + Importe = row[CveConcepto.ToString()].ToString().ToDecimal(); + try + { + ImporteExento = row[string.Format("E{0}",CveConcepto)].ToString().ToDecimal(); + } + catch (Exception) { } + ImporteGravado = Importe - ImporteExento; + objNomina.AddUPNom_NominasDetalles(objNomina.CveNomina, CvePeriodoSeleccionado, CvePersonal, CveConcepto, Importe, ImporteGravado, ImporteExento,UsuarioActual.CveUsuario); + + } + } + } + } + } + + } + if (!continuar) + { + Alert(stringError, ModExtensiones.TipoMensaje.MsgAdvertencia); + } + else + { + Alert("La información se a actualizado satisfactoriamente"); + } + } + + protected void LnkFormatoEmpleados_Click(object sender, EventArgs e) + { + + } + + protected void LnkFormato_Click(object sender, EventArgs e) + { + try + { + ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook(); + var libro = wb.AddWorksheet("Nomina"); + int column = 1; + libro.Row(1).Hide(); + + libro.Cell(1, column).Value = "Codigo"; + libro.Cell(2, column).Value = "Codigo"; + column++; + libro.Cell(1, column).Value = "Empleado"; + libro.Cell(2, column).Value = "Empleado"; + libro.Column(column).Width = 35; + foreach (DataRow row in dtConceptos.FiltraParametros("Tipo IN ('P','D','O') AND EsPadre = 1 ").Rows) + { + column++; + string CveConcepto = row["CveConcepto"].ToString(); + string Concepto = row["Concepto"].ToString(); + libro.Cell(1, column).Value = CveConcepto; + libro.Cell(2, column).Value = Concepto; + libro.Column(column).Width = 15; + column++; + CveConcepto = string.Format("E{0}", row["CveConcepto"]); + Concepto = string.Format("Exento {0}", row["Concepto"]); + libro.Cell(1, column).Value = CveConcepto; + libro.Cell(2, column).Value = Concepto; + libro.Column(column).Width = 15; + + } + libro.Row(1).CellsUsed().Style.Font.FontColor = ClosedXML.Excel.XLColor.White; + libro.Row(2).CellsUsed().Style.Font.FontColor = ClosedXML.Excel.XLColor.White; + libro.Row(1).CellsUsed().Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189)); + libro.Row(2).CellsUsed().Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189)); + //libro.Row(1).Cell(13).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(247, 150, 70)); + //libro.Row(1).Cell(14).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(0, 176, 240)); + //libro.Row(1).Cell(15).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(177, 160, 199)); + int Fila = 2; + foreach (DataRow erow in dtempleados.FiltraParametros("CvePersonal>0").Rows) + { + Fila++; + column = 1; + libro.Cell(Fila, column).Value = erow["Codigo"]; + column++; + libro.Cell(Fila, column).Value = erow["Nombre"]; + foreach (DataRow row in dtConceptos.FiltraParametros("Tipo IN ('P','D','O') AND EsPadre = 1 ").Rows) + { + column++; + string Concepto = row["CveConcepto"].ToString(); + libro.Cell(Fila, column).Value = erow[Concepto]; + column++; + Concepto = string.Format("{0}-E", row["CveConcepto"]); + libro.Cell(Fila, column).Value = erow[Concepto]; + + } + } + //libro.Row(2).SetAutoFilter(); + System.IO.Stream fs = new System.IO.MemoryStream(); + wb.SaveAs(fs); + fs.Position = 0; + System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); + using (System.IO.Stream input = fs) + + { + input.CopyTo(memoryStream); + } + memoryStream.Position = 0; + + Response.Clear(); + Response.Buffer = true; + + Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xlsx", "FormatoCargaNominas")); + Response.BinaryWrite(memoryStream.ToArray()); + Response.End(); + } + catch (Exception ex) + { + Alert("Ocurrio un error al generar el Formato de nominas" + ex.ToString()); + } + } +} \ No newline at end of file diff --git a/RH/MiPerfil.aspx.vb b/RH/MiPerfil.aspx.vb index c5faef33b..fcdcb91a7 100644 --- a/RH/MiPerfil.aspx.vb +++ b/RH/MiPerfil.aspx.vb @@ -379,7 +379,6 @@ Partial Class RH_MiPerfil DTConsumos = Nothing CargaEstados(1) CargaSuperioresOrganigrama() - CargaPermisos() CargaPermisosReemplazos() CargaConceptos() CargaDatosPersonal() @@ -388,6 +387,7 @@ Partial Class RH_MiPerfil If clave > 0 Then ViewState("CvePersonal") = clave CargaDatos() + CargaPermisos() LtlTitulo.Text = "Consulta de Personal:" If UsuarioActual.CveRol = 1 Then ImgImprimirExpediente.Visible = True diff --git a/SigAyuda.aspx b/SigAyuda.aspx new file mode 100644 index 000000000..0489be135 --- /dev/null +++ b/SigAyuda.aspx @@ -0,0 +1,687 @@ +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="SigAyuda.aspx.vb" Inherits="Metronic_SigAyuda" %> + + + + + + + + + + Ayuda + + + + + + + + + + <%--
    +
    + +
    +
    +
    --%> + +
    + <%--Titulo--%> +
    +
    +

    Menu Ayuda

    +
    + + <%--
    + +
    --%> +
    +
    + <%-- Ordenes de compra --%> +
    +
    + +
    + <%-- Compras --%> +
    +
    + +
    + + <%-- Bancos --%> +
    +
    +
      +
    • +
      + +
      +
      + +
      +
        +
      • +
        + + + +
        +
        + + + +
        +
        +

        Cancelacion de complementos de pago +

        + +
        +
      • +
      • +
        + + + +
        +
        + + + +
        +
        +

        Manual Cuentas Bancarias +

        + +
        +
      • +
      • +
        + + + +
        +
        + + + +
        +
        +

        Procedimiento de caja chica +

        + +
        +
      • +
      • +
        + + + +
        +
        + + + +
        +
        +

        Procedimiento para actualizar gestor de cobranza +

        + +
        +
      • +
      • +
        + + + +
        +
        + + + +
        +
        +

        Surtir mercancía de contado +

        + +
        +
      • +
      • +
        + + + +
        +
        + + + +
        +
        +

        Uso de cajas chicas y Cortes en Punto de Venta +

        + +
        +
      • + +
      +
      +
      +
    • +
    +
    + <%-- Contabilidad --%> +
    +
    + +
    + <%-- Ventas --%> +
    +
    + +
    + <%-- Recursos Humanos --%> +
    +
    + +
    + <%-- Activos Fijos --%> +
    +
    + +
    + <%-- Inventarios --%> +
    +
    + +
    + + + <%--
    + --%> +
    + + +
    + + + + diff --git a/SigAyuda.aspx.vb b/SigAyuda.aspx.vb new file mode 100644 index 000000000..5172f53a7 --- /dev/null +++ b/SigAyuda.aspx.vb @@ -0,0 +1,32 @@ + +Partial Class Metronic_SigAyuda + Inherits System.Web.UI.Page + + Protected Sub btnDownload_Click(sender As Object, e As EventArgs) + Try + Dim docto As String = TxtDocto.Text.Replace("/", "\") + + Dim path As String = $"{AppDomain.CurrentDomain.BaseDirectory}{docto}" + + + Dim file As New System.IO.FileInfo(path) + Dim mimeType As String = "text/plain" + Try + mimeType = MimeMapping.GetMimeMapping(path) + Catch ex As Exception + End Try + 'Response.Write(path) + Response.Clear() + Response.ClearHeaders() + Response.ClearContent() + Response.AddHeader("Content-Disposition", $"attachment; filename= {Uri.EscapeDataString(file.Name)}") + Response.AddHeader("Content-Length", file.Length.ToString()) + Response.ContentType = mimeType + Response.Flush() + Response.TransmitFile(file.FullName) + Response.End() + Catch ex As Exception + 'GuardaLog($"GenerateFile: {ex.ToString()}") + End Try + End Sub +End Class From fe9a78c54729e49e077b041079ae0228a2a3fc0b Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Wed, 4 Sep 2019 16:35:19 -0700 Subject: [PATCH 53/54] --- .gitignore | 1 + Metronic/descarga.pdf | Bin 0 -> 40422 bytes 2 files changed, 1 insertion(+) create mode 100644 Metronic/descarga.pdf diff --git a/.gitignore b/.gitignore index 80364dde9..a7b361013 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ Log.txt LogMail.txt LogTimbrado.txt [Mm]enu/ +[Mm]anuales/ [Tt]emp/ [Ee]mpresas/ # User-specific files diff --git a/Metronic/descarga.pdf b/Metronic/descarga.pdf new file mode 100644 index 0000000000000000000000000000000000000000..87d1da288419305d3fee6eb3a0c2748dae3456e9 GIT binary patch literal 40422 zcmce-V|b8Ojx~nFsf`}L`BOMDgX+>pKH8cx=0bp-r1A4*r%7?Dy2-PS(69Bu5ENui#{F;%aRA z|Mcu%!&=(gi5R+={xx*`6~KpKm^s~nWTzS zfobKW?ROVOq}ZNm%;>VU^eaQ8<~o^I#y7%00?^W{{Rmx%(`r$K2aBt?K@*4Fi0lnz zUaoT?niJ-C&$0`cVNG;(wxhnu-8^0}BFzeU&G9w+qFx=jokJ4ZqYd?h^f9>aTp7T@ z`#lb$)|fRQ4j%gz96svI#dKNV*Q-UckF@lD@h~N4>)FunB0WIWUaE4nwA(~-SK`oR)c%6&Ck zJRF)GNssPHiJWxS-{QY?8{kQ6b-iNFz1{F&hdcfQ)+G&=@j;EJiA@@5CdT?sN@pM8 zo!>Q7QpfVcwPRMaT+1?~3m&L0#RL`ne z=v?t}jA8FFxz3KAf}r@ zXKKOaUz7|C-0;n1*m%R}C2FUM!LW1V>N;oNAvQ@FW|ZaFeO4ep8nXQ{kzKI>)$F#J zJ&@li48wk*xSSS#cVF`k$rx%3RMLUrnm?NWUGKeO8K$He;`D2cNL^9EE#?V1g_(RS z_Qe|=E6U%M_T8&R#|k+=7SLS5D5J9Y}>Ju4{zB@tQu3phqKF zT4*vgbA}g=JX3Gob15Hn#?E};;OvRh$3xM1P;fK4-f-(W>#qCJI}za!E_H0d^09I= zP}YBNVx!-pu={wHq*=IKHqe54H-?FF?%|#3)k4vC#=8tN;|DTGiS|7?frC@~LcWy@ z4;^r(APjv zgU^u}m<71OnIxvgw@eNkl^1!dbt!n3G%y~4K;8NsM8d)k+-PKGO?Wg9^ty~nBuYjK zKZm*RwOv59Y-mPh~pV zG{RIBWILAy+)B3yLa^5ao6Ge{ti&(13(!*W0khCMHvvWi;jKtttv}rw1Gq4CTz=7& zoevNcTn@UHS@4k$)9~RN(`QUXxlB?HRJ6_+>AZ|j0uS(>v@m@H^zLT z62i3dN{OIyzl8V*m+J*%-fO^~qpZoPoYj#;zIVY{%X4qWvURU77d9R!_Yp3^WUGE0LtXP~CbfG@v2EUPZ|OF_~& zrRqj3JM)jGUaAsj9luiuG0MsP)S{}jH#G-D|C-n9P_j;3MVwk>m*g5V-7$9tfD?d# zM!uZyxOd!D4bt`#4tWw6F{+s1G#_8_zS+uIOj0})?Oe8_)rq@2qbRpz49s@s8|?-o z^H=*3Z#txYx?1?m8h4*lAO~2P~&~X=I^BCXK)(I6vVr#m)uD8*dqI~RNHGf4bCQ~FV%V^wh#z8QG zoU?j7ld4K8bJ};nR>aBp=)qY%2tKln+lXp1>A7QPb9f3Ow$P33CFbic#kW}AMFY37 z42FSBmTsF>*}hS(^naadv8SDCUMvw9Dj_A2wOk#g5Mt{I`F2#ng8NWn+g1V2FZZ+I zwSkYvJ!mqd1emJFH=}{w1J)ri4#W8&hV(1V4YXnB>?

    l~^YICYNG^-)vuHA_70( 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�uRxnsP|I+s1piZ$XdY*Q=N)vZ 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 Date: Wed, 4 Sep 2019 16:46:03 -0700 Subject: [PATCH 54/54] Soposrte autocontabilidad ajustes de inventario en OC y Compras Cambio de pocision div de tipo para econollantas --- Compras/Compras.aspx.vb | 71 +++++++++++++++++-------------- OC/OC.aspx.vb | 9 +++- Ventas/ProductosServicios.aspx | 18 ++++---- Ventas/ProductosServicios.aspx.vb | 11 ++--- 4 files changed, 59 insertions(+), 50 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 987479ce5..47b2f010e 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1126,9 +1126,9 @@ Partial Class Compras_Compras CveCuentaBancaria = 0 End If - If UsuarioActual.TienePermisoProceso(259) Then - DivEsNoDeducible.Visible = True - 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 @@ -4642,6 +4642,18 @@ Partial Class Compras_Compras If Not ErrorAC Then + + 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 + ''EMPIEZA: INSERTA DETALLES DE LA COMPRA Dim indiceTR = 0 Dim Cont As Integer = 0 @@ -4747,7 +4759,7 @@ Partial Class Compras_Compras '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 + If Not AjustarPrePolizaVinculacionOC(ObjOC, ObjEventos, ObjInventario, ObjConta, ObjContaAC) Then ErrorPrepoliza = True End If End If @@ -5218,16 +5230,7 @@ Partial Class Compras_Compras 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 '********************** @@ -6226,31 +6229,31 @@ Partial Class Compras_Compras 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 + 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 - 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 + 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 + 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 - If Not ChkNCInvNC.Checked OrElse Not ListaDocumentos.Count > 0 Then + + If Not ChkNCInvNC.Checked OrElse Not ListaDocumentos.Count > 0 Then 'GASTO If UsuarioActual.CveEmpresa = 119 Then DT = TmpDT @@ -18467,7 +18470,7 @@ Partial Class Compras_Compras #End Region - Private Function AjustarPrePolizaVinculacionOC(ByRef OC As ClsOC, ByRef OCBitacora As ClsOIEventos, ByRef ObjInventarios As ClsInventarios, ByRef ObjConta As ClsContabilidad) As Boolean + Private Function AjustarPrePolizaVinculacionOC(ByRef OC As ClsOC, ByRef OCBitacora As ClsOIEventos, ByRef ObjInventarios As ClsInventarios, ByRef ObjConta As ClsContabilidad, ByRef ObjAC As ClsContPAQi) As Boolean 'VARIABLES Dim CveProveedorSucursal As Integer = -1 @@ -18687,6 +18690,12 @@ Partial Class Compras_Compras Retorno = False End If End If + + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso ObjAC IsNot Nothing Then + If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then + Retorno = False + End If + End If End If End If Next diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 818e6c6d0..3c43ac662 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -2249,7 +2249,7 @@ Partial Class OC Dim ObjConta As New ClsContabilidad(OC.IniciaTransacSQL()) Dim Conta As ClsContPAQi = Nothing - If UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto Then + If (UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto) Or UsuarioActual.Empresa.Funcionalidad(200) = "1" Then Conta = New ClsContPAQi(UsuarioActual.Empresa) Conta.IniciaTransacSQL() End If @@ -2647,6 +2647,13 @@ Partial Class OC End If End If + + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso Conta IsNot Nothing Then + If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=Conta) Then + TieneError = False + End If + End If + End If End If Next diff --git a/Ventas/ProductosServicios.aspx b/Ventas/ProductosServicios.aspx index 06edab7a6..a58e7234a 100644 --- a/Ventas/ProductosServicios.aspx +++ b/Ventas/ProductosServicios.aspx @@ -140,7 +140,7 @@

    -
    +
    @@ -201,7 +201,7 @@
    -
    +
    @@ -210,13 +210,7 @@
    -
    - - - - - -
    +
    @@ -1978,6 +1972,7 @@
    + <%-- FIN MODAL PS ADICIONALES --%> @@ -2154,7 +2149,10 @@ var initcarusel2 = initcarusel; - + function ADSReady() + { + setPoscicion(); + } //TERMINA: ECOMMERCE diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 31ec53798..165888d40 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -216,7 +216,7 @@ Partial Class ProductosyServicios 'DivDatos.Attributes("class") = "col-md-12" DivDdlTipo.Visible = True - DdlTipoPSDes.Attributes.Add("onChange", "CreaDescripcionPS();") + 'DdlTipoPSDes.Attributes.Add("onChange", "CreaDescripcionPS();") End If @@ -235,16 +235,11 @@ Partial Class ProductosyServicios If ddlMetodos.SelectedValue.ToEntero = 5 And Not UsuarioActual.TienePermisoProceso(255) Then ddlMetodos.Enabled = False End If + Dim posiciontipo As String = If(UsuarioActual.Empresa.Funcionalidad(558).ToString = "1", "$('.DIVCLASIFICACIONCONTABLE').after( $('.DIVTIPO') );", "") + LtlScripts.Text = $"" If Not CvePS > 0 Then MuestraPanel(True) - - - - - - - End If End Sub