Este artículo se aplica a Microsoft Dynamics NAV para la configuración regional del idioma de Europa oriental (EE).
Síntomas
Suponga que aplica el 2672643 de revisiones en la versión de Europa oriental de Microsoft Dynamics NAV 2009 R2. Se publica una carta anticipada para un pedido de venta que contiene anticipos. En esta situación, cuando envía y factura el pedido de ventas, recibe el siguiente mensaje de error:
Nota
Cant. a envío no puede ser mayor que 0,9. in Sales Line Document Type='Order',Document No.='Number',Line No.='Number'.
Por lo tanto, no puede registrar el pedido de ventas.
Para obtener más información sobre la 2672643 de revisiones, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2672643 mensaje de error "No hay importes de anticipo no contabilizados en el pedido [número]" al registrar el envío parcial de un pedido de venta en la versión de Europa oriental de Microsoft Dynamics NAV 2009 R2
Resolución
Información de revisiones
Una revisión compatible ya está disponible en Microsoft. Sin embargo, solo está pensado para corregir el problema que se describe en este artículo. Aplicarlo solo a los sistemas que experimentan este problema específico. Esta revisión puede recibir pruebas adicionales. Por lo tanto, si no se ve afectado gravemente por este problema, le recomendamos que espere al siguiente Service Pack de Microsoft Dynamics NAV 2009 o a la siguiente versión de Microsoft Dynamics NAV que contenga esta revisión.
Nota En casos especiales, los cargos que se incurren normalmente por las llamadas de soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft Dynamics y productos relacionados determina que una actualización específica resolverá el problema. Se aplicarán los costos habituales de soporte técnico a las consultas y cuestiones de soporte técnico adicionales que no guarden relación con la actualización en cuestión.
Información de instalación
Microsoft proporciona ejemplos de programación solo para ilustración, sin garantía expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad o idoneidad para un propósito determinado. En este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se usan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento determinado. Sin embargo, no modificarán estos ejemplos para proporcionar funcionalidad adicional o construir procedimientos para satisfacer sus requisitos específicos.
Nota Antes de instalar esta revisión, compruebe que todos los usuarios del cliente de NAV de Microsoft Dynamics han cerrado sesión en el sistema. Esto incluye los servicios de Microsoft Dynamics NAV Application Server (NAS). Usted debe ser el único usuario del cliente que ha iniciado sesión al implementar esta revisión.
Para implementar esta revisión, debe tener una licencia de desarrollador.
Le recomendamos que la cuenta de usuario en la ventana Inicios de sesión de Windows o en la ventana Inicios de sesión de base de datos tenga asignado el id. de rol "SUPER". Si no se puede asignar a la cuenta de usuario el id. de rol "SUPER", debe comprobar que la cuenta de usuario tiene los permisos siguientes:
- El permiso Modificar para el objeto que va a cambiar.
- El permiso Execute para el objeto System Object ID 5210 y para el objeto System Object ID 9015.
Nota No es necesario tener derechos sobre los almacenes de datos a menos que tenga que realizar una reparación de datos.
Cambios de código
Nota Pruebe siempre las correcciones de código en un entorno controlado antes de aplicar las correcciones a los equipos de producción.
Para resolver este problema, siga estos pasos:
Cambie el código del Amt prepmt al desencadenador Deduct - OnValidate en la tabla "Línea de ventas" (37) de la siguiente manera:
Código existente... "Prepmt Amt to Deduct", STRSUBSTNO(Text045,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted")); IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN // Delete the following line. TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted"); ...Código de reemplazo
... "Prepmt Amt to Deduct", STRSUBSTNO(Text045,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted")); IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN // Add the following lines. TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted"); GetSalesHeader; IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN BEGIN VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group"); VATPostingSetup.TESTFIELD("Adv. Invoice Correction Type",VATPostingSetup."Adv. Invoice Correction Type"::Percentage); END; // End of the added lines. ...Cambie el código de la función CalcPrepaymentToDeduct en la tabla "Línea de ventas" (37) de la siguiente manera:
Elimine las siguientes variables locales:
PrepmtPct: Decimal; AbsoluteAdvCorrection : Boolean;Cambie el código de la siguiente manera:
Código existente... IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN GetSalesHeader; IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN BEGIN VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group"); // Delete the following lines. AbsoluteAdvCorrection := VATPostingSetup."Adv. Invoice Correction Type" = VATPostingSetup."Adv. Invoice Correction Type"::Absolute; IF AbsoluteAdvCorrection THEN BEGIN PrepmtPct := "Prepayment %"; "Prepayment %" := 100; END; END; IF SalesHeader."Prices Including VAT" THEN "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND( ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * ("Prepayment %" / 100) / (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") * (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") ELSE "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * "Prepayment %" / 100 ,Currency."Amount Rounding Precision"); IF AbsoluteAdvCorrection THEN BEGIN "Prepayment %" := PrepmtPct; IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted"; END; END ELSE "Prepmt Amt to Deduct" := 0 // End of the deleted lines. ...Código de reemplazo
... IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN GetSalesHeader; IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN BEGIN VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group"); // Add the following lines. CASE VATPostingSetup."Adv. Invoice Correction Type" OF VATPostingSetup."Adv. Invoice Correction Type"::Percentage: "Prepmt Amt to Deduct" := ROUND("Qty. to Invoice" / (Quantity - "Quantity Invoiced") * ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted"),Currency."Amount Rounding Precision"); VATPostingSetup."Adv. Invoice Correction Type"::Absolute: BEGIN "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(SalesHeader."Prices Including VAT",100); IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted"; END; VATPostingSetup."Adv. Invoice Correction Type"::"Fully Invoiced": IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted" ELSE "Prepmt Amt to Deduct" := 0; END; END ELSE "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(SalesHeader."Prices Including VAT","Prepayment %"); END ELSE "Prepmt Amt to Deduct" := 0 // End of the added lines. ...
Cree una nueva función PrepmtAmtToDeduct en la tabla "Línea de ventas" (37) de la siguiente manera:
PROCEDURE PrepmtAmtToDeduct@1470002(PricesIncludingVAT@1470000 : Boolean;PrepaymentPct@1470001 : Decimal) : Decimal; VAR VATPct@1470002 : Decimal; BEGIN IF PricesIncludingVAT THEN VATPct := "VAT %" ELSE VATPct := 0; EXIT( ROUND( ROUND( ROUND( ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * (PrepaymentPct / 100) / (1 + (VATPct / 100)),Currency."Amount Rounding Precision") * (1 + (VATPct / 100)),Currency."Amount Rounding Precision")); END;Cambie el código en el desencadenador Prepmt Amt a Deduct - OnValidate en la tabla "Línea de compra" (39) de la siguiente manera:
Código existente... FIELDERROR( "Prepmt Amt to Deduct", STRSUBSTNO(Text039,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted")); IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN // Delete the following line. TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted"); ...Código de reemplazo
... FIELDERROR( "Prepmt Amt to Deduct", STRSUBSTNO(Text039,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted")); IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN // Add the following lines. TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted"); GetPurchHeader; IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN BEGIN VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group"); VATPostingSetup.TESTFIELD("Adv. Invoice Correction Type",VATPostingSetup."Adv. Invoice Correction Type"::Percentage); END; // End of the added lines. ...Cambie el código de la función CalcPrepaymentToDeduct en la tabla "Línea de compra" (39). Para hacerlo, siga estos pasos.
Elimine las siguientes variables locales:
PrepmtPct@ : Decimal; AbsoluteAdvCorrection@ : Boolean;Cambie el código de la siguiente manera:
Código existente... IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN GetPurchHeader; IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN BEGIN VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group"); // Delete the following lines. AbsoluteAdvCorrection := VATPostingSetup."Adv. Invoice Correction Type" = VATPostingSetup."Adv. Invoice Correction Type"::Absolute; IF AbsoluteAdvCorrection THEN BEGIN PrepmtPct := "Prepayment %"; "Prepayment %" := 100; END; END; IF PurchHeader."Prices Including VAT" THEN "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND( ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * ("Prepayment %" / 100) / (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") * (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") ELSE "Prepmt Amt to Deduct" := ROUND( ROUND( ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * "Prepayment %" / 100,Currency."Amount Rounding Precision"); IF AbsoluteAdvCorrection THEN BEGIN "Prepayment %" := PrepmtPct; IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted"; END; END ELSE "Prepmt Amt to Deduct" := 0 // End of the deleted lines. ...Código de reemplazo
... IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN GetPurchHeader; IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN BEGIN VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group"); // Add the following lines. CASE VATPostingSetup."Adv. Invoice Correction Type" OF VATPostingSetup."Adv. Invoice Correction Type"::Percentage: "Prepmt Amt to Deduct" := ROUND("Qty. to Invoice" / (Quantity - "Quantity Invoiced") * ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted"),Currency."Amount Rounding Precision"); VATPostingSetup."Adv. Invoice Correction Type"::Absolute: BEGIN "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(PurchHeader."Prices Including VAT",100); IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted"; END; VATPostingSetup."Adv. Invoice Correction Type"::"Fully Invoiced": IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted" ELSE "Prepmt Amt to Deduct" := 0; END; END ELSE "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(PurchHeader."Prices Including VAT","Prepayment %"); END ELSE "Prepmt Amt to Deduct" := 0 // End of the added lines. ...
Cree una nueva función PrepmtAmtToDeduct en la tabla "Línea de compra" (39) de la siguiente manera:
PROCEDURE PrepmtAmtToDeduct@1470002(PricesIncludingVAT@1470000 : Boolean;PrepaymentPct@1470001 : Decimal) : Decimal; VAR VATPct@1470002 : Decimal; BEGIN IF PricesIncludingVAT THEN VATPct := "VAT %" ELSE VATPct := 0; EXIT( ROUND( ROUND( ROUND( ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") * (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") * (PrepaymentPct / 100) / (1 + (VATPct / 100)),Currency."Amount Rounding Precision") * (1 + (VATPct / 100)),Currency."Amount Rounding Precision")); END;Cambie el código en el desencadenador OnRun en la unidad de código "Sales-Post" (80) de la siguiente manera:
Código existente... ItemJnlRollRndg := FALSE; LineCount := LineCount + 1; Window.UPDATE(2,LineCount); IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN SalesLine."VAT Date" := "VAT Date"; IF SalesLine.Type = SalesLine.Type::"Charge (Item)" THEN BEGIN SalesLine.TESTFIELD(Amount); SalesLine.TESTFIELD("Job No.",''); SalesLine.TESTFIELD("Job Contract Entry No.",0); END; ...Código de reemplazo
... ItemJnlRollRndg := FALSE; LineCount := LineCount + 1; Window.UPDATE(2,LineCount); IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN SalesLine."VAT Date" := "VAT Date"; // Add the following lines. IF Invoice THEN IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN TestPrepmtAmount; // End of the added lines. IF SalesLine.Type = SalesLine.Type::"Charge (Item)" THEN BEGIN SalesLine.TESTFIELD(Amount); SalesLine.TESTFIELD("Job No.",''); SalesLine.TESTFIELD("Job Contract Entry No.",0); END; ...Cree una nueva función TestPrepmtAmount en la unidad de código "Sales-Post" (80) de la siguiente manera:
PROCEDURE TestPrepmtAmount@1470003(); VAR AllowedQtyToShip@1470000 : Decimal; SalesAdvLetterHeader@1470001 : Record 26585; BEGIN WITH SalesLine DO BEGIN IF ("Prepmt. Line Amount" = 0) OR (Quantity = 0) THEN EXIT; SalesAdvLetterHeader.SETRANGE("Order No.","Document No."); IF NOT SalesAdvLetterHeader.ISEMPTY THEN BEGIN AllowedQtyToShip := ROUND( ("Line Amount" - "Prepmt. Line Amount" + "Prepmt. Amt. Inv.") / "Line Amount" * Quantity - "Quantity Invoiced",0.00001); IF "Qty. to Ship" > AllowedQtyToShip THEN FIELDERROR("Qty. to Ship",STRSUBSTNO(Text047,AllowedQtyToShip)); END; END; END;Cambie el código en el desencadenador OnRun en la unidad de código "Purch.-Post" (90) de la siguiente manera:
Código existente... IF GUIALLOWED THEN Window.UPDATE(2,LineCount); IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN PurchLine."VAT Date" := "VAT Date"; IF Invoice THEN TestPrepmtAmount; IF PurchLine.Type = PurchLine.Type::"Charge (Item)" THEN BEGIN PurchLine.TESTFIELD(Amount); PurchLine.TESTFIELD("Job No.",''); END; ...Código de reemplazo
... IF GUIALLOWED THEN Window.UPDATE(2,LineCount); IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN PurchLine."VAT Date" := "VAT Date"; IF Invoice THEN // Add the following line. IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN TestPrepmtAmount; IF PurchLine.Type = PurchLine.Type::"Charge (Item)" THEN BEGIN PurchLine.TESTFIELD(Amount); PurchLine.TESTFIELD("Job No.",''); END; ...Elimine la función TestPrepmtAmount y créela de nuevo en la unidad de código "Sales-Post" (80) de la siguiente manera:
LOCAL PROCEDURE TestPrepmtAmount@55(); VAR AllowedQtyToReceive@1470000 : Decimal; PurchAdvLetterHeader@147001 : Record 26587; BEGIN WITH PurchLine DO BEGIN IF ("Prepmt. Line Amount" = 0) OR (Quantity = 0) THEN EXIT; PurchAdvLetterHeader.SETRANGE("Order No.","Document No."); IF NOT PurchAdvLetterHeader.ISEMPTY THEN BEGIN AllowedQtyToReceive := ROUND( ("Line Amount" - "Prepmt. Line Amount" + "Prepmt. Amt. Inv.") / "Line Amount" * Quantity - "Quantity Invoiced",0.00001); IF "Qty. to Receive" > AllowedQtyToReceive THEN FIELDERROR("Qty. to Receive",STRSUBSTNO(Text047,AllowedQtyToReceive)); END; END; END;Cambie el código de la función TestSalesPrepayment en la unidad de código "Gestión de aprobaciones" (439) de la siguiente manera:
Código existente... SalesLines.SETRANGE("Document Type",SalesHeader."Document Type"); SalesLines.SETRANGE("Document No.",SalesHeader."No."); SalesLines.SETFILTER("Prepmt. Line Amount",'<>%1',0); IF SalesLines.FIND('-') THEN BEGIN REPEAT ...Código de reemplazo
... // Add the following lines. IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN EXIT(IsNotInvoicedSalesAdvLetter(SalesHeader."No.")); // End of the added lines. SalesLines.SETRANGE("Document Type",SalesHeader."Document Type"); SalesLines.SETRANGE("Document No.",SalesHeader."No."); SalesLines.SETFILTER("Prepmt. Line Amount",'<>%1',0); IF SalesLines.FIND('-') THEN BEGIN REPEAT ...Cambie el código de la función TestPurchasePrepayment en la unidad de código "Gestión de aprobaciones" (439) de la siguiente manera:
Código existente... PurchaseLines.SETRANGE("Document Type",PurchaseHeader."Document Type"); PurchaseLines.SETRANGE("Document No.",PurchaseHeader."No."); PurchaseLines.SETFILTER("Prepmt. Line Amount",'<>%1',0); IF PurchaseLines.FIND('-') THEN BEGIN REPEAT ...Código de reemplazo
... // Add the following lines. IF PurchaseHeader."Prepayment Type" = PurchaseHeader."Prepayment Type"::Advance THEN EXIT(IsNotInvoicedPurchAdvLetter(PurchaseHeader."No.")); // End of the added lines. PurchaseLines.SETRANGE("Document Type",PurchaseHeader."Document Type"); PurchaseLines.SETRANGE("Document No.",PurchaseHeader."No."); PurchaseLines.SETFILTER("Prepmt. Line Amount",'<>%1',0); IF PurchaseLines.FIND('-') THEN BEGIN REPEAT ...Cree una nueva función local IsNotInvoicedSalesAdvLetter en la unidad de código "Administración de aprobaciones" (439) de la siguiente manera:
LOCAL PROCEDURE IsNotInvoicedSalesAdvLetter@38(SalesOrderNo@1170000000 : Code[30]) : Boolean; VAR SalesAdvLetterHeader@1001 : Record 26585; SalesAdvLetterLine@1002 : Record 26586; BEGIN WITH SalesAdvLetterHeader DO BEGIN SETRANGE("Order No.",SalesOrderNo); IF FIND('-') THEN REPEAT SalesAdvLetterLine.SETRANGE("Letter No.","No."); IF SalesAdvLetterLine.FIND('-') THEN REPEAT IF SalesAdvLetterLine."Amount Including VAT" <> SalesAdvLetterLine."Amount Invoiced" THEN EXIT(TRUE); UNTIL SalesAdvLetterLine.NEXT = 0; UNTIL NEXT = 0; END; END;Cree una nueva función local IsNotInvoicedPurchAdvLetter en la unidad de código "Administración de aprobaciones" (439) de la siguiente manera:
LOCAL PROCEDURE IsNotInvoicedPurchAdvLetter@39(PurchOrderNo@1170000000 : Code[30]) : Boolean; VAR PurchAdvLetterHeader@1001 : Record 26587; PurchAdvLetterLine@1002 : Record 26588; BEGIN WITH PurchAdvLetterHeader DO BEGIN SETRANGE("Order No.",PurchOrderNo); IF FIND('-') THEN REPEAT PurchAdvLetterLine.SETRANGE("Letter No.","No."); IF PurchAdvLetterLine.FIND('-') THEN REPEAT IF PurchAdvLetterLine."Amount Including VAT" <> PurchAdvLetterLine."Amount Invoiced" THEN EXIT(TRUE); UNTIL PurchAdvLetterLine.NEXT = 0; UNTIL NEXT = 0; END; END;
Requisitos previos
Debe tener la versión de Europa oriental de Microsoft Dynamics NAV 2009 R2 instalada para aplicar esta revisión.
Información sobre la eliminación
No puede quitar esta revisión.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Nota Esto es un artículo "PUBLICACIÓN RÁPIDA" creado directamente desde la organización de soporte técnico de Microsoft. La información contenida se proporciona tal cual en respuesta a nuevos problemas. Como resultado de la rapidez en la publicación, es posible que los materiales incluyan errores tipográficos. Además, se pueden revisar en cualquier momento sin previo aviso. Consulte los Términos de uso para otras consideraciones.