Files
2026-09-22 20:38:51 -04:00

790 lines
29 KiB
Plaintext

{
================================================================================
FUNCION : VECONVIERTEORDEN
OBJETIVO : PASAR LAS COTIZACIONES DE FORMA AUTOAMTICA A ORDEN DE PEDIDOS
PROGRAMADOR : ING. JUAN SOTO
FECHA REALIZACION: 19/12/2011
================================================================================
}
SCHEMA decomarmol
GLOBALS
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER, -- TRUE/FALSE, to set preview option
pvetb51 RECORD LIKE vetb00051.*,
historico CHAR(1)
DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off,
doce,doble_on,doble_off CHAR(3),
cmd,imprime,copia,copia1 CHAR(150),
archivo,archivo1 CHAR(80),
p_compania RECORD LIKE companias.*,
prtb08 RECORD LIKE prtb00012.*,
pvetb50 RECORD LIKE vetb00050.*,
ult_numero INT,
p_prtb14 RECORD LIKE prtb00014.*,
producto STRING
END GLOBALS
FUNCTION convierteorden(xcotizacion_no,xorden,xusuario,xclave,ximpresor,xcopia,xtipo_orden)
DEFINE xcotizacion_no INT,
actualizar STRING,
pagaITBIS VARCHAR(1),
xtipo_orden VARCHAR(50),
xusuario,xclave,pdescripcion,punidad CHAR(50),
pcosto DEC(12,5),
xorden CHAR(25),
pcodn,parea,pcodgrupo,pcodtipo,pcodsec,idx,ximpresor,xcopia SMALLINT,
pcantidad1,pcantidad DEC(12,4),
pvetb22 RECORD LIKE vetb00022.*,
pprecio DEC(12,2),
pdesc DEC(8,2),
pkit INT,
pfecha_compromiso DATE
CALL STARTLOG("veconvierte.txt")
SELECT unique a.num_oc FROM prtb00012 a
WHERE a.cotizacion_no = xcotizacion_no AND a.status_t IS NULL
IF STATUS != NOTFOUND THEN
CALL fgl_winmessage("ERROR","COTIZACION TIENE ORDEN, NO PUEDE CREAR ORDEN","STOP")
RETURN 0,false
END IF
# CONTROL DESPIECE
LET pcantidad = 0
LET pcantidad1 = 0
SELECT num_oc INTO ult_numero FROM prtb00020
IF ult_numero IS NULL THEN
LET ult_numero = 0
END IF
LET ult_numero = ult_numero + 1
#BEGIN WORK
UPDATE prtb00020 set num_oc = ult_numero,
us_crea = xusuario,
fech_crea = GETDATE()
SELECT a.tipo_cliente,a.nombre_cliente,a.nombre_proyecto,a.cotizacion_no,CONVERT(CHAR(10),a.fecha_entrega,103)
INTO pvetb50.tipo_cliente,pvetb50.nombre_cliente,pvetb50.nombre_proyecto,pvetb50.cotizacion_no,
pfecha_compromiso
FROM vetb00050 a
WHERE a.cotizacion_no =xcotizacion_no
LET actualizar =
" INSERT INTO prtb00012
(ventas,cotizacion_no,num_oc,fecha_oc,nombre_file,sec_vend,tipo_cliente,
sec_cliente,direccion,telefono,fax,cond_pago,ubicacion,cerrada,us_crea,fech_crea,tipo_orden,num_emp_inst)
SELECT ventas,'",xcotizacion_no, "','",ult_numero, "','",CURRENT,"','",
xorden CLIPPED,"',sec_vend,tipo_cliente,sec_cliente,direccion_cliente, ",
"telefono_r,fax,cond_pago,direccion_proyecto,'N',SUSER_SNAME(),GETDATE(), '",xtipo_orden CLIPPED,"', num_emp_inst ",
"FROM vetb00050 WHERE cotizacion_no=",xcotizacion_no
PREPARE xvetb50 FROM actualizar
EXECUTE xvetb50
IF STATUS < 0 THEN
# ROLLBACK WORK
RETURN 0,FALSE
END IF
LET idx = 1
LET actualizar=
"SELECT a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103),a.direccion,a.sec_vend,a.tipo_cliente,a.sec_cliente, ",
" a.ubicacion,a.cond_pago,a.nombre_file ",
"FROM prtb00012 a WHERE a.num_oc ='", ult_numero,"'"
PREPARE xprtb12 FROM actualizar
EXECUTE xprtb12
INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.direccion,prtb08.sec_vend,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.ubicacion,
prtb08.cond_pago,prtb08.nombre_file
IF STATUS < 0 THEN
# ROLLBACK WORK
RETURN 0,FALSE
END IF
DECLARE xvetb22 CURSOR FOR
SELECT a.* FROM vetb00022 a
WHERE a.cotizacion_no = xcotizacion_no
FOREACH xvetb22 INTO pvetb22.*
IF pvetb22.etiqueta IS NOT NULL THEN
INSERT INTO prtb00022 (num_oc,etiqueta,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,
lado_1,lado_2,lado_3,cantidad,medida)
VALUES (ult_numero,pvetb22.etiqueta,pvetb22.secuencia,pvetb22.area,
pvetb22.cod_n,pvetb22.cod_grupo,
pvetb22.cod_tipo,pvetb22.cod_sec,pvetb22.lado_1,
pvetb22.lado_2,pvetb22.lado_3,pvetb22.cantidad,pvetb22.medida)
IF STATUS < 0 THEN
# ROLLBACK WORK
RETURN 0,FALSE
END IF
END IF
END FOREACH
CALL defecto(xusuario,xclave,ximpresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
{
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
# CALL fgl_winmessage("veprrp049",r_output,"stop")
# CALL fgl_winmessage("veprrp049",preview,"stop")
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
--run the report
IF handler IS NOT NULL THEN } -- report engine was configured ok
CALL seleccionarsalida() RETURNING r_output
#LET r_output='PDF'
LET preview = TRUE
LET r_filename ="orden.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
START REPORT o_pedido1 TO XML HANDLER handler
CALL oc_detalles()
DECLARE xvetb51 CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad,
b.descrip_esp,b.unidad_med,a.precio,a.porc_Desc,a.id_kit
FROM vetb00051 a,iptb00002 b
WHERE a.cotizacion_no = xcotizacion_no AND
a.cod_n = b.cod_n AND a.cod_Grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_Sec AND a.id_kit IS NULL
UNION
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad,
b.descrip_esp,b.unidad_med,a.precio,a.porc_Desc,a.id_kit
FROM vetb00031 a,iptb00002 b
WHERE a.cotizacion_no = xcotizacion_no AND
a.cod_n = b.cod_n AND a.cod_Grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_Sec AND
a.cod_n = b.cod_n AND a.cod_Grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_Sec AND
a.id_kit IS NOT NULL
FOREACH xvetb51 INTO parea,pcodn,pcodgrupo,pcodtipo,pcodsec,
pcantidad1,pcantidad,pdescripcion,punidad,pprecio,
pdesc,pkit
#BUSCA COSTO
LET pcosto = 0
IF pcodn <> 25 OR pcodn <> 12 OR pcodn <> 5 THEN
SELECT AVG(a.material+a.labor+gastos) INTO pcosto FROM iptb00004 a
WHERE a.ano = YEAR(today) AND
(a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_Sec = pcodsec) AND
a.status_t IS NULL
{ IF pcosto = 0 THEN
ROLLBACK WORK
LET producto = pcodn USING "&&&&","-",pcodgrupo USING "&&&&", pcodtipo USING "&&&&",
pcodsec USING "&&&&", " NO TIENE COSTO, FAVOR DE INFORMAR A FINANZAS, NO SE ADICIONO LA ORDEN"
CALL fgl_winmessage("INFO",producto,"info")
RETURN 0,FALSE
END IF}
ELSE
LET pcosto = (pprecio * (pdesc/100)) - pprecio
END IF
INSERT INTO prtb00013 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,
cantidad,us_crea,fech_crea,precio,descuento,id_kit,costo)
VALUES
(ult_numero,idx,parea,pcodn,pcodgrupo,pcodtipo,pcodsec,
pcantidad,SUSER_SNAME(),GETDATE(),pprecio,pdesc,pkit,pcosto)
IF STATUS < 0 THEN
# ROLLBACK WORK
RETURN 0,FALSE
END IF
INSERT INTO prtb00023 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,
cantidad_1,cantidad,id_kit)
VALUES (ult_numero,idx,parea,pcodn,pcodgrupo,pcodtipo,pcodsec,
pcantidad1,pcantidad,pkit)
IF STATUS < 0 THEN
# ROLLBACK WORK
RETURN 0,FALSE
END IF
OUTPUT TO REPORT o_pedido1(ult_numero,idx,parea,pcodn,pcodgrupo,pcodtipo,
pcodsec,pdescripcion,punidad,pcantidad1,pcantidad,
pprecio,pdesc,p_prtb14.*,xcotizacion_no,pkit)
LET idx = idx + 1
END FOREACH
{CREACION REGISTRO EN LA TABLA CODIGOS MADRES KIT EN LA ORDEN DE PEDIDOS}
LET actualizar =
" INSERT INTO prtb00031 ",
" (num_oc ",
" ,cotizacion_no ",
" ,id_kit ",
" ,secuencia ",
" ,area ",
" ,cod_n ",
" ,cod_grupo ",
" ,cod_tipo ",
" ,cod_sec ",
" ,cantidad ",
" ,us_crea ",
" ,fech_crea) ",
"SELECT '",
ult_numero USING "<<<<<<<<","'",
",a.cotizacion_no ",
",a.id_kit ",
",a.secuencia ",
",a.area ",
",a.cod_n ",
",a.cod_grupo ",
",a.cod_tipo ",
",a.cod_sec ",
",a.cantidad ",
",a.us_crea ",
",a.fech_crea ",
" FROM vetb00051 a WHERE a.cotizacion_no = ",xcotizacion_no,
" and a.id_kit IS NOT NULL "
PREPARE kits_orden FROM actualizar
EXECUTE kits_orden
INSERT INTO prordenstatus(fecha_trx,num_oc,cerrada,observacion,fecha_compromiso,usuario)
VALUES (GETDATE(),ult_numero,'N','CREACION ORDEN',pfecha_compromiso,xusuario)
#COMMIT WORK
FINISH REPORT o_pedido1
RUN imprime
LET archivo1 = archivo
{CALL defecto(xusuario,xclave,xcopia) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
LET cmd = "TYPE ",archivo1 CLIPPED," ",copia1
RUN cmd}
{
ELSE
EXIT PROGRAM
END IF}
# INSERTA ORDEN EN OTRA DB ##########################################
# BUSCA SI EL CLIENTE DEBE IR A LA OTRA BASE DE DATOS
{ SE COLOCO EN COMENTARIO, YA QUE EL PROCESO DABA ERRORES AL PASAR LA DATA A LA OTRA BASE DE DATOS,
EL PROGRAMA DEL PUNTO DE VENTAS VEPRMT022 TIENE LA TRANSFERENCIA DE LA ORDEN QUE VAN A FACTURAR EN EL MOMENTO
}
SELECT a.ncf INTO pagaITBIS FROM vetb00060 A
WHERE a.tipo_cliente = pvetb50.tipo_cliente
IF pagaITBIS = 'S' THEN
SET CONNECTION "IFMX"
LET actualizar =
" INSERT INTO prtb00012
(ventas,cotizacion_no,num_oc,fecha_oc,nombre_file,sec_vend,tipo_cliente,
sec_cliente,direccion,telefono,fax,cond_pago,ubicacion,cerrada,us_crea)",
"SELECT ventas,'",xcotizacion_no, "','",ult_numero USING "<<<<<<<<",
"',fecha,'",
xorden CLIPPED,"',sec_vend,tipo_cliente,sec_cliente,direccion_cliente, ",
"telefono_r,fax,cond_pago,direccion_proyecto,'N','",xusuario CLIPPED,"' ",
" FROM vetb00050 WHERE cotizacion_no='",xcotizacion_no USING "<<<<<<<","'"
PREPARE xfvetb50 FROM actualizar
EXECUTE xfvetb50
IF STATUS < 0 THEN
CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR LA ORDEN, EXISTE PROBLEMAS","STOP")
RETURN 0,FALSE
END IF
LET idx = 1
LET actualizar=
"SELECT a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103),a.direccion,a.sec_vend,a.tipo_cliente,a.sec_cliente, ",
" a.ubicacion,a.cond_pago,a.nombre_file ",
"FROM prtb00012 a WHERE a.num_oc ='", ult_numero,"'"
PREPARE xfprtb12 FROM actualizar
EXECUTE xfprtb12
INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.direccion,prtb08.sec_vend,
prtb08.tipo_cliente,prtb08.sec_cliente,prtb08.ubicacion,
prtb08.cond_pago,prtb08.nombre_file
IF STATUS < 0 THEN
CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR LA ORDEN, EXISTE PROBLEMAS","STOP")
RETURN 0,FALSE
END IF
DECLARE xfvetb51 CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad,
b.descrip_esp,b.unidad_med,a.precio,a.porc_Desc
FROM vetb00051 a,iptb00002 b
WHERE a.cotizacion_no = xcotizacion_no AND
a.cod_n = b.cod_n AND a.cod_Grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_Sec
FOREACH xfvetb51 INTO parea,pcodn,pcodgrupo,pcodtipo,pcodsec,
pcantidad1,pcantidad,pdescripcion,punidad,pprecio,
pdesc
INSERT INTO prtb00013 (num_oc,secuencia,cod_n,cod_grupo,cod_tipo,cod_sec,
cantidad,precio,descuento)
VALUES
(ult_numero,idx,pcodn,pcodgrupo,pcodtipo,pcodsec,
pcantidad,pprecio,pdesc)
IF STATUS < 0 THEN
CALL fgl_winmessage("ERROR","NO PUDE ADICIONAR LA ORDEN, EXISTE PROBLEMAS","STOP")
RETURN 0,FALSE
END IF
LET idx = idx + 1
END FOREACH
END IF
#------------------------------------------------------------------------------------
RETURN ult_numero,TRUE
END FUNCTION
{REPORT o_pedido1(xnumero,z,y,jcotizacion_no,xkit)
DEFINE z RECORD
fila SMALLINT,
area SMALLINT,
cod_n LIKE prtb00013.cod_n,
cod_grupo LIKE prtb00013.cod_grupo,
cod_tipo LIKE prtb00013.cod_tipo,
cod_sec LIKE prtb00013.cod_sec,
descrip_esp LIKE iptb00002.descrip_esp,
unidad_med LIKE iptb00002.unidad_med,
cantidad_1 DEC(12,4),
cantidad DEC(12,4),
precio DEC(12,2),
porc_desc DEC(8,2)
END RECORD,
y RECORD LIKE prtb00014.*,
l smallint,
jcotizacion_no,xkit INT,
i,xnumero INTEGER,
normal,comp_on,comp_off,doce,negrillas_on,negrillas_off,
doble_on,doble_off CHAR(2),raya CHAR(120),rayita CHAR(35),
total_gral,total_inst,subtotal,descuento,total_p DEC(12,2),
ult_pago INTEGER,
plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5),
etiqueta,prnc,ptelefono,xnumrnc CHAR(20),
descrip_p,nombres,apellidos CHAR(50),
descrip_area CHAR(40)
OUTPUT
LEFT MARGIN 0
ORDER BY z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec
FORMAT
PAGE HEADER
LET normal = ASCII 27, ASCII 80
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ascii 77
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET doble_on = ASCII 14
LET doble_off = ASCII 20
SELECT a.* INTO p_compania.* FROM companias a
LET l = (90 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT comp_on
PRINT COLUMN l, p_compania.nombre CLIPPED,
COLUMN 72, TODAY USING "DD/MM/YYYY"
LET l = (100 - LENGTH("Ordenes de Pedido Corte a la Medida"))/2
PRINT COLUMN l, "ORDENES DE PEDIDOS",
COLUMN 72, TIME
LET prnc ="RNC:",p_compania.rnc
LET l = (90 - LENGTH(prnc))/2
PRINT COLUMN l, prnc
LET l = (90 - LENGTH(p_compania.direccion))/2
PRINT COLUMN l, p_compania.direccion
LET ptelefono = p_compania.telefono
LET l = (90 - LENGTH(ptelefono))/2
PRINT COLUMN l, ptelefono
PRINT COLUMN 001, "ORDEN NO.: ",doble_on,xnumero USING "<<<<<<",doble_off
SKIP 1 LINE
PRINT COLUMN 001, "Fecha de la Orden : ",prtb08.fecha_oc USING "DD/MMM/YYYY",
COLUMN 62, "Fecha de Entrega : ",prtb08.fecha_entrega USING "DD/MM/YYYY"
# Busca el ultimo pago realizado
LET ult_pago = NULL
{ 23/06/2017 NO PUEDE SER ESE NUMERO SELECT MAX(a.num_doc) INTO ult_pago
FROM cctb00001 a
WHERE a.tipo_doc IN ("AV","PG") AND
a.tipo_cliente = prtb08.tipo_cliente AND
a.sec_cliente = prtb08.sec_cliente AND
a.status_t IS NULL
aqui
# VENDEDOR
LET nombres = null
LET apellidos = null
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
FROM adtb00003 a
WHERE a.num_emp = prtb08.sec_vend
IF prtb08.nombre_file IS NULL THEN
SELECT a.nombre_file INTO prtb08.nombre_file
FROM prtb00012 a
WHERE a.num_oc = xnumero
END IF
LET xnumrnc = NULL
SELECT a.num_rnc INTO xnumrnc FROM vetb00004 a
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
a.sec_cliente = prtb08.sec_cliente
PRINT COLUMN 001, "CLIENTE : ",pvetb50.nombre_cliente CLIPPED
PRINT COLUMN 001, "CODIGO CLIENTE : ",prtb08.tipo_cliente USING "&&","-",
prtb08.sec_cliente USING "&&&&&&&&"
PRINT COLUMN 001, "Direccion : ",prtb08.direccion CLIPPED,
COLUMN 062, "Ubicacion : ",prtb08.ubicacion CLIPPED
PRINT COLUMN 001,"NUM RNC : ",xnumrnc
PRINT COLUMN 1, "Proyecto : ",pvetb50.nombre_proyecto CLIPPED
PRINT COLUMN 001, "Telefono : ",prtb08.telefono CLIPPED,
COLUMN 62, "Fax : ",prtb08.fax CLIPPED
PRINT COLUMN 001, "Condiciones : ", descrip_p CLIPPED,
COLUMN 62, "Vendedor : ", prtb08.sec_vend USING "<<<<"," ",
nombres CLIPPED," ",apellidos CLIPPED
PRINT COLUMN 1, "COTIZACION NO. : ", jcotizacion_no USING "&&&&&&",
2 SPACES, "Documento Referencia : ",prtb08.nombre_file CLIPPED
FOR i = 1 TO 120
LET raya[i] = "-"
END FOR
FOR i = 1 TO 35
LET rayita[i] = "-"
END FOR
# PRINT "Nombre Archivo dibujo: ",parchivo
LET subtotal = 0
LET descuento = 0
LET total_p = 0
LET total_gral = 0
PRINT doce
PRINT raya
PRINT COLUMN 033, "|ALTURA",
COLUMN 040, "|TERMINACION",
COLUMN 64,"|CANTIDAD"
PRINT COLUMN 001, " CODIGO ",
COLUMN 012, "|DESCRIPCION",
COLUMN 033, "|ZOCALO|",
# COLUMN 047, "|TERMINACION",
COLUMN 048, "|BISEL",
COLUMN 55, "|UNID.",
COLUMN 64, "|UNIDADES",
COLUMN 78, "|CANTIDAD",
COLUMN 91, "|PRECIO",
COLUMN 101, "|%DESC.",
COLUMN 108, " |TOTAL"
PRINT raya
BEFORE GROUP OF z.area
SELECT a.nombre_Area INTO descrip_Area FROM prtb00016 a
WHERE a.area_num = z.area
PRINT "AREA: ",descrip_area CLIPPED
ON EVERY ROW
LET descuento = (z.precio * z.cantidad) * (z.porc_desc/100)
LET subtotal = subtotal + (z.precio*z.cantidad)
LET total_p = subtotal - descuento
LET total_gral = total_p + total_gral
PRINT COLUMN 1, z.cod_n USING "&&&","-",z.cod_grupo USING "&&&&","-",
z.cod_tipo USING "&&&&","-",z.cod_sec USING "&&&&"," ",
COLUMN 12, z.descrip_esp wordwrap right margin 40,
COLUMN 57, z.unidad_med clipped,
COLUMN 63, z.cantidad_1 USING "##,###.####",
COLUMN 75, z.cantidad USING "#,###,###.#&&&"
# COLUMN 90, z.precio USING "$,$$$,$##.##",
# COLUMN 103, z.porc_desc USING "###.##","%",
# COLUMN 111, total_p USING "$$,$$$,$##.##"
# BUSCA DESPIECE
DECLARE busca_d1 CURSOR FOR
SELECT b.descripcion,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a,vetb00026 b
WHERE a.etiqueta = b.codid AND
a.area = z.area AND
#a.secuencia = z.fila AND
a.cod_n = z.cod_n AND
a.cod_grupo = z.cod_grupo AND
a.cod_tipo = z.cod_tipo AND
a.cod_sec = z.cod_sec AND
a.num_oc = xnumero
LET total_unidades = 0
FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
PRINT COLUMN 5,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ",
plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####"
LET total_unidades = total_unidades + pcantidad
END FOREACH
IF total_unidades > 0 THEN
PRINT COLUMN 19, "TOTAL UNIDADES ",total_unidades USING "<,<<<"
END IF
{# BUSCA COMPOSICION KIT
DECLARE busca_kit CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,b.descrip_esp
FROM prtb00030 a,iptb00002 b
WHERE a.num_oc = xnumero AND
a.id_kit = xkit AND
a.cod_n = b.cod_n AND
a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND
a.cod_sec = b.cod_sec
LET l = 1
FOREACH busca_kit INTO kit.cod_n,kit.cod_grupo,kit.cod_tipo,kit.cod_sec,kit.cantidad,descrip_p
PRINT COLUMN 5, kit.cantidad USING "<<<"," ",kit.cod_n USING "&&&&","-",
kit.cod_grupo USING "&&&&","-",
kit.cod_tipo USING "&&&&","-",
kit.cod_sec USING "&&&&"," ",descrip_p
LET l = l + 1
END FOREACH
aqui
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 075, "INSTALACION"
PRINT COLUMN 065, rayita
PRINT COLUMN 065,"|"," Cantidad |",
COLUMN 075, " Precio |",
COLUMN 085," Total "
PRINT COLUMN 045, "Instalacion Tope",
COLUMN 068, prtb08.cantidad_i USING "####.#&",
COLUMN 078, prtb08.precio_i USING "#,###.#&",
COLUMN 088,(prtb08.cantidad_i * prtb08.precio_i) USING "#,###,###.#&"
PRINT COLUMN 045, "Mano de Obra",
COLUMN 068, prtb08.cantidad_mo USING "####.#&",
COLUMN 078, prtb08.precio_mo USING "#,###.#&",
COLUMN 088,(prtb08.cantidad_mo * prtb08.precio_mo) USING "#,###,###.#&"
PRINT COLUMN 065, rayita
LET total_inst = (prtb08.cantidad_i * prtb08.precio_i) +
(prtb08.cantidad_mo * prtb08.precio_mo)
PRINT COLUMN 065, "Total Instalacion",
COLUMN 088, total_inst USING "#,###,###.#&"
PRINT COLUMN 060, "Transporte",
COLUMN 088, prtb08.transporte USING "#,###,###.#&"
#PRINT COLUMN 060, "Sub-Total",
# COLUMN 088, prtb08.sub_total + total_inst USING "#,###,###.#&"
#PRINT COLUMN 060, "Itbis",
# COLUMN 088, prtb08.itbis USING "#,###,###.#&"
#PRINT COLUMN 060, "Total Ventas",
# COLUMN 088, total_gral USING "$$$,$$$,$##.##"
PRINT normal
SKIP 2 LINES
PRINT COLUMN 003, y.observacion wordwrap right margin 50
PAGE TRAILER
PRINT COLUMN 10, "-------------------",
COLUMN 35, "-------------------",
COLUMN 57, "-------------------"
PRINT COLUMN 13, "VENDEDOR",
COLUMN 39, "CLIENTE",
COLUMN 61, "APROBADO POR"
END REPORT}
REPORT o_pedido1(xnumero,z,y,jcotizacion_no,xkit)
DEFINE z RECORD
fila SMALLINT,
area SMALLINT,
cod_n LIKE prtb00013.cod_n,
cod_grupo LIKE prtb00013.cod_grupo,
cod_tipo LIKE prtb00013.cod_tipo,
cod_sec LIKE prtb00013.cod_sec,
descrip_esp LIKE iptb00002.descrip_esp,
unidad_med LIKE iptb00002.unidad_med,
cantidad_1 DEC(12,4),
cantidad DEC(12,4),
precio DEC(12,2),
porc_desc DEC(8,2)
END RECORD,
y RECORD LIKE prtb00014.*,
l smallint,
jcotizacion_no,xkit INT,
i,xnumero INTEGER,
normal,comp_on,comp_off,doce,negrillas_on,negrillas_off,
doble_on,doble_off CHAR(2),raya CHAR(120),rayita CHAR(35),
total_gral,total_inst,subtotal,descuento,total_p DEC(12,2),
ult_pago INTEGER,
plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5),
etiqueta,prnc,ptelefono,xnumrnc CHAR(20),
descrip_p,nombres,apellidos CHAR(50),
descrip_area CHAR(40)
ORDER BY z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec
FORMAT
FIRST PAGE HEADER
SELECT a.* INTO p_compania.* FROM companias a
LET ult_pago = NULL
# VENDEDOR
LET nombres = null
LET apellidos = null
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
FROM adtb00003 a
WHERE a.num_emp = prtb08.sec_vend
IF prtb08.nombre_file IS NULL THEN
SELECT a.nombre_file INTO prtb08.nombre_file
FROM prtb00012 a
WHERE a.num_oc = xnumero
END IF
LET xnumrnc = NULL
SELECT a.num_rnc INTO xnumrnc FROM vetb00004 a
WHERE a.tipo_cliente = prtb08.tipo_cliente AND
a.sec_cliente = prtb08.sec_cliente
# PRINT "Nombre Archivo dibujo: ",parchivo
LET subtotal = 0
LET descuento = 0
LET total_p = 0
LET total_gral = 0
BEFORE GROUP OF z.area
SELECT a.nombre_Area INTO descrip_Area FROM prtb00016 a
WHERE a.area_num = z.area
ON EVERY ROW
LET descuento = (z.precio * z.cantidad) * (z.porc_desc/100)
LET subtotal = subtotal + (z.precio*z.cantidad)
LET total_p = subtotal - descuento
LET total_gral = total_p + total_gral
# BUSCA DESPIECE
DECLARE busca_d1 CURSOR FOR
SELECT b.descripcion,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a,vetb00026 b
WHERE a.etiqueta = b.codid AND
a.area = z.area AND
#a.secuencia = z.fila AND
a.cod_n = z.cod_n AND
a.cod_grupo = z.cod_grupo AND
a.cod_tipo = z.cod_tipo AND
a.cod_sec = z.cod_sec AND
a.num_oc = xnumero
LET total_unidades = 0
FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
{ PRINT COLUMN 5,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ",
plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####"
LET total_unidades = total_unidades + pcantidad}
PRINTX etiqueta,plado1,plado2,plado3,pcantidad,pmedida
END FOREACH
PRINTX z.*,p_compania.*,xnumero,prtb08.*,pvetb50.*,xnumrnc,
nombres,apellidos,jcotizacion_no,total_p,descrip_p,y.*
ON LAST ROW
LET total_inst = (prtb08.cantidad_i * prtb08.precio_i) +
(prtb08.cantidad_mo * prtb08.precio_mo)
END REPORT
FUNCTION oc_detalles()
OPEN WINDOW wobserva AT 14,2 WITH FORM "prfmwd002" ATTRIBUTE (BORDER,FORM LINE FIRST +1)
INITIALIZE p_prtb14.* TO NULL
SELECT a.* INTO p_prtb14.* FROM prtb00014 a WHERE a.num_oc = prtb08.num_oc
#IF p_prtb14.observacion IS NULL THEN
SELECT a.comentario iNTO p_prtb14.observacion FROM vetb00050 a
WHERE a.cotizacion_no = pvetb50.cotizacion_no
#END IF
INPUT BY NAME p_prtb14.observacion WITHOUT DEFAULTS
AFTER INPUT
INSERT INTO prtb00014 (num_oc,observacion,us_crea,fech_crea)
VALUES (ult_numero,p_prtb14.observacion,SUSER_SNAME(),GETDATE())
EXIT INPUT
END INPUT
CLOSE WINDOW wobserva
END FUNCTION
FUNCTION verificacodigo(qcodn,qcodgrupo,qcodtipo,qcodsec,qcotizacion)
DEFINE qcodn,qcodgrupo,qcodtipo,qcodsec SMALLINT,
qcotizacion INT,
estado BOOLEAN
LET estado = FALSE
SELECT DISTINCT a.cod_n FROM iptb00027 a
WHERE a.cod_n = qcodn AND
a.cod_grupo = qcodgrupo AND
a.cod_tipo = qcodtipo AND
a.cod_Sec = qcodsec
IF STATUS <> NOTFOUND THEN
SELECT DISTINCT a.cotizacion_no FROM vetb00052 a
WHERE a.cotizacion_no = qcotizacion AND
a.cod_n = qcodn AND
a.cod_tipo = qcodtipo AND
a.cod_sec = qcodsec
IF STATUS <> NOTFOUND THEN
CALL fgl_winmessage("ERROR", "NO PUEDE CONVERTIR COTIZACION EN ORDEN, EXISTE UN ITEM QUE SE DESPIEZA Y NO SE ENCUENTRA EN TABLA, VERIFIQUE DESPIECE","INFO")
LET estado = TRUE
END IF
END IF
RETURN estado
END FUNCTION