Skip to Content
avatar image
Former Member

Print Layout - Socio de Negocio Multimoneda

Tengo el siguiente problema y no se como pueda hacer tengo varios socios de negocios lo cuales imprimen sus facturas tanto en Soles, Dolares o Euros, quiero decir que un socio de negocio un dia le facturo en soles otro en dolares y otro en euros, para lo que siempre tengo que estar fijando un Layout que ya tengo diseƱado en las tres monedas cuando se le factura en soles le predetermino el Layout con la moneda soles cuando es en dolares tengo que otra vez fijarle el layout en Dolares.

La pregunta es como puedo hacer para que cuando cree el documento factura de un SN ya sea Soles, Dolares o Euros y mande la impresion salga en la descripcion de la moneda tanto en letras ejm:

S/. 1900.10 --> ***Son: Mil Novecientos y 10/100 Nuevos Soles *****

USD 1900.10 --> ***Son: Mil Novecientos y 10/100 Dolares Americanos *****

EUR 1900.10 --> ***Son: Mil Novecientos y 10/100 Euros *****

como el valor de la moneda manejando un solo Print Layout y no estar fijando siempre un layout por moneda

Slds

Jesus

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Best Answer
    avatar image
    Former Member
    Oct 14, 2008 at 04:06 AM

    Yo hice eso de la siguiente manera:

    Pesos = MXP

    Dolares = USD

    Euros = EUR

    Creas un campo en fin de informe que mande buscar:

    Base de Datos

    Factura de Deudores

    Moneda del Documento

    Digamos que el campo es el F_212 lo pones como no visible.

    Despues creas otros 3 campos no visibles que contengan formula:

    Ejemplo:

    Campo F_214 cotiene como formula:

    F_212 == 'MXP'

    Campo F_213 contiene formula:

    F_212 == 'USD'

    Campo F_215 contiene como formula:

    F_212 == 'EUR'

    Despues en Fin de informe vas a tener 3 campo que "si" sean visibles

    Creamos el campo F_215 y le dices que haga enlace a F_214 que seria pesos para mi ..........digamos soles para ti.

    En este campo tambien pondras una formula:

    Concat(F_210, ' ' , 'Pesos', ' ' , F_211, '/100 ', ' ' , 'M.N.', ' ************') (Nota: campo 210 y 211 son DecimalLeft y DecimalRigth)

    Creamos el campo F_216 y le dices que haga enlace a F_213 que seria dolares.

    En un segundo campo visible pondremos ahora dolares:

    Concat(F_210, ' ' , 'Dolares', ' ' , F_211, '/100 ', ' ' , F_212, ' ************') (Nota: campo 210 y 211 son DecimalLeft y DecimalRigth)

    Y ahora en Euros

    Creamos el campo F_216 y le dices que haga enlace a F_215 que seria euros

    Concat(F_210, ' ' , 'Euros', ' ' , F_211, '/100 ', ' ' , F_212, ' ************')

    El enlace que haces manda llamar el campo dependiendo el tipo de moneda que sea.

    El total es la variable 108, el impuesto es variable 106 y el subtotal es la resta de estos.

    Espero haberte ayudado.

    Saludos

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Oct 13, 2008 at 06:32 PM

    Prueba con colocar el campo y eligiendo total en letras, sino agrega el campo de la tabla monedas, el nombre de la moneda.

    usa formulas, se puede.

    Att,

    Manuel Lazcano

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Oct 15, 2008 at 05:04 AM

    Para mostrar montos en Letras, en los layouts de documentos de Marketing utilizo un SP.

    -


    ALTER PROCEDURE [dbo].[sp_Num2Let] @Numero DECIMAL(20,2) , @MND CHAR(3)

    AS

    BEGIN

    SET NOCOUNT ON

    DECLARE @lnEntero INT,

    @lcRetorno VARCHAR(512),

    @lnTerna INT,

    @lcMiles VARCHAR(512),

    @lcCadena VARCHAR(512),

    @lnUnidades INT,

    @lnDecenas INT,

    @lnCentenas INT,

    @lnFraccion INT

    SELECT @lnEntero = CAST(@Numero AS INT),

    @lnFraccion = (@Numero - @lnEntero) * 100,

    @lcRetorno = '',

    @lnTerna = 1

    WHILE @lnEntero > 0

    BEGIN /* WHILE */

    -- Recorro terna por terna

    SELECT @lcCadena = ''

    SELECT @lnUnidades = @lnEntero % 10

    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)

    SELECT @lnDecenas = @lnEntero % 10

    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)

    SELECT @lnCentenas = @lnEntero % 10

    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)

    -- Analizo las unidades

    SELECT @lcCadena =

    CASE /* UNIDADES */

    WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena

    WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena

    WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena

    WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena

    WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena

    WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena

    WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena

    WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena

    WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena

    WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena

    ELSE @lcCadena

    END /* UNIDADES */

    -- Analizo las decenas

    SELECT @lcCadena =

    CASE /* DECENAS */

    WHEN @lnDecenas = 1 THEN

    CASE @lnUnidades

    WHEN 0 THEN 'DIEZ '

    WHEN 1 THEN 'ONCE '

    WHEN 2 THEN 'DOCE '

    WHEN 3 THEN 'TRECE '

    WHEN 4 THEN 'CATORCE '

    WHEN 5 THEN 'QUINCE '

    ELSE 'DIECI' + @lcCadena

    END

    WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena

    WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena

    WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena

    WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena

    WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena

    WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena

    WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena

    WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena

    WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena

    WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena

    WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena

    WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena

    WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena

    WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena

    WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena

    WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena

    ELSE @lcCadena

    END /* DECENAS */

    -- Analizo las centenas

    SELECT @lcCadena =

    CASE /* CENTENAS */

    WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena

    WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena

    WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena

    WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena

    WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena

    WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena

    WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena

    WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena

    WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena

    WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena

    ELSE @lcCadena

    END /* CENTENAS */

    -- Analizo la terna

    SELECT @lcCadena =

    CASE /* TERNA */

    WHEN @lnTerna = 1 THEN @lcCadena

    WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '

    WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND

    @lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '

    WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND

    NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '

    WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '

    ELSE ''

    END /* TERNA */

    -- Armo el retorno terna a terna

    SELECT @lcRetorno = @lcCadena + @lcRetorno

    SELECT @lnTerna = @lnTerna + 1

    END /* WHILE */

    IF @lnTerna = 1

    SELECT @lcRetorno = 'CERO'

    SELECT RTRIM(@lcRetorno)

    + ' CON '

    --+ LTRIM(STR(@lnFraccion,2))

    + CASE WHEN @lnFraccion < 10 THEN '0' + LTRIM(STR(@lnFraccion,2)) ELSE LTRIM(STR(@lnFraccion,2)) END

    + '/100 '

    + (SELECT CURRNAME FROM OCRN WHERE CURRCODE = @MND)

    END

    -


    Richard Molocho

    Add comment
    10|10000 characters needed characters exceeded