Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 07-11-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo tengo estas tres funciones en mi implementación: FormatDateISO8601, FormatAmount y la auxiliar RoundAmount.
Dependiendo del dato y de la versión de Facturae que esté haciendo tomo una cantidad de decimales u otra.
Los nodos son siempre texto y cada nodo puede exigir un formato determinado (fecha, maxima longitud, tipo de caracteres, etc.)

Código Delphi [-]
function FormatDateISO8601(const d: TDateTime): string;
begin
  Result := FormatDateTime('yyyy"-"mm"-"dd', d);
end;

function RoundAmount(const d: double; decimales: integer): double;
begin
  Result := RoundTo(d, decimales * (-1));
end;

function FormatAmount(const d: double; decimales: integer): string;
var
  OldDecimalSeparator : char;
begin
  OldDecimalSeparator := DecimalSeparator; // note: not thread-safe
  DecimalSeparator := '.';
  Result := Format('%.' + IntToStr(decimales) + 'f', [RoundAmount(d, decimales)]); // round explicitly, makes sure that RoundAmount and FormatAmount behaves exactly the same
  DecimalSeparator := OldDecimalSeparator;
end;

[...]

  Decimales := 2;
  if (VersionFacturae = '3.2') then
     Decimales := 2
  else
  if (VersionFacturae = '3.2.1') then
     Decimales := 8;

[...]

     // Tipo impositivo. Téngase en cuenta que no siempre son porcentajes. La legislación del impuesto correspondiente permitirá identificar las unidades y dimensiones del tipo impositivo. Hasta ocho decimales.
     Nodo := NodoPadre.AddChild('TaxRate', DOMString);
     Nodo.Text := FormatAmount(TaxRate, Decimales);

[...]

     // Precio de la unidad de bien o servicio servido/prestado, en la moneda indicada en la Cabecera de la Factura. Siempre sin Impuestos. Hasta ocho decimales.
     Nodo := NodoPadre.AddChild('UnitPriceWithoutTax', DOMString);
     if (VersionFacturae = '3.2') then
        Nodo.Text := FormatAmount(UnitPriceWithoutTax, 6);
     if (VersionFacturae = '3.2.1') then
        Nodo.Text := FormatAmount(UnitPriceWithoutTax, 8);
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formato numeros reales Zucra Varios 8 15-05-2012 10:21:01
Formato de numeros negativos oscarac OOP 3 18-04-2011 18:24:23
Formato de Numeros y Fechas jcarteagaf Varios 1 08-11-2007 19:03:45
Numeros con formato en sql santiago14 SQL 6 21-08-2007 21:24:13
Formato numeros jzginez PHP 2 26-12-2005 16:18:56


La franja horaria es GMT +2. Ahora son las 17:42:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi