on 10-11-2008 3:04 PM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
94 | |
11 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.