cancel
Showing results for 
Search instead for 
Did you mean: 

Print Layout - Socio de Negocio Multimoneda

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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

Answers (2)

Answers (2)

Former Member
0 Kudos

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

Former Member
0 Kudos

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