diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index a37c2505c..6f00aa0c8 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -742,7 +742,7 @@ Namespace Modelos Return Not ErrorPrePolizas End Function - Public Function EmitirFactura(Optional Timbrar As Boolean = True, Optional Transac As SqlClient.SqlTransaction = Nothing, Optional Modulo As String = "Modelos/GuardarVentaM") As MMensajeFactura + Public Function EmitirFactura(Optional Timbrar As Boolean = True, Optional Transac As SqlClient.SqlTransaction = Nothing, Optional Modulo As String = "Modelos/GuardarVentaM", Optional MostrarURL As Boolean = False) As MMensajeFactura Dim Retorno As New MMensajeFactura() If Me.Version = "3.3" AndAlso Not Me.TipoDocto.Contiene("Ped", "PeC") Then @@ -843,51 +843,51 @@ Namespace Modelos End If 'SI ES REFACTURACION - Dim ObjNC As List(Of Object) = Nothing - If ErrorList.Count = 0 Then - If NuevaFactura = 1 AndAlso FacturaDevolucion IsNot Nothing Then + 'Dim ObjNC As List(Of Object) = Nothing + 'If ErrorList.Count = 0 Then + ' If NuevaFactura = 1 AndAlso FacturaDevolucion IsNot Nothing Then - ObjNC = GeneraNC(ObjVentas, ObjConta, ObjInventario, ObjContr, FacturaDevolucion, ObjBancos, ObjEventos) + ' ObjNC = GeneraNC(ObjVentas, ObjConta, ObjInventario, ObjContr, FacturaDevolucion, ObjBancos, ObjEventos) - If ObjNC Is Nothing Then - ErrorList.Add("No se pudo Cancelar la Factura") - End If + ' If ObjNC Is Nothing Then + ' ErrorList.Add("No se pudo Cancelar la Factura") + ' End If - 'Esquema viejo, evitamos que aparezca por surtir - If ErrorList.Count = 0 Then - If Not ObjInventario.ActualizarEsDevolucionVenta(CveVenta, 2) Then - ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") - End If - End If + ' 'Esquema viejo, evitamos que aparezca por surtir + ' If ErrorList.Count = 0 Then + ' If Not ObjInventario.ActualizarEsDevolucionVenta(CveVenta, 2) Then + ' ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") + ' End If + ' End If - End If - End If + ' End If + 'End If 'SI ES amortizacion 3.3 - Dim Obj2 As New List(Of Object) + 'Dim Obj2 As New List(Of Object) - If ErrorList.Count = 0 Then - ' cambiar la condicion para saber si hay seleccionado - If TieneAnticipo AndAlso Me.CveTipoAmortizacionAnticipo = 2 Then + 'If ErrorList.Count = 0 Then + ' ' cambiar la condicion para saber si hay seleccionado + ' If TieneAnticipo AndAlso Me.CveTipoAmortizacionAnticipo = 2 Then - If TieneAnticipo Then - Try - 'DESCOMENTAR - If RegistrarNCAmortizacion(ObjVentas, ObjConta, ObjInventario, ObjContr, FacturaDevolucion, ObjBancos, Nothing, Nothing) Then - Obj2.Add(FacturaDevolucion) - End If - Catch ex As Exception - ErrorList.Add("No se pudo generarse la nota de crédito de amortización") - End Try + ' If TieneAnticipo Then + ' Try + ' 'DESCOMENTAR + ' If RegistrarNCAmortizacion(ObjVentas, ObjConta, ObjInventario, ObjContr, FacturaDevolucion, ObjBancos, Nothing, Nothing) Then + ' Obj2.Add(FacturaDevolucion) + ' End If + ' Catch ex As Exception + ' ErrorList.Add("No se pudo generarse la nota de crédito de amortización") + ' End Try - End If + ' End If - If Obj2 Is Nothing AndAlso Obj2.Count = 0 Then - ErrorList.Add("No se pudo generarse la nota de crédito de amortización") - End If - End If - End If + ' If Obj2 Is Nothing AndAlso Obj2.Count = 0 Then + ' ErrorList.Add("No se pudo generarse la nota de crédito de amortización") + ' End If + ' End If + 'End If 'MARCA PARA NO SURTIR VENTA DE COTNRATO DE CONSIGNACION DE VENTA | [IPP] : PARCHE If ErrorList.Count = 0 Then @@ -1059,15 +1059,15 @@ Namespace Modelos SeTimbro = ObjTimbrado.TimbrarFactura(UsuarioActual, Me, CvePACEspecial:=CvePAC) 'NOTA DE CREDITO - REFACTURADA - CASO ESPECIAL, TIMBRADO E IMPRESION - If Not IsNothing(Obj2) AndAlso Obj2.Count > 0 Then - Dim ofa As Modelos.Factura = CType(Obj2(0), Modelos.Factura) - 'asigna el foliofiscal del ingreso que se acaba de timbrar, cuando es amortización de anticipo con NC - If TieneAnticipo AndAlso CveTipoAmortizacionAnticipo = 2 Then - ofa.Timbre.CFDIRelacionados.UUID.Clear() - ofa.Timbre.CFDIRelacionados.UUID.Add(ObjTimbrado.UUID) - End If - ObjTimbrado.TimbrarFactura(UsuarioActual, ofa) - End If + 'If Not IsNothing(Obj2) AndAlso Obj2.Count > 0 Then + ' Dim ofa As Modelos.Factura = CType(Obj2(0), Modelos.Factura) + ' 'asigna el foliofiscal del ingreso que se acaba de timbrar, cuando es amortización de anticipo con NC + ' If TieneAnticipo AndAlso CveTipoAmortizacionAnticipo = 2 Then + ' ofa.Timbre.CFDIRelacionados.UUID.Clear() + ' ofa.Timbre.CFDIRelacionados.UUID.Add(ObjTimbrado.UUID) + ' End If + ' ObjTimbrado.TimbrarFactura(UsuarioActual, ofa) + 'End If If SeTimbro AndAlso Me.TipoDocto.Contiene("Ing") Then EstatusSMS = EnviarSMSTimbrado(ObjEventos) @@ -1080,12 +1080,12 @@ Namespace Modelos End If 'NOTA DE CREDITO DE REFACTURACION - If RefacturacionGeneroNC Then - If Not IsNothing(ObjNC) AndAlso ObjNC.Count > 0 Then - Dim ofa As Modelos.Factura = CType(ObjNC(0), Modelos.Factura) - SeTimbroNC = ObjTimbrado.TimbrarFactura(UsuarioActual, ofa) - End If - End If + 'If RefacturacionGeneroNC Then + ' If Not IsNothing(ObjNC) AndAlso ObjNC.Count > 0 Then + ' Dim ofa As Modelos.Factura = CType(ObjNC(0), Modelos.Factura) + ' SeTimbroNC = ObjTimbrado.TimbrarFactura(UsuarioActual, ofa) + ' End If + 'End If End If End If End If @@ -1117,8 +1117,12 @@ Namespace Modelos End If 'MENSAJE PRINCIPAL - MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.

", If(Me.TipoDocumento = "Ingresos", "Factura", Me.TipoDocumento), Me.SerieFolio)) + If MostrarURL Then + MensajeAlert.AppendFormat("
La {0}: {1} se generó correctamente.

", If(Me.TipoDocumento = "Ingresos", "Factura", Me.TipoDocumento), Me.SerieFolio, Me.CveVenta) + Else + MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.

", If(Me.TipoDocumento = "Ingresos", "Factura", Me.TipoDocumento), Me.SerieFolio)) + End If ' DESCARGA XML - SI SE TIMBRA MANDA CORREO CON FACTURA If SeTimbro Then @@ -1158,9 +1162,9 @@ Namespace Modelos End If 'ERROR DE NO TIMBRADO NC - If Not IsNothing(ObjNC) AndAlso ObjNC.Count > 0 AndAlso Not SeTimbroNC Then - MensajeAlert.AppendFormat("
La NC #{0} no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir.", CType(ObjNC(0), Modelos.Factura).SerieFolio) - End If + 'If Not IsNothing(ObjNC) AndAlso ObjNC.Count > 0 AndAlso Not SeTimbroNC Then + ' MensajeAlert.AppendFormat("
La NC #{0} no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir.", CType(ObjNC(0), Modelos.Factura).SerieFolio) + 'End If 'NOTIFICACION DE SMS Select Case EstatusSMS @@ -1194,9 +1198,9 @@ Namespace Modelos MensajeAlert.AppendFormat("

Movimiento de Almacén
", Me.Inv_CveMovimiento) End If - If TieneAnticipo AndAlso CveTipoAmortizacionAnticipo = 2 Then - MensajeAlert.AppendFormat("

Se generó una Nota de crédito Folio: {0} amortizando el anticipo
", FacturaDevolucion.Folio) - End If + 'If TieneAnticipo AndAlso CveTipoAmortizacionAnticipo = 2 Then + ' MensajeAlert.AppendFormat("

Se generó una Nota de crédito Folio: {0} amortizando el anticipo
", FacturaDevolucion.Folio) + 'End If If SeTimbro AndAlso CveFacturacionAcarreo > 0 Then MensajeAlert.AppendFormat("
", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1", CveVenta))) @@ -1901,110 +1905,110 @@ Namespace Modelos End Function #Region " GUARDAR - VENTA, PREPOLIZAS, INV, NC , ESTIMACIONES, AC, NOTA DE CRÉDITO " - Private Function RegistrarNCAmortizacion(ObjVentas As ClsVentas, ObjConta As ClsContabilidad, ObjInventario As ClsInventarios, ObjContr As ClsContratos, ByVal factura As Modelos.Factura, ObjBancos As ClsBancos, TmpDTconceptos As DataTable, ByRef ObjEventos As ClsOIEventos) As Boolean - Dim ProcesoCorrecto As Boolean = True + 'Private Function RegistrarNCAmortizacion(ObjVentas As ClsVentas, ObjConta As ClsContabilidad, ObjInventario As ClsInventarios, ObjContr As ClsContratos, ByVal factura As Modelos.Factura, ObjBancos As ClsBancos, TmpDTconceptos As DataTable, ByRef ObjEventos As ClsOIEventos) As Boolean + ' Dim ProcesoCorrecto As Boolean = True - 'Generamos el nuevo folio - Dim ObjFolios As New ClsGralFolios(ObjVentas.IniciaTransacSQL()) + ' 'Generamos el nuevo folio + ' Dim ObjFolios As New ClsGralFolios(ObjVentas.IniciaTransacSQL()) - If ObjFolios.GetFolios(factura.TipoDocto, UsuarioActual.CveEmpresa) Then - Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format(" CveSubProyecto = {0} And Estado = 'Activo'", Me.CveSubProyecto)) - If DT.Rows.Count > 0 Then - factura.Folio = DT.Rows(0)("FActual").ToString.ToEntero - Else - ProcesoCorrecto = False - End If - DT.Dispose() - End If + ' If ObjFolios.GetFolios(factura.TipoDocto, UsuarioActual.CveEmpresa) Then + ' Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format(" CveSubProyecto = {0} And Estado = 'Activo'", Me.CveSubProyecto)) + ' If DT.Rows.Count > 0 Then + ' factura.Folio = DT.Rows(0)("FActual").ToString.ToEntero + ' Else + ' ProcesoCorrecto = False + ' End If + ' DT.Dispose() + ' End If - '** genero los datos de la NC - Dim tmpcon As DataTable = DtDetalle.Clone - tmpcon.Clear() + ' '** genero los datos de la NC + ' Dim tmpcon As DataTable = DtDetalle.Clone + ' tmpcon.Clear() - Dim drpss As DataRow = ClsPaginas.GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:="84111506").FiltroPrimero("SATClavePS = '84111506'") + ' Dim drpss As DataRow = ClsPaginas.GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:="84111506").FiltroPrimero("SATClavePS = '84111506'") - If drpss IsNot Nothing Then - Dim ii As Integer = 1 - Dim CveVentaP As Integer = 0 - For Each gvrt As DataRow In DtAnticipos.Rows - Dim CveSub As Integer = DtDetalle.FiltroPrimeroValor("CveSubProyecto").ToEntero - Dim dr As DataRow = tmpcon.NewRow - Dim Cantidad As Decimal = 1 - Dim PU As Decimal = gvrt("Importe").ToString().ToDecimal() - Dim TotalCalculableImpuestos As Decimal = (Cantidad * (PU)) - dr("CvePS") = drpss("CvePS") - dr("PS") = drpss("PS") - dr("OBS") = drpss("PS") - dr("PU") = PU - dr("Cantidad") = Cantidad - dr("CveUM") = drpss("CveUnidadMedida") - dr("SATClaveProdServ") = "84111506" - dr("SATClaveUM") = "ACT" - dr("Consec") = ii + ' If drpss IsNot Nothing Then + ' Dim ii As Integer = 1 + ' Dim CveVentaP As Integer = 0 + ' For Each gvrt As DataRow In DtAnticipos.Rows + ' Dim CveSub As Integer = DtDetalle.FiltroPrimeroValor("CveSubProyecto").ToEntero + ' Dim dr As DataRow = tmpcon.NewRow + ' Dim Cantidad As Decimal = 1 + ' Dim PU As Decimal = gvrt("Importe").ToString().ToDecimal() + ' Dim TotalCalculableImpuestos As Decimal = (Cantidad * (PU)) + ' dr("CvePS") = drpss("CvePS") + ' dr("PS") = drpss("PS") + ' dr("OBS") = drpss("PS") + ' dr("PU") = PU + ' dr("Cantidad") = Cantidad + ' dr("CveUM") = drpss("CveUnidadMedida") + ' dr("SATClaveProdServ") = "84111506" + ' dr("SATClaveUM") = "ACT" + ' dr("Consec") = ii - If drpss("IVA").ToString = "-1" Then - dr("PorcentajeIVA") = SubProyectoPorcentajeIVA - Else - dr("PorcentajeIVA") = drpss("IVA") - End If + ' If drpss("IVA").ToString = "-1" Then + ' dr("PorcentajeIVA") = SubProyectoPorcentajeIVA + ' Else + ' dr("PorcentajeIVA") = drpss("IVA") + ' End If - dr("IVA") = dr("PorcentajeIVA") - dr("ImporteIVA") = Math.Round(dr("PorcentajeIVA").ToString.ToDecimal * TotalCalculableImpuestos, 2) + ' dr("IVA") = dr("PorcentajeIVA") + ' dr("ImporteIVA") = Math.Round(dr("PorcentajeIVA").ToString.ToDecimal * TotalCalculableImpuestos, 2) - dr("ImporteRetIVA") = Math.Round(Me.Cliente.RetIVA * TotalCalculableImpuestos, 2) - dr("ImporteRetISR") = Math.Round(Me.Cliente.RetIVA * TotalCalculableImpuestos, 2) - dr("PorcentajeRetIVA") = Me.Cliente.RetIVA - dr("PorcentajeRetISR") = Me.Cliente.RetISR - dr("PorcentajeIEPS") = 0 ' DrPS("IEPSPorcentaje") - dr("ImporteIEPS") = 0 'Math.Round(DrPS("IEPSPorcentaje").ToString.ToDecimal * TotalCalculableImpuestos, NumeroDecimales) - dr("IEPS") = dr("ImporteIEPS") - dr("Descuento") = Math.Round(0, 2) - dr("TipoDescuento") = TipoDescuento - dr("Total") = (Cantidad * PU) - dr("CveClasificacion") = drpss("CveClasificacion") - dr("CveSubProyecto") = CveSub - dr("TotalImporte") = Math.Round(Cantidad * PU, 2) - CveVentaP = gvrt("CveVenta").ToString().ToEntero() - tmpcon.Rows.Add(dr) - ii += 1 + ' dr("ImporteRetIVA") = Math.Round(Me.Cliente.RetIVA * TotalCalculableImpuestos, 2) + ' dr("ImporteRetISR") = Math.Round(Me.Cliente.RetIVA * TotalCalculableImpuestos, 2) + ' dr("PorcentajeRetIVA") = Me.Cliente.RetIVA + ' dr("PorcentajeRetISR") = Me.Cliente.RetISR + ' dr("PorcentajeIEPS") = 0 ' DrPS("IEPSPorcentaje") + ' dr("ImporteIEPS") = 0 'Math.Round(DrPS("IEPSPorcentaje").ToString.ToDecimal * TotalCalculableImpuestos, NumeroDecimales) + ' dr("IEPS") = dr("ImporteIEPS") + ' dr("Descuento") = Math.Round(0, 2) + ' dr("TipoDescuento") = TipoDescuento + ' dr("Total") = (Cantidad * PU) + ' dr("CveClasificacion") = drpss("CveClasificacion") + ' dr("CveSubProyecto") = CveSub + ' dr("TotalImporte") = Math.Round(Cantidad * PU, 2) + ' CveVentaP = gvrt("CveVenta").ToString().ToEntero() + ' tmpcon.Rows.Add(dr) + ' ii += 1 - Next + ' Next - '**** impuestos locales + ' '**** impuestos locales - factura.DtDetalle = tmpcon - Dim TotalSubTotal As Decimal = tmpcon.SUM("TotalImporte") - Dim TotalDescuentos As Decimal = tmpcon.SUM("Descuento") + ' factura.DtDetalle = tmpcon + ' Dim TotalSubTotal As Decimal = tmpcon.SUM("TotalImporte") + ' Dim TotalDescuentos As FunctionDecimal = tmpcon.SUM("Descuento") - Dim TotalIVA As Decimal = tmpcon.SUM("ImporteIVA") - Dim TotalIEPS As Decimal = tmpcon.SUM("ImporteIEPS") - Dim TotalRetIVA As Decimal = tmpcon.SUM("ImporteRetIVA") - Dim TotalRetISR As Decimal = tmpcon.SUM("ImporteRetISR") - Dim Total As Decimal = 0 - Dim TotalImpuestosLocales As Decimal = 0 - Total = (TotalSubTotal - TotalDescuentos + TotalIVA + TotalIEPS - TotalRetIVA - TotalRetISR - TotalImpuestosLocales) + ' Dim TotalIVA As Decimal = tmpcon.SUM("ImporteIVA") + ' Dim TotalIEPS As Decimal = tmpcon.SUM("ImporteIEPS") + ' Dim TotalRetIVA As Decimal = tmpcon.SUM("ImporteRetIVA") + ' Dim TotalRetISR As Decimal = tmpcon.SUM("ImporteRetISR") + ' Dim Total As Decimal = 0 + ' Dim TotalImpuestosLocales As Decimal = 0 + ' Total = (TotalSubTotal - TotalDescuentos + TotalIVA + TotalIEPS - TotalRetIVA - TotalRetISR - TotalImpuestosLocales) - factura.SubTotal = TotalSubTotal - factura.Descuento = 0 - factura.IVA = TotalIVA - factura.IEPS = TotalIEPS - factura.RetIVA = TotalRetIVA - factura.RetISR = TotalRetISR - factura.Total = Total - factura.CveVentaPadre = CveVentaP + ' factura.SubTotal = TotalSubTotal + ' factura.Descuento = 0 + ' factura.IVA = TotalIVA + ' factura.IEPS = TotalIEPS + ' factura.RetIVA = TotalRetIVA + ' factura.RetISR = TotalRetISR + ' factura.Total = Total + ' factura.CveVentaPadre = CveVentaP - 'Registramos la venta - GuardarVenta(factura, ObjVentas, ObjConta, ObjInventario, ObjContr, tmpcon, -1, ObjBancos) + ' 'Registramos la venta + ' GuardarVenta(factura, ObjVentas, ObjConta, ObjInventario, ObjContr, tmpcon, -1, ObjBancos) - ''Timbramos - Else - ErrorList.Add("No se encontró un producto para generar la nota de crédito") - End If + ' ''Timbramos + ' Else + ' ErrorList.Add("No se encontró un producto para generar la nota de crédito") + ' End If - Return ProcesoCorrecto - End Function + ' Return ProcesoCorrecto + 'End Private Sub EnviarNotificacionAvance(NumeroContrato As String, DescripcionContrato As String, ContratoTipo As String, Cliente As String, CorreoVendedor As String, Optional MontoMaximo As Double = 0) Dim ObjMail As New ClsSisMail() @@ -3505,6 +3509,39 @@ Namespace Modelos Pago.Referencia = Concepto ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(ventaRef, Pago, ObjFactura.CvePrePoliza, ObjConta) + + If Not ErrorPrepoliza AndAlso ObjFactura.CveTipoAmortizacionAnticipo = 2 AndAlso ObjFactura.EsNCAmortizacion AndAlso ObjFactura.TipoDocto.Contiene("Egs") AndAlso ObjFactura.DtAnticiposAplicados IsNot Nothing Then + + For Each row2 As DataRow In ObjFactura.DtAnticiposAplicados.Rows + If row2("CveConceptoContable").ToString().ToEntero() = 3 Then + CveIEAnticipo = row2("CveIE").ToString().ToEntero() + + importeMovimiento = row2("Importe").ToString().ToDecimal() '- ((row2.FCTextBox("TxtAnticipo" & row2.RowIndex).Text.ToDecimal / row2.DataKey("TotalAnticipo").ToDecimal) * row2.DataKey("IVAAnticipo").ToDecimal) + + Dim ImporteAnticipo As Decimal = importeMovimiento + Dim CveMonedaAnticipo As Integer = row2("CveMoneda").ToString().ToEntero() + + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + + If ObjFactura.CveTipoAmortizacionAnticipo = 2 Then + Dim DescuentosAnticipos As Decimal = row2("Descuentos").ToString().ToDecimal + ImporteAnticipo = ImporteAnticipo / (row2("TotalAnticipo").ToString().ToDecimal - DescuentosAnticipos) * row2("SubTotalAnticipo").ToString().ToDecimal + ImporteAnticipo = ImporteAnticipo.RoundSQL(2) + End If + + Dim Importe11MX As Decimal = ImporteAnticipo + CveSubProyectoContabilizar = CveSubProyectoVenta + + If importeMovimiento <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, Importe11MX, Importe11MX, 11, Referencia, Concepto, CveVenta:=row2("CveVenta").ToString().ToEntero(), CveVentaAmortizacion:=ObjFactura.CveVenta, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEAnticipo, CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then + ErrorPrepoliza = True + Exit For + End If + End If + End If + Next + + End If Next If ObjConta.ValidacionesPrePoliza(ObjFactura.CvePrePoliza, UsuarioActual, Opcion:=5) Then @@ -3517,6 +3554,9 @@ Namespace Modelos ' Dim DtTest = ObjConta.DtResultados 'End If End If + + importeMovimiento = 0 + importeMX = 0 End If If ErrorPrepoliza Then @@ -3667,30 +3707,31 @@ Namespace Modelos ' cuando es amortización de nota de crédito, y es la nc ' cuando es amortización por descuento, y es el ingreso ' cuando es amortización en cero - If (ObjFactura.CveTipoAmortizacionAnticipo = 2 AndAlso ObjFactura.TipoDocto.Contiene("Egs") OrElse - ObjFactura.CveTipoAmortizacionAnticipo = 1 AndAlso ObjFactura.TipoDocto.Contiene("Ing") OrElse - ObjFactura.CveTipoAmortizacionAnticipo = 3) Then - For Each row2 As DataRow In ObjFactura.DtAnticipos.Rows - If row2("CveConceptoContable").ToString().ToEntero = 11 Then - CveIEAnticipo = -1 - importeMovimiento = row2("Importe").ToString().ToDecimal() - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + If (ObjFactura.CveTipoAmortizacionAnticipo = 1 AndAlso ObjFactura.TipoDocto.Contiene("Ing") OrElse ObjFactura.CveTipoAmortizacionAnticipo = 3) Then + If DtAnticipos IsNot Nothing Then + For Each row2 As DataRow In ObjFactura.DtAnticipos.Rows + If row2("CveConceptoContable").ToString().ToEntero = 11 Then + CveIEAnticipo = -1 + importeMovimiento = row2("Importe").ToString().ToDecimal() + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - CveSubProyectoContabilizar = CveSubProyectoVenta + CveSubProyectoContabilizar = CveSubProyectoVenta - If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento * tipoCambio, ConceptoContable, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, - CveVentaAmortizacion:=row2("CveVenta").ToString.ToEntero, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEAnticipo, - ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), - CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - Exit For - Else - ObjFactura.SeGuardoPrePoliza = True + If importeMovimiento <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento * tipoCambio, ConceptoContable, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, + CveVentaAmortizacion:=row2("CveVenta").ToString.ToEntero, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEAnticipo, + ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), + CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + Exit For + Else + ObjFactura.SeGuardoPrePoliza = True + End If End If End If - End If - Next + Next + End If + End If End If @@ -3851,8 +3892,8 @@ Namespace Modelos End If End If Else - If ObjFactura.DtAnticipos IsNot Nothing Then - For Each row2 As DataRow In ObjFactura.DtAnticipos.Rows + If ObjFactura.DtAnticiposAplicados IsNot Nothing Then + For Each row2 As DataRow In ObjFactura.DtAnticiposAplicados.Rows If row2("CveConceptoContable").ToString().ToEntero = 12 Then importeMovimiento = row2("Importe").ToString().ToDecimal() @@ -3874,6 +3915,32 @@ Namespace Modelos End If + 'SI ES PAGO CON DEVOLUCION + If ObjFactura.CveTipoAmortizacionAnticipo = 4 Then + If row2("CveConceptoContable").ToString().ToEntero = 277 Then + + importeMovimiento = row2("Importe").ToString().ToDecimal() + importeMX = importeMovimiento * tipoCambio + sumaAmorticaciones += importeMovimiento + + If importeMovimiento <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento * tipoCambio, 150, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=-1, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveClasificacion:=ObjFactura.DtDetalle.MAX("CveClasificacion").ToEntero(), CveSubProyecto:=ObjFactura.CveSubProyecto, Contabilizable:=Contabilizable) Then + ErrorPrepoliza = True + End If + + If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento * -1, importeMX * -1, 277, Referencia, Concepto, CveVenta:=row2("CveVenta").ToString().ToEntero(), CveVentaAmortizacion:=-1, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento * -1, importeMX * -1, 278, Referencia, Concepto, CveVenta:=row2("CveVenta").ToString().ToEntero(), CveVentaAmortizacion:=-1, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + End If + Else + ErrorPrepoliza = True + End If + End If + + End If + End If + + Next End If If sumaAmorticaciones <> 0 Then @@ -4166,6 +4233,42 @@ Namespace Modelos End If + 'APLICA PAGO SI SELECCIONA IxC + If Not ErrorPrepoliza AndAlso ValorMultiplicador = 1 AndAlso ObjFactura.CveTipoAmortizacionAnticipo = 4 Then + + Dim VentaActual As New ClsPaginas.Venta(ObjFactura, UsuarioActual) + + For Each row2 As DataRow In DtAnticiposAplicados.Rows + + If row2("CveConceptoContable").ToString().ToEntero() = 66 Then + + importeMovimiento = row2("Importe").ToString().ToDecimal + + If importeMovimiento <> 0 Then + + Dim Pago As New ClsPaginas.VentaPago + Pago.Fecha = Now + Pago.FechaDocumentoRelacionado = row2("Fecha").ToString().ToDateTime() + Pago.ImportePagoVenta = importeMovimiento + Pago.ImportePago = importeMovimiento + Pago.CveIE = row2("CveIE").ToString().ToEntero() + Pago.CveMonedaPago = row2("CveMoneda").ToString().ToEntero() + Pago.TCPago = row2("TipoCambioPago").ToString().ToDecimal() + Pago.AplicaTraslado = False + Pago.Referencia = row2("Folio").ToString() + Pago.CveVentaAmortizacion = -1 + Pago.TipoPago = "I" + Pago.CveClientePago = ObjFactura.CveCliente + + ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(VentaActual, Pago, ObjFactura.CvePrePoliza, ObjConta, AplicarConceptoAplicacion:=True) + + End If + + End If + Next + 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()) @@ -6697,7 +6800,7 @@ Namespace Modelos If Not ObjVentas.UpdateEstatusOCRelacionada(ObjFactura.CveVenta, CveEstatusCancelacion, ObjFactura.CveEmpresa) Then ErrorCancelar = True MensajeError = "Ocurrió un error al cancelar la orden de servicio" - else + Else End If End If End If @@ -7601,6 +7704,7 @@ Namespace Modelos Public Property DtDocumentosRelacionados As Data.DataTable Public Property DtNCVinculadas As Data.DataTable Public Property DtAnticipos As Data.DataTable + Public Property DtAnticiposAplicados As Data.DataTable Public Property DtPromociones As Data.DataTable Public Property DtImpuestosLocales As Data.DataTable Public Property DtPagos As Data.DataTable diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 71e5d047e..bebe8fb29 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -2137,7 +2137,7 @@ - + <%--
@@ -2149,7 +2149,7 @@ -
# CantidadMantenimiento Dividir
+ --%>
@@ -2159,27 +2159,36 @@