1099 lines
36 KiB
Plaintext
1099 lines
36 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 smarmotech
|
|
GLOBALS
|
|
|
|
DEFINE
|
|
normal,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
doble_on,
|
|
doble_off
|
|
CHAR(3),
|
|
tipoNcf VARCHAR(2),
|
|
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, file_impresora STRING,
|
|
printers DYNAMIC ARRAY OF SMALLINT,
|
|
printers_ant SMALLINT,
|
|
mensaje STRING,
|
|
identificacion VARCHAR(25)
|
|
|
|
END GLOBALS
|
|
|
|
FUNCTION convierteorden(
|
|
xcotizacion_no, xorden, xusuario, xclave, ximpresor, xcopia, xtipo_orden)
|
|
|
|
DEFINE
|
|
xcotizacion_no, xsecvend_a 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, 5),
|
|
pvetb22 RECORD LIKE vetb00022.*,
|
|
pprecio, monto_cotizacion 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
|
|
LET xsecvend_a = NULL
|
|
|
|
SELECT a.tipo_cliente,
|
|
a.nombre_cliente,
|
|
a.nombre_proyecto,
|
|
a.cotizacion_no,
|
|
CONVERT(CHAR(10), a.fecha_entrega, 103),
|
|
a.sec_vend_aux,
|
|
a.rnc,
|
|
a.total_neto,
|
|
b.codigo_dgii
|
|
INTO pvetb50.tipo_cliente,
|
|
pvetb50.nombre_cliente,
|
|
pvetb50.nombre_proyecto,
|
|
pvetb50.cotizacion_no,
|
|
pfecha_compromiso,
|
|
xsecvend_a,
|
|
identificacion,
|
|
monto_cotizacion,
|
|
tipoNcf
|
|
FROM vetb00050 a, vetb00060 b
|
|
WHERE a.cotizacion_no = xcotizacion_no
|
|
AND a.tipo_cliente = b.tipo_cliente
|
|
|
|
IF identificacion IS NULL AND monto_cotizacion > 25000 THEN
|
|
CALL msg(1023)
|
|
RETURN 0, FALSE
|
|
END IF
|
|
IF identificacion IS NULL AND monto_cotizacion < 25000 THEN
|
|
LET identificacion = '12345670901'
|
|
UPDATE vetb00050
|
|
SET rnc = identificacion
|
|
WHERE cotizacion_no = xcotizacion_no
|
|
END IF
|
|
IF tipoNcf = '31' AND identificacion IS NULL THEN
|
|
CALL msg(1023)
|
|
ROLLBACK WORK
|
|
RETURN 0, FALSE
|
|
END IF
|
|
# Cierra cualquier transaccion colgada por un intento previo fallido
|
|
# (evita el error -535 "Already in transaction" en el BEGIN WORK)
|
|
WHENEVER ANY ERROR CONTINUE
|
|
ROLLBACK WORK
|
|
WHENEVER ANY ERROR STOP
|
|
|
|
BEGIN WORK
|
|
UPDATE prtb00020
|
|
SET num_oc = ult_numero, us_crea = xusuario, fech_crea = GETDATE()
|
|
|
|
IF xsecvend_a IS NULL OR xsecvend_a = 0 THEN
|
|
|
|
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,bodega,titulo_bodega)
|
|
SELECT a.ventas,a.cotizacion_no,'",
|
|
ult_numero,
|
|
"','",
|
|
CURRENT,
|
|
"', '",
|
|
xorden CLIPPED,
|
|
"',a.sec_vend,a.tipo_cliente,a.sec_cliente,a.direccion_cliente, ",
|
|
"a.telefono_r,a.fax,a.cond_pago,a.direccion_proyecto,'N',SUSER_SNAME(),GETDATE(), '",
|
|
xtipo_orden CLIPPED,
|
|
"', a.num_emp_inst,a.bodega,a.titulo_bodega ",
|
|
"FROM vetb00050 a WHERE a.cotizacion_no=",
|
|
xcotizacion_no
|
|
|
|
# DISPLAY actualizar
|
|
ELSE
|
|
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,
|
|
"','",
|
|
xsecvend_a,
|
|
"',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
|
|
|
|
END IF
|
|
|
|
PREPARE xvetb50 FROM actualizar
|
|
TRY
|
|
EXECUTE xvetb50
|
|
CATCH
|
|
# SQLERRMESSAGE trae el texto real del error de SQL Server;
|
|
# SQLCA.SQLERRM normalmente solo trae un fragmento (tabla/columna).
|
|
LET mensaje = "NO FUE POSIBLE CREAR ORDEN [cod ", SQLCA.SQLCODE USING "<<<<<<&",
|
|
"]: ", SQLERRMESSAGE CLIPPED,
|
|
" (num_oc=", ult_numero USING "<<<<<<<", " cotizacion=", xcotizacion_no USING "<<<<<<<", ")"
|
|
DISPLAY "mensaje: ", mensaje
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR AL CREAR ORDEN", mensaje CLIPPED, "STOP")
|
|
RETURN 0, FALSE
|
|
|
|
END TRY
|
|
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,a.bodega,a.titulo_bodega ",
|
|
"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,
|
|
prtb08.bodega,
|
|
prtb08.titulo_bodega
|
|
|
|
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,
|
|
us_crea)
|
|
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,
|
|
xusuario)
|
|
|
|
END IF
|
|
END FOREACH
|
|
# ACTUALIZA ESTADO
|
|
UPDATE vetb00050
|
|
SET estado = 'LOGRADA', fech_mod = getdate(), us_mod = xusuario
|
|
WHERE cotizacion_no = xcotizacion_no
|
|
|
|
CALL defecto(
|
|
xusuario, xclave, ximpresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia1
|
|
|
|
START REPORT o_pedido1 TO archivo
|
|
|
|
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,
|
|
c.impresora
|
|
FROM vetb00051 a, iptb00002 b, iptb00020 c
|
|
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
|
|
AND a.cod_n = c.cod_n
|
|
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,
|
|
c.impresora
|
|
FROM vetb00031 a, iptb00002 b, iptb00020 c
|
|
WHERE a.cotizacion_no = xcotizacion_no
|
|
AND a.cod_n = c.cod_n
|
|
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
|
|
ORDER BY c.impresora
|
|
LET idx = 1
|
|
|
|
CALL printers.clear()
|
|
|
|
FOREACH xvetb51
|
|
INTO parea,
|
|
pcodn,
|
|
pcodgrupo,
|
|
pcodtipo,
|
|
pcodsec,
|
|
pcantidad1,
|
|
pcantidad,
|
|
pdescripcion,
|
|
punidad,
|
|
pprecio,
|
|
pdesc,
|
|
pkit,
|
|
printers[idx]
|
|
#CONTROL KIT
|
|
IF pkit IS NOT NULL THEN
|
|
SELECT DISTINCT a.id_kit
|
|
FROM vetb00031 a
|
|
WHERE a.cotizacion_no = xcotizacion_no AND a.id_kit = pkit
|
|
IF STATUS = NOTFOUND THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
RETURN 0, FALSE
|
|
END IF
|
|
END IF
|
|
#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)
|
|
|
|
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)
|
|
# DESAUTORIZA LAS RESERVAS
|
|
UPDATE vetb00051
|
|
SET autorizada = 'NO'
|
|
WHERE cotizacion_no = xcotizacion_no
|
|
AND cod_n = pcodn
|
|
AND cod_grupo = pcodgrupo
|
|
AND cod_tipo = pcodtipo
|
|
AND cod_Sec = pcodsec
|
|
|
|
OUTPUT TO REPORT o_pedido1(
|
|
ult_numero,
|
|
idx,
|
|
parea,
|
|
pcodn,
|
|
pcodgrupo,
|
|
pcodtipo,
|
|
pcodsec,
|
|
pdescripcion,
|
|
punidad,
|
|
pcantidad1,
|
|
pcantidad,
|
|
pprecio,
|
|
pdesc,
|
|
pkit,
|
|
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
|
|
|
|
# RUTINA PARA REALIZAR IMPRESION EN DIFERENTES LUGARES
|
|
LET file_impresora = archivo
|
|
LET printers_ant = 0
|
|
FOR idx = 1 TO printers.getLength()
|
|
IF printers[idx] IS NOT NULL THEN
|
|
# DISPLAY "printers ",printers[idx], " anterior ",printers_ant
|
|
IF printers_ant <> printers[idx] THEN
|
|
LET printers_ant = printers[idx]
|
|
CALL defecto(
|
|
xusuario, xclave, printers[idx])
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia1
|
|
|
|
# DISPLAY "printers ENVIADO ",printers[idx]
|
|
# DISPLAY "imprime ",imprime clipped," copia1 ",copia1 clipped," file ",file_impresora
|
|
LET imprime = "TYPE ", file_impresora CLIPPED, " ", copia1
|
|
# DISPLAY "IMPRIME ", imprime
|
|
RUN imprime
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
LET archivo1 = file_impresora
|
|
|
|
CALL defecto(
|
|
xusuario, xclave, ximpresor)
|
|
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
|
|
# funcion fija para imprimir en impresora soporte a clientes
|
|
CALL defecto(
|
|
xusuario, xclave, 84)
|
|
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
|
|
|
|
# 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),
|
|
id_kit INT
|
|
END RECORD,
|
|
y RECORD LIKE prtb00014.*,
|
|
l SMALLINT,
|
|
jcotizacion_no, xkit INT,
|
|
i, xnumero INTEGER,
|
|
descripcion_kit VARCHAR(100),
|
|
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
|
|
}
|
|
# 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,
|
|
COLUMN 62,
|
|
"LUGAR RECOGIDA : ",
|
|
prtb08.titulo_bodega
|
|
|
|
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
|
|
BEFORE GROUP OF z.id_kit
|
|
IF z.id_kit IS NOT NULL THEN
|
|
SELECT a.descripcion
|
|
INTO descripcion_kit
|
|
FROM vetb00029 a
|
|
WHERE a.id_kit = z.id_kit
|
|
PRINT "DESCRIPCION KIT: ", descripcion_kit CLIPPED
|
|
END IF
|
|
|
|
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
|
|
}
|
|
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
|
|
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
|