Files

646 lines
23 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP029
OBJETIVO : Entrada Devoluciones sobre ventas
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : Julio 11, 1994
-------------------------------------------------------------------------------
}
SCHEMA smarmotech
GLOBALS
"cgprgb000.4gl"
DEFINE ultimo INT,
tiempo VARCHAR(4),
container DEC(10,2),
idEntrada INT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
# CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
SELECT a.* INTO p_compania.* FROM companias a
CALL edprrp029()
END MAIN
FUNCTION edprrp029()
DEFINE rventas RECORD
compania SMALLINT,
factura INTEGER,
fecha_factura DATE,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre VARCHAR(30),
monto_bruto DECIMAL(10,2),
monto_desc DECIMAL(10,2),
monto_itbi DECIMAL(10,2),
monto_neto DECIMAL(10,2),
status_t CHAR(1) ,
descripcion VARCHAR(20),
cuenta_no_ventas VARCHAR(10),
cuenta_no_prima VARCHAR(10) ,
cuenta_no_itbis VARCHAR(10),
cuenta_no_Devolucion VARCHAR(10),
cuenta_no_descuento VARCHAR(10),
tasa DEC(10,2)
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM edfmrp029 FROM "edfmrp029"
DISPLAY FORM edfmrp029
LET tipo_papel = 1
LET container = 0
CALL msgrp000(tipo_papel)
INPUT BY NAME ventas,fecha_inicial,
fecha_final,entrada, detalle1,afecta
BEFORE INPUT
LET pventas = ui.combobox.forname("formonly.ventas")
CALL cventas()
AFTER FIELD entrada
SELECT unique ref FROM cgtb00004
WHERE ref = entrada
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
# NEXT FIELD entra
END IF
LET entra1 = entrada
AFTER FIELD fecha_final
IF fecha_final is null THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha_final
END IF
IF fecha_inicial > fecha_final THEN
ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR"
# NEXT FIELD fecha_inicial
END IF
{ LET tiempo=MONTH(fecha_final) USING "&&",fecha_final USING "yy"
SELECT MAX(a.ref[7,9]) INTO ultimo FROM cgtb00004 a
WHERE a.ref[1,5] = 'ED.07' and a.ref[11,14] = tiempo
IF ultimo is null THEN
LET ultimo = 0
END IF
LET ultimo = ultimo + 1
LET entrada='ED.07-',ultimo USING "&&&","/",tiempo}
LET idEntrada = 17;
CALL controlNumericoED(idEntrada,fecha_final, NULL) RETURNING entrada
DISPLAY "entrada: ",entrada
DISPLAY BY NAME entrada
###### Selecionando en rango de fecha de la tabla de periodo para el fecha_final
SELECT UNIQUE a.ref FROM cgtb00004 a where a.ref = entrada
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
# NEXT FIELD fecha_final
END IF
BEFORE FIELD fecha_final
LET fecha_final = today
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF fecha_inicial is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
IF fecha_final is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
IF fecha_final < fecha_inicial THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
EXIT INPUT
END INPUT
# Busca las ventas locales para el rango de fechas especificado
LET selec4 =
"SELECT a.cod_cia, a.num_doc, a.fecha_orig, a.tipo_cliente, ",
"a.sec_cliente, b.nombre,(a.valor_cheque*-1), a.monto_desc, a.valor_efectivo,",
"(a.valor*-1), a.status_t,c.descripcion,d.cuenta_no_ventas,d.cuenta_no_prima,d.cuenta_no_itbis, ",
" d.cuenta_no_devolucion,d.cuenta_no_descuento,f.tasa ",
"FROM cctb00001 a,vetb00004 b,vetb00061 c,vetb00060 d,cgtb00084 f ",
" WHERE a.fecha_orig between ? and ? ",
" and a.tipo_doc = 'NC' ",
" and a.tipo_cliente = b.tipo_cliente ",
" and a.sec_cliente = b.sec_cliente ",
" and a.tipo_cliente = d.tipo_cliente ",
" and c.ventas = d.ventas ",
" and d.tipo_cliente = f.tipo_cliente ",
" and c.ventas = f.ventas ",
" and f.ventas = ? ",
" and f.ano = year(a.fecha_orig) ",
" and f.mes = month(a.fecha_orig) ",
" and a.status_t IS NULL ",
" ORDER BY c.descripcion,a.num_doc "
PREPARE ventas_locales FROM selec4
DECLARE facturas CURSOR FOR ventas_locales
OPEN facturas USING fecha_inicial, fecha_final,ventas
LET idx = 1
FOREACH facturas INTO rventas.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF idx = 1 THEN
CALL configureoutput("SVG") RETURNING handler
START REPORT prn_credito TO XML HANDLER HANDLER
END IF
IF rventas.status_t = "E" or rventas.status_t = "D" THEN
LET rventas.monto_bruto = 0
LET rventas.monto_desc = 0
LET rventas.monto_itbi = 0
LET rventas.monto_neto = 0
END IF
{IF rventas.monto_bruto < 0 THEN
LET rventas.monto_bruto = rventas.monto_bruto * -1
END IF
IF rventas.monto_desc < 0 THEN
LET rventas.monto_desc = rventas.monto_desc * -1
END IF
IF rventas.monto_itbi < 0 THEN
LET rventas.monto_itbi = rventas.monto_itbi * -1
END IF }
LET idx = idx + 1
OUTPUT TO REPORT prn_credito(rventas.*)
END FOREACH
IF idx > 1 THEN
FINISH REPORT prn_credito
ELSE
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESTAS CONDICIONES","INFO")
END IF
{ IF fgl_report_loadCurrentSettings("formato_entrada.4rp") THEN -- load the .4rp file
CALL fgl_report_selectDevice("SVG") -- changing default
CALL fgl_report_selectPreview(1)
LET handler = fgl_report_commitCurrentSettings()
START REPORT prn_credito TO XML HANDLER HANDLER
ELSE
CALL fgl_winmessage("ERROR","NO SE ENCONTRO TEMPLATE","INFO")
END IF
}
DECLARE entrada CURSOR FOR ventas_locales
OPEN entrada USING fecha_inicial, fecha_final,ventas
LET idx = 1
FOREACH entrada INTO rventas.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF idx = 1 THEN
CALL configureoutput("SVG") RETURNING HANDLER
START REPORT ed29 TO XML HANDLER HANDLER
END IF
IF rventas.status_t = "E" or rventas.status_t = "D" THEN
LET rventas.monto_bruto = 0
LET rventas.monto_desc = 0
LET rventas.monto_itbi = 0
LET rventas.monto_neto = 0
END IF
{IF rventas.monto_bruto < 0 THEN
LET rventas.monto_bruto = rventas.monto_bruto * -1
END IF
IF rventas.monto_desc < 0 THEN
LET rventas.monto_desc = rventas.monto_desc * -1
END IF
IF rventas.monto_itbi < 0 THEN
LET rventas.monto_itbi = rventas.monto_itbi * -1
END IF }
LET idx = idx + 1
OUTPUT TO REPORT ed29(rventas.*)
END FOREACH
IF idx > 1 THEN
FINISH REPORT ed29
END IF
END FUNCTION
REPORT prn_credito(x)
DEFINE x RECORD
compania SMALLINT,
factura INTEGER,
fecha_factura DATE,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre VARCHAR(30),
monto_bruto DECIMAL(10,2),
monto_desc DECIMAL(10,2),
monto_itbi DECIMAL(10,2),
monto_neto DECIMAL(10,2),
status_t CHAR(1),
descripcion VARCHAR(20),
cuenta_no_ventas VARCHAR(10),
cuenta_no_prima VARCHAR(10) ,
cuenta_no_itbis VARCHAR(10),
cuenta_no_Devolucion VARCHAR(10),
cuenta_no_descuento VARCHAR(10),
tasa DEC(10,2)
END RECORD,
p_neto,p_itbi DEC(12,2)
DEFINE hora CHAR(5)
OUTPUT
PAGE LENGTH 100
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.descripcion
FORMAT
PAGE HEADER
LET hora = time
PRINT COLUMN 1, "edprrp029",
COLUMN 43, p_compania.nombre,
COLUMN 126, "Pag.",
COLUMN 131, pageno using "###"
PRINT COLUMN 51, " Sistema de Ventas ",
COLUMN 124, today using "dd/mm/yyyy"
PRINT COLUMN 51, "Valorizacion Notas De Creditos",
COLUMN 129, hora
PRINT COLUMN 53, "Del ", fecha_inicial using "dd/mm/yyyy",
" Al ", fecha_final using "dd/mm/yyyy"
SKIP 1 LINES
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"----------------------------------"
PRINT COLUMN 1, "Documen",
COLUMN 11, "Fecha",
COLUMN 20, "C l i e n t e",
COLUMN 66, "Monto RD$",
COLUMN 81, "Descuento",
COLUMN 97, "Neto RD$",
COLUMN 115, "Itbis",
COLUMN 129, "Valor "
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"----------------------------------"
# , negrillas_off
BEFORE GROUP OF x.descripcion
PRINT x.descripcion
SKIP 1 LINE
ON EVERY ROW
LET nom_cli = NULL
IF x.status_t IS NULL THEN
SELECT a.nombre INTO nom_cli FROM vetb00004 a
WHERE a.tipo_cliente = x.tipo_cliente and
a.sec_cliente = x.sec_cliente and
a.status_t is NULL
IF nom_cli IS NULL THEN
LET nom_cli = "Cliente no existe. Verifique"
END IF
ELSE
LET nom_cli = "NULA"
END IF
PRINT
COLUMN 1, x.factura using "######",
COLUMN 9, x.fecha_factura using "dd/mm/yy",
COLUMN 20, x.tipo_cliente using "&&","-",
x.sec_cliente using "&&&&&&"," ", x.nombre,
COLUMN 60, x.monto_bruto using "####,###,###.##",
COLUMN 71, x.monto_desc using "####,###,###.##",
COLUMN 82, x.monto_bruto - x.monto_desc
using "####,###,###.##",
COLUMN 93, x.monto_itbi using "####,###,###.##",
COLUMN 104, x.monto_bruto - x.monto_desc +
x.monto_itbi using "####,###,###.##"
AFTER GROUP OF x.descripcion
SKIP 1 LINE
PRINT
# COLUMN 1, negrillas_on,
COLUMN 28, "Total ",x.descripcion," ---> ",
COLUMN 60, GROUP SUM(x.monto_bruto) using "####,###,###.##",
COLUMN 71, GROUP SUM(x.monto_desc) using "####,###,###.##",
COLUMN 82, GROUP SUM(x.monto_bruto - x.monto_desc)
using "####,###,###.##",
COLUMN 93, GROUP SUM(x.monto_itbi) using "####,###,###.##",
COLUMN 104, GROUP SUM(x.monto_bruto - x.monto_desc +
x.monto_itbi) using "####,###,###.##"
#
ON LAST ROW
SKIP 1 LINE
LET p_neto = SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)
LET p_itbi = SUM(x.monto_itbi)
PRINT
COLUMN 28, "Total General ---> ",
COLUMN 60, SUM(x.monto_bruto) using "####,###,###.##",
COLUMN 71, SUM(x.monto_desc) using "####,###,###.##",
COLUMN 82, SUM(x.monto_bruto - x.monto_desc)
using "####,###,###.##",
COLUMN 93, SUM(x.monto_itbi) using "####,###,###.##",
COLUMN 104, SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)
using "####,###,###.##"
IF x.tasa > 1 THEN
PRINT
COLUMN 28, "Total General ",x.tasa USING "###.##",
COLUMN 60, SUM(x.monto_bruto*x.tasa) using "####,###,###.##",
COLUMN 71, SUM(x.monto_desc*x.tasa) using "####,###,###.##",
COLUMN 82, SUM(x.monto_bruto - x.monto_desc) *x.tasa
using "####,###,###.##",
COLUMN 93, SUM(x.monto_itbi)*x.tasa using "####,###,###.##",
COLUMN 104, SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) *x.tasa
using "####,###,###.##"
END IF
END REPORT
REPORT ed29(x)
DEFINE x RECORD
compania SMALLINT,
factura INTEGER,
fecha_factura DATE,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre VARCHAR(30),
monto_bruto DECIMAL(10,2),
monto_desc DECIMAL(10,2),
monto_itbi DECIMAL(10,2),
monto_neto DECIMAL(10,2),
status_t CHAR(1) ,
descripcion VARCHAR(20),
cuenta_no_ventas VARCHAR(10),
cuenta_no_prima VARCHAR(10) ,
cuenta_no_itbis VARCHAR(10),
cuenta_no_Devolucion VARCHAR(10),
cuenta_no_descuento VARCHAR(10),
tasa DEC(10,2)
END RECORD,
tdebito,tcredito,bruto,prima,descuento,itbis,neto DEC(12,2),
descripcion_ventas,descripcion_prima,descripcion_itbis,descripcion_devolucion,descripcion_descuento
VARCHAR(40)
OUTPUT
PAGE LENGTH 100
FORMAT
PAGE HEADER
PRINT COLUMN 1, "edprrp029",
COLUMN 33, p_compania.nombre,
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 35, "Sistema de Contabilidad",
COLUMN 75, today using "dd/mm/yy"
PRINT COLUMN 29, "Entrada Devoluciones Sobre Ventas ",
COLUMN 75, time
PRINT COLUMN 34, "Del ",fecha_inicial USING "dd/mm/yyyy",
" Al ",fecha_final USING "dd/mm/yyyy"
# , negrillas_off
SKIP 1 LINE
PRINT COLUMN 01,"Entrada de Diario No.",entrada
SKIP 1 LINE
PRINT COLUMN 1,"Observaciones: REGISTRO DEVOLUCIONES ",x.descripcion
SKIP 1 LINE
PRINT COLUMN 1," _____________________________________"
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------"
PRINT COLUMN 2, "Cuenta ",
COLUMN 11, "Dpto",
COLUMN 18, "Concepto",
COLUMN 66, "Debe",
COLUMN 81, "Haber"
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------"
ON LAST ROW
LET bruto = SUM(x.monto_bruto)*x.tasa
LET descuento =SUM(x.monto_desc)*x.tasa
LET itbis = SUM(x.monto_itbi)*x.tasa
LET neto = SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)
LET tdebito=SUM(x.monto_bruto)*x.tasa+SUM(x.monto_itbi)*x.tasa
LET descripcion_prima = NULL
IF x.cuenta_no_prima IS NOT NULL THEN
SELECT a.descripcion INTO descripcion_prima FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no_prima
LET prima = SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)*(x.tasa-1)
LET tcredito = SUM(x.monto_desc*x.tasa)+SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)+
prima
ELSE
LET tcredito = SUM(x.monto_desc)+SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)
END IF
SELECT a.descripcion INTO descripcion_Devolucion FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no_Devolucion
SELECT a.descripcion INTO descripcion_ventas FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no_ventas
SELECT a.descripcion INTO descripcion_itbis FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no_itbis
SELECT a.descripcion INTO descripcion_Descuento FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no_descuento
PRINT COLUMN 2, x.cuenta_no_Devolucion,"4101"," ",descripcion_devolucion,
COLUMN 60, SUM(x.monto_bruto)*x.tasa USING "###,###,###.##"
PRINT COLUMN 2, x.cuenta_no_itbis,"4101"," ",descripcion_itbis,
COLUMN 60, SUM(x.monto_itbi)*x.tasa USING "###,###,###.##"
PRINT COLUMN 2, x.cuenta_no_descuento,"4101"," ",descripcion_descuento,
COLUMN 75, SUM(x.monto_desc*x.tasa) USING "###,###,###.##"
PRINT COLUMN 2, x.cuenta_no_ventas,"4101"," ",descripcion_ventas,
COLUMN 75, SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) USING "###,###,###.##"
IF x.cuenta_no_prima IS NOT NULL THEN
PRINT COLUMN 2, x.cuenta_no_prima,"4101"," ",descripcion_prima,
COLUMN 75, prima USING "###,###,###.##"
END IF
SKIP 1 LINE
PRINT COLUMN 62,"============",
COLUMN 77,"============"
PRINT COLUMN 60, tdebito USING "###,###,###.##",
COLUMN 75, tcredito USING "###,###,###.##"
SKIP 3 LINES
PRINT COLUMN 1, detalle1
IF afecta = "SI" THEN
BEGIN WORK
CALL controlNumericoED(idEntrada,fecha_final, usuarios) RETURNING entrada
DISPLAY "entrada real: ",entrada
DISPLAY BY NAME entrada
INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc,
cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t,
us_crea, fech_crea, us_mod, fech_mod)
VALUES(fecha_final,1,entrada,x.cuenta_no_Devolucion,4101,
null,null,null,null,
detalle1,null,bruto,0,null,usuarios,getdate(),null,null)
INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc,
cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t,
us_crea, fech_crea, us_mod, fech_mod)
VALUES(fecha_final,1,entrada,x.cuenta_no_itbis,4101,
null,null,null,null,
detalle1,null,itbis,0,null,usuarios,getdate(),null,null)
INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc,
cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t,
us_crea, fech_crea, us_mod, fech_mod)
VALUES(fecha_final,1,entrada,x.cuenta_no_descuento,null,
null,null,null,null,
detalle1,null,0,descuento,null,usuarios,getdate(),null,null)
INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc,
cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t,
us_crea, fech_crea, us_mod, fech_mod)
VALUES(fecha_final,1,entrada,x.cuenta_no_ventas,4101,
null,null,null,null,
detalle1,null,0,neto,null,usuarios,getdate(),null,null)
IF x.cuenta_no_prima IS NOT NULL THEN
INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc,
cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t,
us_crea, fech_crea, us_mod, fech_mod)
VALUES(fecha_final,1,entrada,x.cuenta_no_prima,4101,
null,null,null,null,
detalle1,null,0,prima,null,usuarios,getdate(),null,null)
END IF
COMMIT WORK
END IF
END REPORT
{
Esta funcion se utiliza para desplegar mensajes de los reportes de
los sistemas de Ray-O-Vac Dominicana.
Realizada por Lic. Abner Montalvo y Johnny Soto Agosto 21, 1992
}
# Desplega pantalla con logo de la compania
{
Esta funcion se utiliza para desplegar mensajes de errores en todos
los sistemas de Ray-O-Vac Dominicana.
Esta funcion busca el mensaje deseado en la tabla "msgtable" y lo
despliega en la linea de mensajes
}
FUNCTION msg(numero_msg)
DEFINE numero_msg SMALLINT
DEFINE descripcion CHAR (60)
SELECT desc_msg INTO descripcion FROM msgtable
WHERE cod_msg = numero_msg
IF status = NOTFOUND THEN
LET numero_msg = 22
SELECT desc_msg INTO descripcion FROM msgtable
WHERE cod_msg = numero_msg
ERROR descripcion ATTRIBUTE(BOLD)
ELSE
ERROR descripcion ATTRIBUTE(BOLD)
LET numero_msg = 0
END IF
END FUNCTION