diff --git a/App_Code/ClsAcumuladores.vb b/App_Code/ClsAcumuladores.vb index c243c6058..29e08b635 100644 --- a/App_Code/ClsAcumuladores.vb +++ b/App_Code/ClsAcumuladores.vb @@ -758,11 +758,12 @@ Public Class ClsAcumuladores End Try Return Retorno End Function - Public Function GetGarantiasPolizaVirtual(CveVenta As Integer) As Boolean + Public Function GetGarantiasPolizaVirtual(CveVenta As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False SqlDataAdapter("PA_Acum_GarantiasPolizaVirtualGet") With SqlAdapter.SelectCommand.Parameters .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With Try SqlAdapter.Fill(Data) diff --git a/App_Code/ClsClientes.vb b/App_Code/ClsClientes.vb index a268761f6..40d862b7f 100644 --- a/App_Code/ClsClientes.vb +++ b/App_Code/ClsClientes.vb @@ -1554,7 +1554,9 @@ Public Class ClsClientes Return Retorno End Function - Public Function AgregarClienteNoFrecuente(Nombre As String, Direccion As String, NoExt As String, NoInt As String, Colonia As String, Localidad As String, Ciudad As String, Estado As String, Pais As String, RFC As String, CP As String, Telefono As String, Mail As String, CveSubProyecto As Integer, CveUsuario As Integer, CveEmpresa As Integer, NumCuentaPago As String, Optional CvePrecioLista As Integer = -1) As Boolean + Public Function AgregarClienteNoFrecuente(Nombre As String, Direccion As String, NoExt As String, NoInt As String, Colonia As String, Localidad As String, Ciudad As String, Estado As String, + Pais As String, RFC As String, CP As String, Telefono As String, Mail As String, CveSubProyecto As Integer, CveUsuario As Integer, CveEmpresa As Integer, + NumCuentaPago As String, CveMetodoPago33 As Integer, CveFormaPago33 As Integer, Optional CvePrecioLista As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_ClientesNoFrecuenteAdd") @@ -1575,6 +1577,8 @@ Public Class ClsClientes .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveMetodoPago33", SqlDbType.Int).Value = CveMetodoPago33 + .Add("@CveFormaPago33", SqlDbType.Int).Value = CveFormaPago33 .Add("@NumCuentaPago", SqlDbType.VarChar).Value = NumCuentaPago .Add("@CvePrecioLista", SqlDbType.Int).Value = CvePrecioLista @@ -1604,8 +1608,8 @@ Public Class ClsClientes End Try Return Retorno - End Function - + End Function + #Region "UNIFICAR CLIENTES" Public Function UnificarClientes(CveClienteAUnificar As Integer, CveClienteOriginal As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/App_Code/ClsOC.vb b/App_Code/ClsOC.vb index bb62e0c26..95107e716 100644 --- a/App_Code/ClsOC.vb +++ b/App_Code/ClsOC.vb @@ -1267,6 +1267,11 @@ Public Class ClsOC _CveOrdenCompraDetalle = SqlAdapter.SelectCommand.Parameters("@vCveOrdenCompraDetalle").Value.ToString.ToEntero Retorno = True Catch ex As Exception + + If ex.Message.Contains("CK_OC_OrdenesCompraDetalle_RetIVA_Total") Then + Alert("La retención de iva no coincide con su total", TipoMensaje.MsgAdvertencia) + End If + OnError("Ocurrió un error al agregar el detalle de OrdenCompras.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index d5c7b5237..25fb3c073 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -2677,6 +2677,45 @@ Public Class ClsVentas Return OnError End Function + Public Function GetFacturasCanceladasPendientesWS(RFC As String, CveEmpresa As Integer, Optional showalert As Boolean = True) As Boolean + Dim retorno As Boolean = False + Try + + Dim objServicio As Cancelacion.CancelacionSoapClient = New Cancelacion.CancelacionSoapClient() + Dim resp As Cancelacion.StructCancel = objServicio.ObtienePendientes(RFC, "UserTest", "1234567890") + If resp.Estado = 0 Then + Dim XmlPendientes As String = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(resp.Xml)) + Dim theReader As IO.StringReader = New IO.StringReader(XmlPendientes) + Dim theDataSet As DataSet = New DataSet() + theDataSet.ReadXml(theReader) + + If theDataSet.Tables(0).Rows(0)("Uuid").ToString() <> "null" Then + Dim sb = New StringBuilder() + + For Each item As DataRow In theDataSet.Tables(0).Rows + sb.AppendFormat("{0};", item("Uuid").ToString()) + Next + + If GetFacturasCanceladasPendientes(sb.ToString(), CveEmpresa) Then + retorno = True + End If + + Else + If showalert Then + Alert("No se encontraron cancelaciones pendientes", ModExtensiones.TipoMensaje.MsgError) + End If + End If + Else + Alert("Error al obtener cancelaciones pendientes: " & resp.Descripcion, ModExtensiones.TipoMensaje.MsgError) + End If + + Catch ex As Exception + retorno = False + Me.OnError("Error al obtener cancelaciones pendientes: ", ex, "") + End Try + Return retorno + End Function + Public Function UpdateVentaFacturas(CveFactura As Integer, CveVenta As Integer, CveEmpresa As Integer) As Boolean Dim OnError As Boolean = False diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index fea43d93f..6df87817e 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -368,7 +368,7 @@ Namespace Modelos End If Timbre = New CFDITimbre End Sub - Public Sub New(UsuarioActual As Usuario, CveVenta As Integer, CveEmpresa As Integer, Optional DirectorioServidor As String = "") + Public Sub New(UsuarioActual As Usuario, CveVenta As Integer, CveEmpresa As Integer, Optional DirectorioServidor As String = "", Optional EsCancelacion As Boolean = False) Me.UsuarioActual = UsuarioActual Me.CveVenta = CveVenta Me.CveEmpresa = CveEmpresa @@ -393,7 +393,7 @@ Namespace Modelos Me.DtDetalle = ObjVentas.DtResultados.Copy() End If ObjVentas.Dispose() - IniciaValoresVentas() + IniciaValoresVentas(EsCancelacion) If String.IsNullOrEmpty(DirectorioServidor) Then DirectorioServidor = HttpContext.Current.Server.MapPath("/") End If @@ -446,7 +446,7 @@ Namespace Modelos Me.IEPS = 0 Me.CveAlmacenTraspasoOrigen = 0 End Sub - Private Sub IniciaValoresVentas() + Private Sub IniciaValoresVentas(Optional EsCancelacion As Boolean = False) If CveVenta > 0 AndAlso CveEmpresa > 0 Then Me.DtAnticipos = New DataTable() Me.DtAntNCVinculadas = New DataTable() @@ -492,6 +492,10 @@ Namespace Modelos Me.DtNCVinculadas = ObjVentas.DtResultados.Copy() End If + If TipoDocto.Contiene("Ant") AndAlso EsCancelacion Then + EsNCAmortizacion = True + End If + If ObjVentas.GetVentasAntNC(-1, CveVenta, AplicaAmortizacion:=EsNCAmortizacion) Then Me.DtAnticipos = ObjVentas.DtResultados.Copy() End If @@ -2333,7 +2337,7 @@ Namespace Modelos Exit Select End If - If ObjFactura.TipoDocto.Contiene("Ing", "Egs") AndAlso ValorMultiplicador = -1 Then + If ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant") AndAlso ValorMultiplicador = -1 Then For Each row2 As DataRow In ObjFactura.DtAnticipos.Rows If row2("CveConceptoContable").ToString().ToEntero = 11 Then importeMovimiento = row2("Importe").ToString().ToDecimal * ValorMultiplicador '- ((row2.FCTextBox("TxtAnticipo" & row2.RowIndex).Text.ToDecimal / row2.DataKey("TotalAnticipo").ToDecimal) * row2.DataKey("IVAAnticipo").ToDecimal) @@ -2344,7 +2348,10 @@ Namespace Modelos CveSubProyectoContabilizar = CveSubProyectoVenta If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=row2("CveVenta").ToString().ToEntero, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEAnticipo, ImporteMX:=importeMovimiento * tipoCambio, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, + CveVenta:=ObjFactura.CveVenta, CveVentaAmortizacion:=row2("CveVenta").ToString().ToEntero, CveCliente:=ObjFactura.CveCliente, + CveIE:=CveIEAnticipo, ImporteMX:=importeMovimiento * tipoCambio, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, + CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then ErrorPrepoliza = True Exit For Else diff --git a/Bancos/RepProgramarRecursos.aspx.vb b/Bancos/RepProgramarRecursos.aspx.vb index 11c343b68..af93c7aca 100644 --- a/Bancos/RepProgramarRecursos.aspx.vb +++ b/Bancos/RepProgramarRecursos.aspx.vb @@ -81,6 +81,14 @@ Partial Class Bancos_RepProgramarRecursos ViewState("UsuarioProgramo") = value End Set End Property + Private Property CveProveedor As Integer + Get + Return ViewState("CveProveedor").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveProveedor") = value + End Set + End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -91,7 +99,6 @@ Partial Class Bancos_RepProgramarRecursos Orden = "" Opcion = "-1" HdnEmp.Value = UsuarioActual.CveEmpresa.ToString - If (UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1") Then DdlProveedores.setEsWebService(True) DdlProveedores.Attributes.Add("data-metodo", "getproveedores") @@ -303,7 +310,7 @@ Partial Class Bancos_RepProgramarRecursos End Sub Private Sub CargaDatos() - + CveProveedor = DdlProveedores.SelectedValue.ToEntero Dim CveUsuarioProgramo As Integer = DdlUsuarioProgramo.SelectedValue.ToEntero 'UsuarioActual.CveUsuario If Not ChkProgramadas.Checked Then CveUsuarioProgramo = -1 If ChkProgramadas.Checked And DdlUsuarioProgramo.SelectedValue.ToEntero = -1 Then CveUsuarioProgramo = -2 @@ -803,7 +810,8 @@ Partial Class Bancos_RepProgramarRecursos End Sub Private Sub Imprimir(Optional Formato As String = "PDF") - Dim Proveedor = If(DdlProveedores.SelectedValue = "-1", "", $" Proveedor: {DdlProveedores.SelectedText}") + + Dim Proveedor = If(CveProveedor = -1, "", $" Proveedor: {GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros($"CveProveedor = {CveProveedor}").Rows(0)("RazonSocial").ToString}") Dim Clasificacion = If(DdlProveedoresClasificaciones.SelectedValue = "-1", "", $" Clasificación: {DdlProveedoresClasificaciones.SelectedItem.Text}") Dim AplicaNC = If(DdlAplicaNC.SelectedValue = "-1", "", $" Aplica NC: {DdlAplicaNC.SelectedItem.Text}") Dim TipoProv = If(DdlTipoProveedor.SelectedValue = "0", "", $" Tipo Prov.: {DdlTipoProveedor.SelectedItem.Text}") diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 40e4e3811..e79fadb0c 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -907,8 +907,10 @@ - - + + + Deglose 6% + <%----%> <%-- diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index d654889be..8fea41205 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1025,10 +1025,17 @@ Partial Class Compras_Compras Set(value As Double) ViewState("SubTotal2Original") = value End Set - End Property + End Property + Private Property IVAOriginal As Double - Get - Return ViewState("IVAOriginal").ToString.ToDouble + Get + + If ViewState("IVAOriginal") Is Nothing Then + Return 0 + Else + Return ViewState("IVAOriginal").ToString.ToDouble + End If + End Get Set(value As Double) ViewState("IVAOriginal") = value @@ -2087,8 +2094,12 @@ Partial Class Compras_Compras End If DdlRetIVAConcepto.Items.Add(New ListItem("Arrendamiento", "4")) - DdlRetIVAConcepto.Items.Add(New ListItem("Ret IVA Servicios", "5")) - + + If UsuarioActual.Empresa.Funcionalidad(577).ToEntero = 1 Then + DdlRetIVAConcepto.Items.Add(New ListItem("Ret IVA Servicios", "5")) + End If + + End If @@ -2237,15 +2248,15 @@ Partial Class Compras_Compras If UsuarioActual.Empresa.Funcionalidad(577).ToString = "1" Then - 'If UsuarioActual.CveRol = 1 Then - ' Alert("Ok funcionalidad 577") - 'End If - If RetencionIVA = 0 And IVAOriginal > 0 Then For Each dRow As DataRow In TmpDT.Rows If dRow("CveTipoPS").ToString.ToEntero = 1 Then - tdIVA6.Visible = True + + 'comentado para reubicar el boton + 'tdIVA6.Visible = True + + Exit For End If Next @@ -17024,8 +17035,9 @@ Partial Class Compras_Compras If RetencionIVA = 0 And IVAOriginal > 0 Then For Each dRow As DataRow In TmpDT.Rows - If dRow("CveTipoPS").ToString.ToEntero = 1 Then - tdIVA6.Visible = True + If dRow("CveTipoPS").ToString.ToEntero = 1 Then + 'Comnetado para reubicar el boton + 'tdIVA6.Visible = True Exit For End If Next @@ -19305,7 +19317,7 @@ Partial Class Compras_Compras DdlRetIVAConcepto.SelectedValueExist("5") - LblRetIVA.Text = "0.06%" + LblRetIVA.Text = "6.0%" RetencionIVA = TmpDT.SUMD("RetIVA") TxtRetIVA.Text = RetencionIVA.ToString("###,###,###.00") diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index afd814184..4bb00633a 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -1322,7 +1322,7 @@ Partial Class PopUpVerFactura If CveConcepto = 33 Then ConceptoFormato = "ENTRADA MANUAL" 'IMPRESION ESPECIAL SALIDA DE COMPUPROVEEDORES y VSH - If UsuarioActual.CveEmpresa.Contiene(72, 80, 119, 4, 145) Then + If UsuarioActual.CveEmpresa.Contiene(72, 80, 119, 4, 145, 146) Then params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("Concepto", ConceptoFormato)) params.Add(New ReportParameter("Almacen", Almacen)) @@ -1471,7 +1471,7 @@ Partial Class PopUpVerFactura If Archivo.Exists Then 'IMPRESION ESPECIAL SALIDA DE COMPUPROVEEDORES y VSH - If UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 119, 4, 145) Then + If UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 119, 4, 145, 146) Then Dim CiudadSucursal As String = "" Dim DomicilioSucursal As String = "" Dim DomicilioCliente As String = String.Format("{0} #{1}, {2}, Col. {3}, CP: {4}, {5}, {6}", DtMovimientos(0)("SucClienteDireccion").ToString, DtMovimientos(0)("SucClienteNoExt").ToString, DtMovimientos(0)("SucClienteNoInt").ToString, DtMovimientos(0)("SucClienteColonia"), DtMovimientos(0)("SucClienteCP").ToString, DtMovimientos(0)("SucClienteCiudad"), DtMovimientos(0)("SucClientePais").ToString) @@ -1487,7 +1487,7 @@ Partial Class PopUpVerFactura End If - If UsuarioActual.CveEmpresa.Contiene(72, 80) Then + If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then params.Add(New ReportParameter("Fecha", String.Format("{0} {1}", FechaHora.ToDate.ToString("yyyy-MM-dd"), FechaHora.ToDateTime.ToString("HH:mm:ss")))) params.Add(New ReportParameter("SucursalCliente", DtMovimientos(0)("SucCliente").ToString)) diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb index bf1189f9b..9ad938988 100644 --- a/Compras/eFacturas.aspx.vb +++ b/Compras/eFacturas.aspx.vb @@ -2815,6 +2815,9 @@ Partial Class Compras_eFacturas CveProveedor = gvRow.DataKey("CveProveedor").ToEntero Dim ObjCompras As New ClsCompras + + Dim TieneRegistros As Boolean = False + If ObjCompras.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa) Then GvVincularPago.DataSource = ObjCompras.DtResultados @@ -2822,7 +2825,7 @@ Partial Class Compras_eFacturas SerieFolioIE = ObjCompras.DtResultados.Rows(0)("SerieFolio").ToString DivVincularPagoManualmente.Visible = False BtnVincularPago.Visible = True - + TieneRegistros = True Else DivVincularPagoManualmente.Visible = True BtnVincularPago.Visible = False @@ -2835,6 +2838,7 @@ Partial Class Compras_eFacturas + For Each drow As DataRow In ObjCompras.DtResultados.FiltraParametros("CveIE > 0 AND FechaDocumento IS NOT NULL", "", {"FechaDocumento"}).Rows Dim FechaDocumento As Date = drow("FechaDocumento").ToString.ToDate @@ -2873,12 +2877,18 @@ Partial Class Compras_eFacturas TextoDiferenciaImporte = $"  -   IE ${ImporteIES.FormatoNumero}
Diferencia { DiferenciaImportes.FormatoNumero() }
" BtnVincularPago.Visible = False MSGComplemento = MSGComplemento & $" Existe una diferencia mayor a $5.00 ({Math.Abs(DiferenciaImportes)})" + + If TieneRegistros AndAlso UsuarioActual.TienePermisoProceso(286) Then + DivVincularPagoManualmente.Visible = True + End If + Else 'BtnVincularPago.Visible = True 'TextoDiferenciaImporte = "" End If + LblSerieFolioPago.Text = $"{SeriePago}-{FolioPago}" LblImportePago.Text = Monto.ToString("###,###,###.00") 'ImportePago.FormatoNumero LblPagosCantidad.Text = PagosCantidad.ToString @@ -2893,7 +2903,7 @@ Partial Class Compras_eFacturas Else LblMensajeComlementoError.Text = "" DVMensajecomplementoError.Visible = False - + DivVincularPagoManualmente.Visible = False End If diff --git a/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx.vb b/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx.vb index 8a680e4dd..5785656ae 100644 --- a/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx.vb +++ b/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx.vb @@ -84,6 +84,14 @@ Partial Class Conta_RepMovimientosAuxiliaresCatalogo ViewState("TP") = value End Set End Property + Private Property Cuenta As String + Get + Return ViewState("Cuenta").ToString + End Get + Set(value As String) + ViewState("Cuenta") = value + End Set + End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -226,6 +234,7 @@ Partial Class Conta_RepMovimientosAuxiliaresCatalogo Exit Sub End If IdCuenta = DdlCuentas.SelectedValue.ToEntero + Cuenta = DdlCuentas.SelectedItem.ToString Dim ObjConta As New ClsContabilidad If ObjConta.GetMovimientosAuxiliaresCatalogo(IdCuenta, FechaInicio, FechaFin, DdlMoneda.SelectedValue.ToEntero, CveSubProyecto, UsuarioActual.CveEmpresa, TipoReporte) Then DtDatos = ObjConta.DtResultados @@ -463,6 +472,7 @@ Partial Class Conta_RepMovimientosAuxiliaresCatalogo params.Add(New ReportParameter("pFechaFin", FechaFin.ToString("dd/MM/yyyy"))) params.Add(New ReportParameter("pFechaInicio", FechaInicio.ToString("dd/MM/yyyy"))) params.Add(New ReportParameter("CveMoneda", DdlMoneda.SelectedValue)) + params.Add(New ReportParameter("Cuenta", Cuenta)) ImprimirPDF("Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc", DtDatos, params, "MovimientosAuxiliares", Formato) End Sub Protected Sub DdlTipoCuentas_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoCuentas.SelectedIndexChanged diff --git a/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc b/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc index 330f53bdd..2068a25b8 100644 --- a/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc +++ b/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc @@ -1318,7 +1318,7 @@ true DataSet1 - 0.06346cm + 0.06345cm 3cm 20.37044cm + + true + true + + + + + Cuenta: + + + + =Parameters!Cuenta.Value + + + + + + + Cuenta + 0.84375in + 0.25in + 5.42127in + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + Textbox1 + + + #ff1037 + 2pt + 2pt + 2pt + 2pt + + + + @@ -1973,7 +2012,7 @@ =Fields!Cantidad.Value @@ -2041,6 +2080,48 @@ + + + + true + true + + + + + =Fields!Codigo.Value + + + + + + + Codigo + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + @@ -2225,6 +2306,38 @@ + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + @@ -2336,6 +2449,7 @@ + @@ -2355,7 +2469,7 @@ 5.75246cm 0.11468cm 1.07241cm - 20.01064cm + 19.97804cm 26