Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2017
Galahad Galahad is offline
Miembro
 
Registrado: abr 2007
Posts: 218
Poder: 17
Galahad Va por buen camino
Formato de Números en xml

Buenos días.

Tenemos implementado desde hace tiempo el envio de la Factura electronica en España (FacturaE, versión 3.2.1).
Desde hace un par de semanas,un cliente dice que no le aceptan el envio de una factura . Dicen los informáticos que el prob lema es que algunos totales figuran sin dos decimales, aunque si validamos la factura desde el portal de presentación FACE, no detecta ningún problema de validacón.
Precios como 22.20 o totales como 355.30 aparecen en el fichero como 22.2 o 355.3 .
En la implementación del interfaz de la clase, estos elementos aparecen como de tipo 'Double'. No consigo pasar estos importes con los dos decimales. ¿ Existe alguna manera de configurar los decimales en el xml de manera global ?.
Saludos...
Responder Con Cita
  #2  
Antiguo 06-11-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por Galahad Ver Mensaje
Buenos días.

Tenemos implementado desde hace tiempo el envio de la Factura electronica en España (FacturaE, versión 3.2.1).
Desde hace un par de semanas,un cliente dice que no le aceptan el envio de una factura . Dicen los informáticos que el prob lema es que algunos totales figuran sin dos decimales, aunque si validamos la factura desde el portal de presentación FACE, no detecta ningún problema de validacón.
Precios como 22.20 o totales como 355.30 aparecen en el fichero como 22.2 o 355.3 .
En la implementación del interfaz de la clase, estos elementos aparecen como de tipo 'Double'. No consigo pasar estos importes con los dos decimales. ¿ Existe alguna manera de configurar los decimales en el xml de manera global ?.
Saludos...
En el formato FacturaE en particular, si mal no recuerdo, dependiendo del campo hay que pasar una cantidad de decimales u otra. Por ejemplo los artículos deben de ir con 6 decimales, los importes totales con 2 decimales, etc. Con esto te quiero decir que no creo que haya forma de configurar los decimales de manera global, tendrás que montartelo dependiendo del campo.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 07-11-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 11:21:01
Formato de numeros negativos oscarac OOP 3 18-04-2011 19:24:23
Formato de Numeros y Fechas jcarteagaf Varios 1 08-11-2007 20:03:45
Numeros con formato en sql santiago14 SQL 6 21-08-2007 22:24:13
Formato numeros jzginez PHP 2 26-12-2005 17:18:56


La franja horaria es GMT +2. Ahora son las 01:55:30.


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