8590 lines
325 KiB
Plaintext
8590 lines
325 KiB
Plaintext
{--------------------------------------------------------------------------
|
|
PROGRAMA : IPPRMT044
|
|
OBJETIVO : Programa Captura Documento Otros Movimientos de
|
|
Inventario de Producto Terminados.
|
|
PROGRAMADOR : Juan Soto.
|
|
FECHA REALIZACION : AGOSTO 1997.
|
|
--------------------------------------------------------------------------}
|
|
IMPORT util
|
|
|
|
GLOBALS "ipprgb000.4gl"
|
|
# <mbs name="Operacion Por Movimientos" type="V" program="ipprrp010" description="Sumatoria por codigo y tipo movimiento" />
|
|
# <mbs name="Operacion Movimientos Detallado" type="V" program="ipprrp004" description="Sumatoria por codigo y tipo movimiento Detallado" />
|
|
DEFINE
|
|
buf base.StringBuffer,
|
|
costoItem DEC(18, 4),
|
|
pano SMALLINT,
|
|
scodigo STRING
|
|
|
|
DEFINE documento_encabezado RECORD
|
|
tipoEcf,
|
|
eNcf,
|
|
indicadorMontoGravado,
|
|
tipoPago,
|
|
fechaLimitePago,
|
|
FormadePAgo,
|
|
montoPago,
|
|
FechaVencimientoSecuencia,
|
|
rncEmisor,
|
|
razonSocialEmisor,
|
|
direccionEmisor,
|
|
Municipio,
|
|
Provincia,
|
|
telefonoEmisor,
|
|
correoEmisor,
|
|
webSite,
|
|
codigoVendedor,
|
|
numeroFacturaInterna,
|
|
numeroPedidoInterno,
|
|
fechaEmision,
|
|
rncComprador,
|
|
razonSocialComprador,
|
|
montoGravadoTotal,
|
|
montoGravadoI1,
|
|
montoGravadoI2,
|
|
montoGravadoI3,
|
|
montoExento,
|
|
itbis1,
|
|
itbis2,
|
|
itbis3,
|
|
totalItbis,
|
|
totalItbis1,
|
|
totalItbis2,
|
|
totalItbis3,
|
|
montoTotal,
|
|
tipoIngreso,
|
|
terminoPago,
|
|
TipoCuentaPago,
|
|
NumeroCuentaPago,
|
|
IdentificadorExtranjero,
|
|
contactoComprador,
|
|
CorreoComprador,
|
|
DireccionComprador,
|
|
MunicipioComprador,
|
|
ProvinciaComprador,
|
|
FechaEntrega,
|
|
FechaOrdenCompra,
|
|
NumeroOrdenCompra,
|
|
CodigoInternoComprador,
|
|
nombreFile,
|
|
IndicadorNotaCredito,
|
|
NCFmodificado,
|
|
codigoModificacion,
|
|
fechaNCFmodificado
|
|
STRING
|
|
END RECORD
|
|
|
|
DEFINE despieceMem DYNAMIC ARRAY OF RECORD
|
|
id_etiqueta SMALLINT,
|
|
cod_n INT,
|
|
cod_grupo INT,
|
|
cod_tipo INT,
|
|
cod_sec INT,
|
|
lado_1 DEC(12, 5),
|
|
lado_2 DEC(12, 5),
|
|
lado_3 DEC(12, 5),
|
|
cantidad DEC(12, 5),
|
|
medida DEC(12, 5),
|
|
secuencia, id_despiece INT,
|
|
bodega SMALLINT
|
|
END RECORD
|
|
DEFINE container DYNAMIC ARRAY OF RECORD
|
|
id_etiqueta SMALLINT,
|
|
cod_n INT,
|
|
cod_grupo INT,
|
|
cod_tipo INT,
|
|
cod_sec INT,
|
|
lado_1 DEC(12, 5),
|
|
lado_2 DEC(12, 5),
|
|
lado_3 DEC(12, 5),
|
|
cantidad DEC(12, 5),
|
|
medida DEC(12, 5),
|
|
secuencia, id_despiece INT,
|
|
bodega SMALLINT
|
|
END RECORD
|
|
DEFINE moviD RECORD
|
|
area, cod_n, cod_Grupo, cod_tipo, cod_sec, descripcion, observacion STRING,
|
|
book VARCHAR(50),
|
|
tipos VARCHAR(50),
|
|
lado_1 DECIMAL(12, 5),
|
|
lado_2 DECIMAL(12, 5),
|
|
lado_3 DECIMAL(12, 5),
|
|
id_bodega, id_seccion1 INT,
|
|
d_seccion1 VARCHAR(50),
|
|
id_tramo1 INT,
|
|
id_fila, id_pos INT,
|
|
d_tramo1 VARCHAR(50),
|
|
id_producto VARCHAR(25),
|
|
tipo_material VARCHAR(30),
|
|
cantidad1, cantidad2, factor_conv DECIMAL(12, 5),
|
|
cod_mov INT,
|
|
control_transferencia_ubicaciones VARCHAR(2),
|
|
cod_mov_transferencia INT,
|
|
codigo STRING
|
|
|
|
END RECORD
|
|
DEFINE movi10 DYNAMIC ARRAY OF RECORD
|
|
area, cod_n, cod_Grupo, cod_tipo, cod_sec INT,
|
|
descripcion, observacion STRING,
|
|
book VARCHAR(50),
|
|
tipos VARCHAR(50),
|
|
lado_1 DECIMAL(12, 5),
|
|
lado_2 DECIMAL(12, 5),
|
|
lado_3 DECIMAL(12, 5),
|
|
id_bodega, id_seccion1 INT,
|
|
d_seccion1 VARCHAR(50),
|
|
id_tramo1 INT,
|
|
d_tramo1 VARCHAR(50),
|
|
id_fila, id_pos INT,
|
|
id_producto VARCHAR(25),
|
|
tipo_material VARCHAR(30),
|
|
cantidad1, cantidad2, factor_conv DECIMAL(12, 5),
|
|
cod_mov INT,
|
|
de_seccion, de_tramo INT,
|
|
codigo STRING
|
|
END RECORD
|
|
DEFINE movi10Dest DYNAMIC ARRAY OF RECORD
|
|
area, cod_n, cod_Grupo, cod_tipo, cod_sec INT,
|
|
descripcion, observacion STRING,
|
|
book VARCHAR(50),
|
|
tipos VARCHAR(50),
|
|
lado_1 DECIMAL(12, 5),
|
|
lado_2 DECIMAL(12, 5),
|
|
lado_3 DECIMAL(12, 5),
|
|
id_bodega, id_seccion1 INT,
|
|
d_seccion1 VARCHAR(50),
|
|
id_tramo1 INT,
|
|
d_tramo1 VARCHAR(50),
|
|
id_fila, id_pos INT,
|
|
id_producto VARCHAR(25),
|
|
tipo_material VARCHAR(30),
|
|
cantidad1, cantidad2, factor_conv DECIMAL(12, 5),
|
|
cod_mov INT,
|
|
de_seccion, de_tramo INT,
|
|
codigo STRING
|
|
END RECORD
|
|
|
|
DEFINE movi10Dest_JSON DYNAMIC ARRAY OF RECORD
|
|
area, cod_n, cod_Grupo, cod_tipo, cod_sec INT,
|
|
id_bodega, id_seccion1 INT,
|
|
id_tramo1 INT,
|
|
id_fila, id_pos INT,
|
|
cantidad1, cantidad2 DECIMAL(12, 5)
|
|
END RECORD
|
|
|
|
DEFINE documento_Detalle DYNAMIC ARRAY OF RECORD
|
|
indicadorFacturacion,
|
|
nombreItem,
|
|
indicadorBienoServicio,
|
|
cantidadItem,
|
|
precioUnitarioItem,
|
|
montoItem
|
|
STRING,
|
|
DescripcionItem VARCHAR(1000),
|
|
NumeroLinea INT
|
|
END RECORD
|
|
DEFINE jsonMovi STRING
|
|
|
|
DEFINE
|
|
num_cr_e,
|
|
num_doc_e,
|
|
factura_e,
|
|
num_doc_ret,
|
|
ordenx,
|
|
tmpnumero,
|
|
idtipo,
|
|
xnum_doc_c,
|
|
dias_factura,
|
|
pnumero_doc,
|
|
id_municipio_dgii,
|
|
id_provincia_dgii
|
|
INTEGER,
|
|
hacerdocumento BOOLEAN,
|
|
pperfil SMALLINT,
|
|
direccion_p VARCHAR(100),
|
|
pdescripmov VARCHAR(80),
|
|
xhas VARCHAR(6),
|
|
xtipo_orden, xfechaFirmaDigital VARCHAR(50),
|
|
nombre_sucursal VARCHAR(80),
|
|
existminima DYNAMIC ARRAY OF FLOAT,
|
|
existenciaact DYNAMIC ARRAY OF FLOAT,
|
|
porcientoControl DYNAMIC ARRAY OF FLOAT,
|
|
enviaCorreo VARCHAR(2),
|
|
enviaEmailProd DYNAMIC ARRAY OF CHAR(2),
|
|
estadoordenes VARCHAR(200),
|
|
xusername, xsmtphost, xsmtpport, xpassword STRING,
|
|
almacen_orden VARCHAR(10),
|
|
xhash, phash VARCHAR(6),
|
|
codigodgii, codigodgii_m VARCHAR(19),
|
|
descripcion_ncf VARCHAR(100),
|
|
desglose VARCHAR(1),
|
|
|
|
arr_iptb58 DYNAMIC ARRAY OF RECORD
|
|
area INT,
|
|
cod_n, cod_grupo, cod_tipo, cod_sec INT,
|
|
descripcion VARCHAR(100),
|
|
unidad_med VARCHAR(4),
|
|
cantidad_1, cantidad, cantidad_o1, cantidad1, factor_conv DEC(12, 5)
|
|
END RECORD,
|
|
arrcontrol_existencia DYNAMIC ARRAY OF CHAR(2)
|
|
|
|
DEFINE
|
|
factor_conv DYNAMIC ARRAY OF DECIMAL(12, 5),
|
|
cantidad_factura,
|
|
cantidad_devuelta,
|
|
total_medida,
|
|
cantidad_orden,
|
|
cantidad_recibida,
|
|
diferencia,
|
|
cantidadRequisicion,
|
|
Rcantidad_requisicion,
|
|
cantidad_orden1,
|
|
pcantidadConduce,
|
|
transito,
|
|
existencia,
|
|
reservado
|
|
DEC(12, 5)
|
|
|
|
DEFINE
|
|
ac_cli, reimpresion, pcerrada CHAR(1),
|
|
pnum_req, xcotizacion INTEGER,
|
|
pcontrol_cliente CHAR(3),
|
|
aplica_dev CHAR(2),
|
|
pcontrol_despacho,
|
|
pcontrol_transferencia,
|
|
chconduce,
|
|
control_devolucion,
|
|
pcontrol_departamento
|
|
CHAR(2),
|
|
procedimiento, PCCEMAIL VARCHAR(200),
|
|
TOemail STRING,
|
|
cuerpo_correo VARCHAR(230),
|
|
CCEmail, subject VARCHAR(450),
|
|
psec_vend INT,
|
|
almacen_destino, almacen_origen VARCHAR(40),
|
|
xbodega VARCHAR(30)
|
|
|
|
DEFINE
|
|
busca1, busca2, chitbis, _chitbis, prequisiciones CHAR(10),
|
|
pitbis, pdescuento, xporc_Desc DEC(12, 2)
|
|
|
|
DEFINE nombre_emp, nom_cli CHAR(30)
|
|
DEFINE p_num_doc INTEGER
|
|
DEFINE p_itbi, valor_fac, p_total DECIMAL(12, 2)
|
|
DEFINE
|
|
salir, via CHAR(1),
|
|
ptotalb, xdescuento DEC(12, 2)
|
|
|
|
DEFINE prtb09 RECORD LIKE prtb00009.*
|
|
DEFINE busca_v RECORD
|
|
sec_cliente INTEGER,
|
|
nombre CHAR(30)
|
|
END RECORD
|
|
DEFINE
|
|
despiece DYNAMIC ARRAY OF RECORD
|
|
id_etiqueta SMALLINT,
|
|
cod_n INT,
|
|
cod_grupo INT,
|
|
cod_tipo INT,
|
|
cod_sec INT,
|
|
lado_1 DEC(12, 5),
|
|
lado_2 DEC(12, 5),
|
|
lado_3 DEC(12, 5),
|
|
cantidad DEC(12, 5),
|
|
medida DEC(12, 5),
|
|
secuencia, id_despiece INT,
|
|
bodega SMALLINT
|
|
|
|
END RECORD,
|
|
cantidad_conduce, xcantidad2, xcantidad1 DEC(12, 5),
|
|
psucid INT,
|
|
fechaVencimiento DATE
|
|
|
|
DEFINE despieceDest DYNAMIC ARRAY OF RECORD
|
|
id_etiqueta SMALLINT,
|
|
cod_n INT,
|
|
cod_grupo INT,
|
|
cod_tipo INT,
|
|
cod_sec INT,
|
|
lado_1 DEC(12, 5),
|
|
lado_2 DEC(12, 5),
|
|
lado_3 DEC(12, 5),
|
|
cantidad DEC(12, 5),
|
|
medida DEC(12, 5),
|
|
secuencia, id_despiece INT,
|
|
bodega SMALLINT
|
|
|
|
END RECORD
|
|
DEFINE despiece_act DYNAMIC ARRAY OF RECORD
|
|
id_etiqueta SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
lado_1 DEC(12, 5),
|
|
lado_2 DEC(12, 5),
|
|
lado_3 DEC(12, 5),
|
|
cantidad DEC(12, 5),
|
|
medida DEC(12, 5),
|
|
secuencia INT
|
|
END RECORD
|
|
DEFINE arr_recibo RECORD
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
aplica_a LIKE cctb00001.aplica_a,
|
|
valor_pen DECIMAL(12, 2),
|
|
desc_p LIKE cctb00001.monto_desc,
|
|
val_desc DECIMAL(12, 2),
|
|
valor_pag DECIMAL(12, 2)
|
|
END RECORD
|
|
|
|
DEFINE fact_gral RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas,
|
|
--zona CHAR(3),
|
|
factura LIKE vetb00002.factura,
|
|
bodega SMALLINT,
|
|
--conduce LIKE vetb00002.conduce,
|
|
--fecha_conduce DATE,
|
|
--fecha_factura DATE,
|
|
--tipo_cliente LIKE vetb00002.tipo_cliente,
|
|
--sec_cliente LIKE vetb00002.sec_cliente,
|
|
--nombre CHAR(30),
|
|
direccion CHAR(80),
|
|
--ciudad CHAR(20),
|
|
--prima_us LIKE vetb00002.prima_us,
|
|
--porc_desc LIKE vetb00002.porc_desc,
|
|
--cond_pago LIKE vetb00002.cond_pago,
|
|
--orden INT,
|
|
--fecha_orden DATE,
|
|
--porc_itbi LIKE vetb00002.porc_itbi,
|
|
--sec_vend LIKE vetb00002.sec_vend,
|
|
--nombre_vend CHAR(60),
|
|
--cod_transp LIKE iptb00006.cod_transp,
|
|
--sec_transp LIKE iptb00006.sec_transp,
|
|
--cod_tarifa LIKE iptb00006.cod_tarifa,
|
|
--nombre_tran CHAR(30),
|
|
--fecha_embarque DATE,
|
|
--placa_transp LIKE iptb00006.placa,
|
|
--sub_total DECIMAL(12,2),
|
|
--desc_valor DECIMAL(12,2),
|
|
--itbi DECIMAL(12,2),
|
|
--total_fact DECIMAL(12,2)
|
|
fecha_despacho DATE
|
|
END RECORD
|
|
|
|
DEFINE
|
|
recibo RECORD
|
|
num_doc LIKE cctb00001.num_doc,
|
|
tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
sec_cliente LIKE cctb00001.sec_cliente,
|
|
cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
fecha_orig LIKE cctb00001.fecha_orig,
|
|
itbi DECIMAL(8, 2),
|
|
concepto CHAR(60)
|
|
END RECORD,
|
|
ptipoorden STRING,
|
|
sucnombre, direccion_sucursal, xnombre_provincia VARCHAR(100),
|
|
cantidadBultos, x2 INT,
|
|
ult_ncf, num_ncf, num_ncf_m, localidad INT
|
|
|
|
DEFINE
|
|
out_result, cod_mensaje INT,
|
|
out_msg STRING
|
|
|
|
DEFINE
|
|
normal,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
doble_on,
|
|
doble_off
|
|
CHAR(3),
|
|
usuarios, clave CHAR(80),
|
|
HANDLER om.SaxDocumentHandler,
|
|
salida VARCHAR(4)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("ipmt044.log")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
CALL ARG_VAL(4) RETURNING impresor1
|
|
|
|
CONNECT TO "marmotech" AS "SQL_E" USER usuarios USING clave
|
|
CONNECT TO "smarmotech" AS "SQL_C" USER usuarios USING clave
|
|
|
|
SET ISOLATION TO COMMITTED READ
|
|
|
|
SELECT * INTO p_companias.* FROM companias
|
|
SELECT controlOrdenesE
|
|
FROM seg0003
|
|
WHERE usuario = usuarios AND controlOrdenesE = "SI"
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET ptipoorden = 'ECOMMERCE'
|
|
ELSE
|
|
LET ptipoorden = "GENERAL"
|
|
END IF
|
|
|
|
SELECT a.sucid,
|
|
b.sucnombre,
|
|
b.direccion,
|
|
c.nombre_provincia,
|
|
b.telefono,
|
|
b.fax,
|
|
b.rnc,
|
|
a.cod_perfil,
|
|
c.id_dgii,
|
|
c.id_municipio_dgii
|
|
INTO localidad,
|
|
sucnombre,
|
|
direccion_sucursal,
|
|
xnombre_provincia,
|
|
p_companias.telefono,
|
|
p_companias.fax,
|
|
p_companias.rnc,
|
|
pperfil,
|
|
id_provincia_dgii,
|
|
id_municipio_dgii
|
|
FROM seg0001 a, sucursales b, vetb00020 c
|
|
WHERE a.usuario = usuarios
|
|
AND a.sucid = b.sucid
|
|
AND b.localidad = c.cod_provincia
|
|
|
|
CALL ipprmt044()
|
|
END MAIN
|
|
|
|
FUNCTION busca_cliente()
|
|
LET int_flag = FALSE
|
|
|
|
OPEN WINDOW cliente
|
|
AT 10, 9
|
|
WITH FORM "ipfmwd009"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 2)
|
|
CONSTRUCT BY NAME criterio ON a.tipo_cliente, a.sec_cliente, a.nombre
|
|
|
|
LET selec =
|
|
"SELECT a.tipo_cliente,a.sec_cliente,a.nombre FROM vetb00004 a ",
|
|
"WHERE a.status_t IS NULL AND ",
|
|
criterio CLIPPED,
|
|
"ORDER BY 1,2"
|
|
|
|
PREPARE comando3 FROM selec
|
|
DECLARE comp3 CURSOR FOR comando3
|
|
|
|
LET idx = 1
|
|
FOREACH comp3 INTO clientes[idx].*
|
|
LET idx = idx + 1
|
|
IF idx = 49 THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
END FOREACH
|
|
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY clientes TO s_cliente.*
|
|
LET idx = ARR_CURR()
|
|
CLOSE WINDOW cliente
|
|
END FUNCTION
|
|
|
|
FUNCTION ipprmt044()
|
|
DEFINE fecha CHAR(8)
|
|
DEFINE hora CHAR(5)
|
|
|
|
OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 24, PROMPT LINE 24
|
|
|
|
LET fecha = TODAY USING "dd/mm/yyyy"
|
|
LET hora = TIME
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2
|
|
DISPLAY p_companias.nombre CLIPPED AT 1, lj ATTRIBUTE(REVERSE, BLUE)
|
|
DISPLAY fecha AT 1, 70 ATTRIBUTE(BLUE)
|
|
DISPLAY hora AT 2, 73 ATTRIBUTE(BLUE)
|
|
DISPLAY "ipprmt044" AT 1, 3 ATTRIBUTE(BLUE)
|
|
DISPLAY "Otros Movimientos" AT 2, 30
|
|
DISPLAY "<Esc> Adiciona Registro" AT 3, 2 ATTRIBUTE(BLUE, REVERSE)
|
|
|
|
OPEN FORM ipfmmt044 FROM "ipfmmt044"
|
|
DISPLAY FORM ipfmmt044
|
|
|
|
CALL ipprad44()
|
|
END FUNCTION
|
|
|
|
FUNCTION ipprad44()
|
|
DEFINE
|
|
vexistencia, estado_req, siDespiece BOOLEAN,
|
|
control_produce VARCHAR(2)
|
|
|
|
DEFINE data RECORD
|
|
rnumeroDoc,
|
|
rcodMov,
|
|
rtipo_cliente,
|
|
num_oc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
bodega,
|
|
bodega_destino
|
|
INT,
|
|
nombre VARCHAR(100)
|
|
END RECORD
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
INPUT BY NAME otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
pnumero_Doc,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
idtipo,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
num_doc_ret,
|
|
pnum_req
|
|
ATTRIBUTE(WITHOUT DEFAULTS)
|
|
AFTER FIELD pnumero_doc
|
|
|
|
IF pnumero_doc IS NOT NULL THEN
|
|
SELECT a.cod_mov,
|
|
a.num_oc,
|
|
a.nombre,
|
|
a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.bodega,
|
|
a.bodega_destino
|
|
INTO otros_mov.cod_mov,
|
|
otros_mov.conduce_no,
|
|
otros_mov.descrip4,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino
|
|
FROM iptb00057 a
|
|
WHERE a.numero_doc = pnumero_doc
|
|
AND a.status_t IS NULL
|
|
AND a.estado = "AUTORIZADA"
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD pnumero_doc
|
|
END IF
|
|
|
|
DISPLAY BY NAME otros_mov.cod_mov,
|
|
pnumero_doc,
|
|
otros_mov.conduce_no,
|
|
otros_mov.descrip4,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino
|
|
|
|
END IF
|
|
ON ACTION reqautorizadas
|
|
CALL ipautorizadas(usuarios) RETURNING data.*
|
|
|
|
LET otros_mov.cod_mov = data.rcodMov
|
|
LET pnumero_doc = data.rnumeroDoc
|
|
LET otros_mov.conduce_no = data.num_oc
|
|
LET otros_mov.descrip4 = data.nombre
|
|
LET otros_mov.cod_sp = data.rtipo_cliente
|
|
LET otros_mov.cod_sp_sec = data.sec_cliente
|
|
IF data.bodega IS NOT NULL THEN
|
|
LET otros_mov.bodega = data.bodega
|
|
END IF
|
|
LET otros_mov.bodega_destino = data.bodega_destino
|
|
|
|
DISPLAY BY NAME otros_mov.cod_mov,
|
|
pnumero_doc,
|
|
otros_mov.conduce_no,
|
|
otros_mov.descrip4,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino
|
|
BEFORE INPUT
|
|
INITIALIZE otros_mov.* TO NULL
|
|
CALL tiposModificacion()
|
|
# PREPARACION PARA INSERTAR EN LAS TABLAS DESGLOSE
|
|
{ LET selec = "INSERT INTO iptb00052 (cod_n,cod_grupo,cod_tipo,cod_Sec,tipo_material,cantidad_minima,us_crea,fech_crea,
|
|
cantidadorden,num_doc,cod_mov,fecha,bookmatch,tipos)
|
|
SELECT cod_n,cod_grupo,cod_tipo,cod_Sec,tipo_material,cantidad_minima,
|
|
us_crea,fech_crea,cantidadorden,?,cod_mov,fecha,bookmatch,tipos
|
|
FROM tmpdesglose_master
|
|
WHERE num_doc = ? AND cod_mov = ? AND us_crea = ? AND
|
|
cod_n = ? AND cod_grupo = ? AND
|
|
cod_tipo = ? AND cod_sec = ?
|
|
"
|
|
PREPARE inst1 FROM selec
|
|
|
|
LET selec = "INSERT INTO iptb00050 (cod_n,cod_grupo,cod_tipo,cod_Sec,imagen,observacion,
|
|
lado_1,lado_2,lado_3,cantidad,
|
|
nombre_file,us_crea,fech_crea,id_producto,
|
|
cantidad2,cod_bodega,cod_seccion,cod_tramo,tono,calidad,num_doc,cod_mov)
|
|
SELECT cod_n,cod_grupo,cod_tipo,cod_Sec,imagen,observacion,
|
|
lado_1,lado_2,lado_3,cantidad,
|
|
nombre_file,us_crea,fech_crea,id_producto,
|
|
cantidad2,cod_bodega,cod_seccion,cod_tramo,tono,calidad,?,cod_mov
|
|
FROM tmpdesglose
|
|
WHERE num_doc = ? AND cod_mov = ? AND us_crea = ? AND
|
|
cod_n = ? AND cod_grupo = ? AND
|
|
cod_tipo = ? AND cod_sec = ?
|
|
"
|
|
PREPARE inst2 FROM selec }
|
|
--ESTO SE HACE EN EL SP
|
|
|
|
LET selec =
|
|
"SELECT ISNULL(a.material,0)+ISNULL(a.labor,0)+ISNULL(a.gastos,0) FROM iptb00004 a
|
|
WHERE a.ano = ? AND a.mes_fin=12 AND
|
|
a.cod_n = ? AND a.cod_grupo = ? AND
|
|
a.cod_tipo = ? AND a.cod_sec = ? AND a.status_t IS NULL
|
|
"
|
|
|
|
PREPARE bcosto FROM selec
|
|
|
|
CALL ipautorizadas(usuarios) RETURNING data.*
|
|
|
|
CALL piking(usuarios, clave, impresor, otros_mov.bodega, psucid)
|
|
|
|
LET otros_mov.cod_mov = data.rcodMov
|
|
LET pnumero_doc = data.rnumeroDoc
|
|
LET otros_mov.conduce_no = data.num_oc
|
|
LET otros_mov.descrip4 = data.nombre
|
|
LET otros_mov.cod_sp = data.rtipo_cliente
|
|
LET otros_mov.cod_sp_sec = data.sec_cliente
|
|
IF data.bodega IS NOT NULL THEN
|
|
LET otros_mov.bodega = data.bodega
|
|
END IF
|
|
|
|
LET otros_mov.bodega_destino = data.bodega_destino
|
|
|
|
LET otros_mov.fecha = TODAY
|
|
|
|
LET pnum_req = NULL
|
|
LET num_doc_ret = NULL
|
|
|
|
CALL despiece.clear()
|
|
|
|
LET otros_mov.cod_cia = 1
|
|
# IF pnumero_doc IS NULL THEN
|
|
|
|
SELECT a.bodega, a.sucid, b.ordenes
|
|
INTO otros_mov.bodega, psucid, almacen_orden
|
|
FROM seg0001 a
|
|
LEFT OUTER
|
|
JOIN intb00009 b
|
|
ON b.cod_bodega = a.bodega
|
|
WHERE a.usuario = usuarios
|
|
# END IF
|
|
LET k1 = '1'
|
|
CALL bodegas(k1)
|
|
LET k1 = '2'
|
|
CALL bodegas(k1)
|
|
DISPLAY BY NAME otros_mov.bodega
|
|
|
|
IF ptipoorden <> 'ECOMMERCE' THEN
|
|
IF otros_mov.cod_mov IS NULL OR otros_mov.cod_mov = 0 THEN
|
|
LET otros_mov.cod_mov = 30
|
|
END IF
|
|
|
|
ELSE
|
|
SELECT a.cod_mov
|
|
INTO otros_mov.cod_mov
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = 25
|
|
|
|
END IF
|
|
|
|
CALL cmovimientos()
|
|
|
|
DISPLAY BY NAME otros_mov.cod_mov,
|
|
pnumero_doc,
|
|
otros_mov.conduce_no,
|
|
otros_mov.descrip4,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino
|
|
|
|
NEXT FIELD cod_mov
|
|
{ COMENTARIO PARA EL CONTROL DEL DOCUMENTO DE RE-TRABAJO, SE VA A REALIZAR LUEGO DEL DOC DEVOLUCION}
|
|
{ AFTER FIELD num_doc_ret
|
|
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
|
|
IF num_doc_ret IS NULL THEN
|
|
CALL fgl_winmessage("ERROR","NO PUEDE DEJAR EN BLANCO NUMERO DOCUMENTO RE-TRABAJO","INFO")
|
|
NEXT FIELD num_doc_ret
|
|
END IF
|
|
END IF
|
|
IF num_doc_ret IS NOT NULL THEN
|
|
SELECT a.num_oc,a.tipo_cliente,a.sec_cliente,b.nombre,a.conduce_no,a.factura,a.num_req
|
|
INTO otros_mov.conduce_no,otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.descrip4,xconduce_no,
|
|
otros_mov.fact_no,pnum_req
|
|
FROM svtb00007 a,vetb00004 b
|
|
WHERE (a.num_doc = num_doc_ret) AND a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","DOCUMENTO RE-TRABAJO NO EXISTE","INFO")
|
|
NEXT FIELD num_doc_ret
|
|
END IF
|
|
IF otros_mov.fact_no IS NULL THEN
|
|
SELECT a.factura, a.fecha_factura INTO otros_mov.fact_no, fact_gral.fecha_despacho
|
|
FROM vetb00002 a WHERE (a.conduce = xconduce_no AND
|
|
a.tipo_cliente = otros_mov.cod_sp AND
|
|
a.sec_cliente = otros_mov.cod_sp_sec) AND
|
|
a.status_t IS NULL
|
|
ELSE
|
|
SELECT a.fecha_factura INTO fact_gral.fecha_despacho
|
|
FROM vetb00002 a WHERE (a.factura = otros_mov.fact_no AND
|
|
a.tipo_cliente = otros_mov.cod_sp AND
|
|
a.sec_cliente = otros_mov.cod_sp_sec) AND
|
|
a.status_t IS NULL
|
|
|
|
END IF
|
|
DISPLAY BY NAME otros_mov.fact_no,pnum_req,otros_mov.conduce_no
|
|
|
|
IF otros_mov.fact_no IS NULL THEN
|
|
NEXT FIELD fact_no
|
|
END IF
|
|
# CONSULTA QUE ESTE FORMULARIO NO EXISTA EN LA TABLA TRANSACCIONES INVENTARIOS
|
|
SELECT DISTINCT a.num_doc_retrabajo FROM iptb00006 a
|
|
WHERE a.num_doc_retrabajo = num_doc_ret AND
|
|
a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","DOCUMENTO RETRABAJO YA TIENE DEVOLUCION","INFO")
|
|
NEXT FIELD num_doc_ret
|
|
END IF
|
|
END IF
|
|
}
|
|
ON ACTION buscar
|
|
ATTRIBUTES(TEXT = "Busca Documento", IMAGE = "find")
|
|
LET reimpresion = "S"
|
|
CALL consulta()
|
|
ON ACTION bconduces
|
|
CALL conduces(
|
|
otros_mov.conduce_no)
|
|
RETURNING otros_mov.conduce_no, pnum_req, otros_mov.factura
|
|
DISPLAY BY NAME otros_mov.factura,
|
|
otros_mov.conduce_no,
|
|
pnum_req
|
|
ON ACTION buscacliente
|
|
IF INFIELD(cod_sp_sec) OR INFIELD(cod_sp) THEN
|
|
CALL busca_cliente()
|
|
LET otros_mov.cod_sp = clientes[idx].tipo_cliente
|
|
LET otros_mov.cod_sp_sec = clientes[idx].sec_cliente
|
|
LET otros_mov.descrip4 = clientes[idx].nombre
|
|
|
|
DISPLAY BY NAME otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.descrip4
|
|
|
|
END IF
|
|
|
|
AFTER FIELD cod_cia
|
|
IF otros_mov.cod_cia IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
|
|
NEXT FIELD cod_cia
|
|
END IF
|
|
|
|
IF otros_mov.cod_cia = 1 THEN
|
|
LET nombre_cia = p_companias.nombre
|
|
ELSE
|
|
LET nombre_cia = ""
|
|
END IF
|
|
DISPLAY BY NAME nombre_cia
|
|
|
|
AFTER FIELD pnum_req
|
|
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
|
|
IF pnum_req IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD pnum_req
|
|
END IF
|
|
|
|
SELECT DISTINCT a.num_req
|
|
FROM iptb00006 a
|
|
WHERE a.num_req = pnum_req AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD pnum_req
|
|
END IF
|
|
END IF
|
|
# IF pcontrol_cliente = 'SI' AND verificaRequisicion(pnum_req) THEN
|
|
# CALL msg(1675)
|
|
# NEXT FIELD cod_mov
|
|
|
|
# END IF
|
|
AFTER FIELD fecha
|
|
IF otros_mov.fecha > TODAY THEN
|
|
LET numero_msg = 189
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
LET p_fechas = otros_mov.fecha USING "dd/mm/yyyy"
|
|
|
|
CALL prd(p_fechas, usuarios) RETURNING bandera
|
|
LET otros_mov.fecha = p_fechas
|
|
DISPLAY BY NAME otros_mov.fecha
|
|
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER FIELD factura
|
|
# LET otros_mov.cod_sp = null
|
|
# LET otros_mov.cod_sp_sec = null
|
|
|
|
IF control_devolucion = "SI" THEN
|
|
IF otros_mov.factura IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
|
|
SELECT UNIQUE a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.orden,
|
|
MAX(b.num_req),
|
|
RTRIM(a.rnc),
|
|
a.fecha_factura
|
|
INTO otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.conduce_no,
|
|
pnum_req,
|
|
documento_encabezado.rncComprador,
|
|
fact_gral.fecha_despacho
|
|
FROM vetb00002 a, iptb00006 b
|
|
WHERE a.factura = otros_mov.factura
|
|
AND (a.tipo_cliente = b.cod_sp
|
|
AND a.sec_cliente = b.cod_sp_Sec)
|
|
AND a.factura = b.factura
|
|
AND b.cod_mov IN (30, 31, 55, 56, 94)
|
|
AND a.status_t IS NULL
|
|
AND b.num_req IS NOT NULL
|
|
AND CONVERT(CHAR(10), fecha_factura, 101)
|
|
>=
|
|
'01/01/2007'
|
|
GROUP BY a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.orden,
|
|
a.rnc,
|
|
a.fecha_factura
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 102
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
DISPLAY BY NAME otros_mov.conduce_no,
|
|
pnum_req,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec
|
|
# CONTROL FECHA
|
|
IF otros_mov.fecha < fact_gral.fecha_despacho THEN
|
|
CALL msg(64)
|
|
NEXT FIELD factura
|
|
END IF
|
|
# CONTROL `
|
|
LET cantidad_factura = 0
|
|
LET cantidad_devuelta = 0
|
|
SELECT SUM(a.cantidad)
|
|
INTO cantidad_factura
|
|
FROM vetb00003 a
|
|
WHERE a.factura = otros_mov.factura
|
|
AND a.status_t IS NULL
|
|
AND a.fech_crea > '2009-01-01 08:00'
|
|
|
|
SELECT SUM(a.cantidad_2)
|
|
INTO cantidad_devuelta
|
|
FROM iptb00006 a
|
|
WHERE a.fact_no = otros_mov.factura
|
|
AND a.status_t IS NULL
|
|
AND a.fech_crea > '2009-01-01 08:00'
|
|
AND a.cod_mov IN (12, 13)
|
|
|
|
IF cantidad_devuelta + .05 > cantidad_factura THEN
|
|
LET numero_msg = 238
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
END IF
|
|
{
|
|
IF otros_mov.fact_no is not null THEN
|
|
IF otros_mov.cod_mov = 32 THEN
|
|
|
|
SELECT unique cod_n FROM iptb00006
|
|
WHERE fact_no = otros_mov.fact_no and cod_mov = otros_mov.cod_mov and
|
|
CONVERT(CHAR(10), fecha,101) >= "01011994" AND status_t is null
|
|
|
|
IF status != NOTFOUND THEN
|
|
LET numero_msg = 103
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fact_no
|
|
END IF
|
|
END IF
|
|
END IF
|
|
}
|
|
DISPLAY BY NAME otros_mov.cod_sp, otros_mov.cod_sp_sec
|
|
|
|
AFTER FIELD cod_transp
|
|
IF otros_mov.cod_mov = 30
|
|
OR otros_mov.conduce_no = 31
|
|
OR otros_mov.cod_mov = 55
|
|
OR otros_mov.cod_mov = 12
|
|
OR otros_mov.cod_mov = 13 THEN
|
|
|
|
IF otros_mov.cod_transp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_transp
|
|
END IF
|
|
END IF
|
|
AFTER FIELD sec_transp
|
|
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
|
|
IF otros_mov.sec_transp IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD sec_transp
|
|
END IF
|
|
END IF
|
|
IF pcontrol_despacho = "SI"
|
|
OR pcontrol_transferencia = "SI" THEN
|
|
IF otros_mov.sec_transp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_transp
|
|
END IF
|
|
SELECT nombre
|
|
INTO descrip2
|
|
FROM vetb00015
|
|
WHERE cod_transp = otros_mov.cod_transp
|
|
AND sec_transp = otros_mov.sec_transp
|
|
AND status_t IS NULL
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_transp
|
|
END IF
|
|
DISPLAY BY NAME descrip2
|
|
END IF
|
|
|
|
AFTER FIELD cod_tarifa
|
|
IF otros_mov.cod_tarifa IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
# NEXT FIELD cod_tarifa
|
|
END IF
|
|
SELECT descrip
|
|
INTO descrip1
|
|
FROM vetb00023
|
|
WHERE cod_tarifa = otros_mov.cod_tarifa AND status_t IS NULL
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_tarifa
|
|
END IF
|
|
DISPLAY BY NAME descrip1
|
|
|
|
# ON ACTION piking
|
|
# CALL piking(usuarios,clave,impresor,otros_mov.bodega,psucid)
|
|
|
|
BEFORE FIELD num_doc
|
|
LET tmpnumero = 0
|
|
SELECT a.num_doc
|
|
INTO tmpnumero
|
|
FROM iptb00043 a
|
|
WHERE usuario = usuarios
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO iptb00043 VALUES(1, usuarios)
|
|
LET tmpnumero = 1
|
|
ELSE
|
|
LET tmpnumero = tmpnumero + 1
|
|
UPDATE iptb00043
|
|
SET num_doc = tmpnumero
|
|
WHERE usuario = usuarios
|
|
END IF
|
|
|
|
LET otros_mov.num_doc = tmpnumero
|
|
DISPLAY BY NAME otros_mov.num_doc
|
|
|
|
LET otros_mov.fecha = TODAY
|
|
DISPLAY BY NAME otros_mov.fecha
|
|
|
|
AFTER FIELD cod_mov
|
|
|
|
CALL despiece.clear()
|
|
LET pcontrol_cliente = NULL
|
|
LET Pcontrol_transferencia = NULL
|
|
SELECT a.status_mov,
|
|
a.control_clientes,
|
|
a.control_despacho,
|
|
a.control_devolucion,
|
|
a.control_transferencia,
|
|
a.control_departamento,
|
|
a.descrip_mov,
|
|
a.requisiciones,
|
|
a.control_produccion
|
|
INTO status_m,
|
|
pcontrol_cliente,
|
|
pcontrol_despacho,
|
|
control_devolucion,
|
|
Pcontrol_transferencia,
|
|
pcontrol_departamento,
|
|
otros_mov.descrip_mov,
|
|
prequisiciones,
|
|
control_produce
|
|
FROM iptb00005 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov AND a.status_t IS NULL
|
|
|
|
IF status >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
IF control_devolucion = 'SI' THEN
|
|
LET aplica_dev = 1
|
|
LET idtipo = 1
|
|
DISPLAY BY NAME aplica_Dev, idtipo
|
|
END IF
|
|
IF prequisiciones = "SI"
|
|
AND (pnumero_doc IS NULL OR pnumero_doc = 0) THEN
|
|
CALL msg(203)
|
|
NEXT FIELD pnumero_Doc
|
|
END IF
|
|
IF pcontrol_transferencia = 'SI' THEN
|
|
LET k1 = '2'
|
|
ELSE
|
|
LET k1 = '1'
|
|
END IF
|
|
|
|
CALL bodegas(k1)
|
|
|
|
SELECT num_doc
|
|
INTO otros_mov.num_doc
|
|
FROM iptb00007
|
|
WHERE cod_mov = otros_mov.cod_mov
|
|
AND bodega = otros_mov.bodega
|
|
|
|
IF otros_mov.num_Doc IS NULL THEN
|
|
LET otros_mov.num_doc = 1
|
|
END IF
|
|
# CONTROL CODIGO ENTRADA TRANSFERENCIA
|
|
SELECT a.codigo_mov_transferencia
|
|
FROM iptb00005 a
|
|
WHERE a.codigo_mov_transferencia = otros_mov.cod_mov
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"NO PUEDES USAR EL CODIGO QUE VA A RECIBIR LA TRANSFERENCIA",
|
|
"INFO")
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
LET otros_mov.num_Doc = otros_mov.num_doc + 1
|
|
|
|
DISPLAY BY NAME otros_mov.num_doc
|
|
|
|
DISPLAY BY NAME otros_mov.bodega
|
|
--C0NTROL DESPACHO
|
|
LET pnum_req = NULL
|
|
IF pcontrol_despacho = "SI" THEN
|
|
TRY
|
|
CALL visualizacion_despacho()
|
|
RETURNING otros_mov.conduce_no,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
pnum_req
|
|
CATCH
|
|
LET numero_msg = 15
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END TRY
|
|
IF Int_flag THEN
|
|
LET int_flag = FALSE
|
|
CALL msg(2)
|
|
DELETE FROM iptbexistencia WHERE us_crea = usuarios
|
|
RETURN
|
|
END IF
|
|
IF otros_mov.cod_sp IS NULL THEN
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
IF otros_mov.cod_sp_sec IS NULL THEN
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
END IF
|
|
|
|
{ CHEQUEO DE PERMISOS PARA EL USUARIO}
|
|
SELECT a.cod_mov
|
|
FROM iptb00023 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov AND a.usuario = usuarios
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 139
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
IF otros_mov.cod_mov = 35 OR otros_mov.cod_mov = 10 THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"NO PUEDES EMITIR ESTE TIPO DE DOCUMENTO EN ESTE PROGRAMA",
|
|
"INFO")
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
# IF otros_mov.cod_mov = 32 or
|
|
# otros_mov.cod_mov = 12
|
|
# THEN
|
|
# NEXT FIELD num_doc_ret
|
|
# ELSE
|
|
# NEXT FIELD cod_transp
|
|
# END IF
|
|
AFTER FIELD bodega
|
|
IF otros_mov.bodega IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
|
|
SELECT UNIQUE a.usuario
|
|
FROM iptb00048 a
|
|
WHERE a.bodega = otros_mov.bodega AND a.usuario = usuarios
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(503)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
AFTER FIELD cod_mov1
|
|
IF otros_mov.entrada IS NOT NULL THEN
|
|
IF otros_mov.cod_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD entrada
|
|
END IF
|
|
SELECT a.descrip_mov
|
|
INTO otros_mov.descrip_mov1
|
|
FROM iptb00005 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov1
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov1
|
|
END IF
|
|
DISPLAY BY NAME otros_mov.descrip_mov1
|
|
END IF
|
|
|
|
BEFORE FIELD conduce_no
|
|
IF pcontrol_despacho = "SI" THEN
|
|
IF otros_mov.bodega IS NULL THEN
|
|
LET otros_mov.bodega = 1
|
|
DISPLAY BY NAME otros_mov.bodega
|
|
END IF
|
|
|
|
SELECT UNIQUE a.cod_mov
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = otros_mov.cod_sp
|
|
AND a.cod_mov = otros_mov.cod_mov
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 386
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT a.nombre
|
|
INTO otros_mov.descrip4
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = otros_mov.cod_sp
|
|
AND a.sec_cliente = otros_mov.cod_sp_sec
|
|
|
|
DISPLAY BY NAME otros_mov.cod_sp,
|
|
otros_mov.cod_sp_Sec,
|
|
otros_mov.descrip4
|
|
NEXT FIELD detalle
|
|
END IF
|
|
AFTER FIELD conduce_no
|
|
LET ordenx = NULL
|
|
LET pnum_req = NULL
|
|
IF otros_mov.conduce_no IS NOT NULL THEN
|
|
|
|
LET ordenx = otros_mov.conduce_no
|
|
LET pcerrada = 'N'
|
|
SELECT a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.cerrada,
|
|
a.cotizacion_no,
|
|
a.tipo_orden
|
|
INTO otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
pcerrada,
|
|
xcotizacion,
|
|
xtipo_orden
|
|
FROM prtb00012 a
|
|
WHERE a.num_oc = ordenx AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
SELECT a.nombre
|
|
INTO otros_mov.descrip4
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = otros_mov.cod_sp
|
|
AND a.sec_cliente = otros_mov.cod_sp_sec
|
|
|
|
DISPLAY BY NAME otros_mov.cod_sp,
|
|
otros_mov.cod_sp_Sec,
|
|
otros_mov.descrip4
|
|
|
|
IF pcontrol_despacho = "SI" THEN
|
|
IF pcerrada = "S" THEN
|
|
LET numero_msg = 74
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME otros_mov.cod_sp, otros_mov.cod_sp_sec
|
|
IF otros_mov.cod_mov = 44 THEN
|
|
IF xtipo_orden <> 'REPOSICION' THEN
|
|
CALL fgl_Winmessage(
|
|
"INFO",
|
|
"LA ORDEN DEBE SER DE REPOSICION",
|
|
"INFO")
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
IF otros_mov.cod_mov = 30
|
|
OR otros_mov.conduce_no = 31
|
|
OR otros_mov.cod_mov = 55 THEN
|
|
IF otros_mov.conduce_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
END IF
|
|
|
|
NEXT FIELD detalle
|
|
BEFORE FIELD cod_sp
|
|
IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN
|
|
CALL busca_vend()
|
|
LET otros_mov.cod_sp = 12
|
|
LET otros_mov.cod_sp_sec = busca_v.sec_cliente
|
|
LET otros_mov.descrip4 = busca_v.nombre
|
|
DISPLAY BY NAME otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.descrip4
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
|
|
AFTER FIELD cod_sp
|
|
IF ac_cli = "S" AND otros_mov.cod_sp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
IF pcontrol_despacho = "SI" THEN
|
|
IF pcontrol_cliente = "SI" THEN
|
|
SELECT a.cod_mov
|
|
FROM vetb00060 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov
|
|
AND a.tipo_cliente = otros_mov.cod_sp
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(240)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
END IF
|
|
AFTER FIELD cod_sp_sec
|
|
IF ac_cli = "S" AND otros_mov.cod_sp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
IF otros_mov.cod_mov = 12 THEN
|
|
IF otros_mov.cod_sp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
|
|
IF otros_mov.cod_sp_sec IS NOT NULL THEN
|
|
|
|
SELECT a.nombre, b.sec_vend
|
|
INTO otros_mov.descrip4, psec_vend
|
|
FROM vetb00004 a, vetb00028 b
|
|
WHERE a.tipo_cliente = otros_mov.cod_sp
|
|
AND a.sec_cliente = otros_mov.cod_sp_sec
|
|
AND a.tipo_cliente = b.tipo_cliente
|
|
AND a.sec_cliente = b.sec_cliente
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
DISPLAY BY NAME otros_mov.descrip4, psec_vend
|
|
|
|
IF otros_mov.factura IS NOT NULL THEN
|
|
SELECT sec_cliente
|
|
FROM vetb00002
|
|
WHERE factura = otros_mov.factura
|
|
AND sec_cliente = otros_mov.cod_sp_sec
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 237
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN
|
|
|
|
SELECT UNIQUE sec_cliente
|
|
FROM vetb00033
|
|
WHERE sec_cliente = otros_mov.cod_sp_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
BEFORE FIELD entrada
|
|
IF otros_mov.cod_mov = 30
|
|
OR otros_mov.cod_mov = 31
|
|
OR otros_mov.cod_mov = 55 THEN
|
|
IF otros_mov.entrada IS NULL THEN
|
|
# IF otros_mov.entrada IS NOT NULL THEN
|
|
SELECT MAX(a.num_doc), MAX(a.cod_mov)
|
|
INTO otros_mov.entrada, otros_mov.cod_mov1
|
|
FROM iptb00006 a
|
|
WHERE (a.num_oc = ordenx)
|
|
AND (a.cod_mov IN (70, 71, 72))
|
|
AND a.status_t IS NULL
|
|
# END IF
|
|
|
|
DISPLAY BY NAME otros_mov.entrada, otros_mov.cod_mov1
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD entrada
|
|
|
|
IF otros_mov.entrada IS NOT NULL THEN
|
|
SELECT UNIQUE a.num_doc
|
|
FROM iptb00006 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov1
|
|
AND a.num_doc = otros_mov.entrada
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD entrada
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD departamento
|
|
IF pcontrol_departamento = "SI" THEN
|
|
IF otros_mov.departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
DISPLAY "DEPARTAMENTO AFTER FIELD: ",
|
|
pcontrol_departamento
|
|
NEXT FIELD departamento
|
|
END IF
|
|
SELECT a.nom_dpto
|
|
INTO otros_mov.nombre_depto
|
|
FROM adtb00001 a
|
|
WHERE a.departamento = otros_mov.departamento
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
DISPLAY "DEPARTAMENTO AFTER FIELD NOT FOUND 1: ",
|
|
pcontrol_departamento
|
|
NEXT FIELD departamento
|
|
END IF
|
|
DISPLAY BY NAME otros_mov.nombre_depto,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec
|
|
ELSE
|
|
IF otros_mov.departamento IS NOT NULL THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"ESTE CODIGO DE MOVIMIENTO NO SE LE PUEDE COLOCAR DEPARTAMENTO",
|
|
"INFO")
|
|
NEXT FIELD departamento
|
|
END IF
|
|
END IF
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
CALL msg(2)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
LET pano = YEAR(otros_mov.fecha)
|
|
IF prequisiciones = "SI"
|
|
AND (pnumero_doc IS NULL OR pnumero_doc = 0) THEN
|
|
CALL msg(203)
|
|
NEXT FIELD pnumero_Doc
|
|
END IF
|
|
# IF pcontrol_cliente = 'SI' AND NOT verificaRequisicion(pnum_req) THEN
|
|
# CALL msg(1675)
|
|
# NEXT FIELD cod_mov
|
|
# END IF
|
|
IF pcontrol_departamento = "SI" THEN
|
|
IF otros_mov.departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
DISPLAY "DEPARTAMENTO AFTER INPUT 1: ",
|
|
pcontrol_departamento
|
|
NEXT FIELD departamento
|
|
END IF
|
|
SELECT a.nom_dpto
|
|
INTO otros_mov.nombre_depto
|
|
FROM adtb00001 a
|
|
WHERE a.departamento = otros_mov.departamento
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
DISPLAY "DEPARTAMENTO AFTER INPUT NOT FOUND 2: ",
|
|
pcontrol_departamento
|
|
NEXT FIELD departamento
|
|
END IF
|
|
DISPLAY BY NAME otros_mov.nombre_depto,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec
|
|
ELSE
|
|
IF otros_mov.departamento IS NOT NULL THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"ESTE CODIGO DE MOVIMIENTO NO SE LE PUEDE COLOCAR DEPARTAMENTO",
|
|
"INFO")
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
END IF
|
|
# CONTROL CODIGO ENTRADA TRANSFERENCIA
|
|
SELECT a.codigo_mov_transferencia
|
|
FROM iptb00005 a
|
|
WHERE a.codigo_mov_transferencia = otros_mov.cod_mov
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"NO PUEDES USAR EL CODIGO QUE VA A RECIBIR LA TRANSFERENCIA",
|
|
"INFO")
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
#--------------------- CONTROL DESPACHOS -------------------------------------------------
|
|
IF pcontrol_despacho = "SI" THEN
|
|
IF pcontrol_cliente = "SI" THEN
|
|
IF otros_mov.cod_sp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
IF ptipoorden = 'ECOMMERCE' THEN
|
|
SELECT a.sec_transp
|
|
FROM vetb00015 a
|
|
WHERE a.cod_transp = otros_mov.cod_transp
|
|
AND a.sec_transp = otros_mov.sec_transp
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD cod_transp
|
|
END IF
|
|
SELECT a.cantidad_bultos
|
|
INTO cantidadBultos
|
|
FROM iptb00056 a
|
|
WHERE a.num_oc = ordenx
|
|
|
|
IF otros_mov.detalle IS NULL
|
|
OR LENGTH(otros_mov.detalle) < 8 THEN
|
|
LET otros_mov.detalle =
|
|
'CONDUCE RELACIONADO CON TIENDA ONLINE, LA ORDEN CONTIENE ',
|
|
cantidadBultos USING "<<<",
|
|
' BULTOS '
|
|
|
|
ELSE
|
|
LET otros_mov.detalle =
|
|
otros_mov.detalle CLIPPED,
|
|
" CONTIENE ",
|
|
cantidadBultos USING "<<<",
|
|
' BULTOS '
|
|
END IF
|
|
|
|
DISPLAY BY NAME otros_mov.detalle
|
|
END IF
|
|
#--------------------- TERMINO DE ECOMMERCE ------------------------------------------------------
|
|
SELECT a.cod_mov
|
|
FROM vetb00060 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov
|
|
AND a.tipo_cliente = otros_mov.cod_sp
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(240)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
#---------------- TERMINO CONTROL CLIENTE ----------------------------------
|
|
# CONTROL ORDEN PERTENEZCA A LA REQUISICION
|
|
SELECT DISTINCT a.num_oc
|
|
FROM cctb00026 a
|
|
WHERE a.num_oc = otros_mov.conduce_no
|
|
AND a.num_req = pnum_req
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(1673)
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
END IF
|
|
#----------------- TERMINO CONTROL DESPACHO ----------------------------------
|
|
|
|
IF otros_mov.bodega IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
IF control_devolucion = "SI" THEN
|
|
IF aplica_dev IS NULL THEN
|
|
NEXT FIELD aplica_dev
|
|
END IF
|
|
IF idtipo IS NULL OR idtipo = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD idtipo
|
|
END IF
|
|
END IF
|
|
IF Pcontrol_transferencia = 'SI' THEN
|
|
IF otros_mov.bodega_destino IS NULL
|
|
OR otros_mov.bodega_destino = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega_destino
|
|
END IF
|
|
IF otros_mov.sec_transp IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD sec_transp
|
|
END IF
|
|
IF otros_mov.placa IS NULL THEN
|
|
END IF
|
|
END IF
|
|
|
|
IF otros_mov.bodega IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
|
|
SELECT UNIQUE a.usuario
|
|
FROM iptb00048 a
|
|
WHERE a.bodega = otros_mov.bodega AND a.usuario = usuarios
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"USTED NO TIENE PERMISOS PARA UTILIZAR BODEGA",
|
|
"INFO")
|
|
NEXT FIELD bodega
|
|
END IF
|
|
# BUSCA LOS ITEMS QUE TIENE LA REQUISICION
|
|
|
|
IF pnumero_doc > 0 THEN
|
|
|
|
DECLARE buscar_requisicion CURSOR FOR
|
|
SELECT a.area,
|
|
b.nombre_area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.cantidad_1,
|
|
a.cantidad_2,
|
|
a.cantidad_2,
|
|
a.unidad_med,
|
|
a.descripcion,
|
|
a.cantidad_1,
|
|
a.cantidad_2,
|
|
'',
|
|
''
|
|
FROM iptb00058 a, prtb00016 b
|
|
WHERE a.numero_doc = pnumero_doc
|
|
AND b.area_num = a.area
|
|
|
|
LET idx = 1
|
|
FOREACH buscar_requisicion INTO movi2[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
ELSE
|
|
IF otros_mov.conduce_no IS NOT NULL THEN
|
|
|
|
LET ordenx = otros_mov.conduce_no
|
|
|
|
SELECT a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.cerrada,
|
|
a.cotizacion_no,
|
|
a.sec_vend,
|
|
a.tipo_orden
|
|
INTO otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
pcerrada,
|
|
xcotizacion,
|
|
psec_vend,
|
|
xtipo_orden
|
|
FROM prtb00012 a
|
|
WHERE a.num_oc = ordenx AND a.status_t IS NULL
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
|
|
SELECT a.nombre, b.sec_vend
|
|
INTO otros_mov.descrip4
|
|
FROM vetb00004 a, vetb00028 b
|
|
WHERE a.tipo_cliente = otros_mov.cod_sp
|
|
AND a.sec_cliente = otros_mov.cod_sp_sec
|
|
AND a.tipo_cliente = b.tipo_cliente
|
|
AND a.sec_cliente = b.sec_cliente
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
SELECT a.mensaje
|
|
INTO direccion_p
|
|
FROM cctb00029 a
|
|
WHERE a.num_req = pnum_req
|
|
|
|
DISPLAY BY NAME otros_mov.conduce_no,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_Sec,
|
|
pnum_req,
|
|
direccion_p,
|
|
psec_vend,
|
|
xcotizacion,
|
|
otros_mov.descrip4,
|
|
psec_Vend
|
|
|
|
IF otros_mov.cod_mov = 44 THEN
|
|
IF xtipo_orden <> 'REPOSICION' THEN
|
|
CALL fgl_Winmessage(
|
|
"INFO",
|
|
"LA ORDEN DEBE SER DE REPOSICION",
|
|
"INFO")
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
IF opc = "YES" OR opc IS NULL THEN
|
|
CALL movi2.clear()
|
|
|
|
END IF
|
|
LET chconduce = 'N'
|
|
# ESTA DECICION SE COMENTO EN FECHA 30/1/2026. EL OBJETIVO ES USAR LA PROPIEDAD control_produccion de la
|
|
# tabla iptb00005 en lugar de los codigos hardcode
|
|
# IF otros_mov.conduce_no IS NOT NULL AND (otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR
|
|
# otros_mov.cod_mov = 72 OR otros_mov.cod_mov = 79) THEN
|
|
IF control_produce = 'SI' THEN
|
|
DECLARE busca_orden CURSOR FOR
|
|
SELECT a.area,
|
|
c.nombre_area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
'0',
|
|
'0',
|
|
a.cantidad,
|
|
b.unidad_med,
|
|
b.descrip_esp
|
|
FROM prtb00013 a, iptb00002 b, prtb00016 c
|
|
WHERE a.num_oc = ordenx
|
|
AND c.area_num = a.area
|
|
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 idx = 1
|
|
FOREACH busca_orden INTO movi2[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF otros_mov.entrada IS NOT NULL THEN
|
|
DECLARE busca_20 CURSOR FOR
|
|
SELECT a.area,
|
|
c.nombre_area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
'0',
|
|
'0',
|
|
a.cantidad_2,
|
|
b.unidad_med,
|
|
b.descrip_esp
|
|
FROM iptb00006 a, iptb00002 b, prtb00016 c
|
|
WHERE a.conduce_no = ordenx
|
|
AND c.area_num = a.area
|
|
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_mov = otros_mov.cod_mov1
|
|
AND a.num_doc = otros_mov.entrada
|
|
AND a.status_t IS NULL
|
|
|
|
LET idx = 1
|
|
FOREACH busca_20 INTO movi2[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
LET chconduce = 'N'
|
|
IF otros_mov.conduce_no IS NOT NULL
|
|
AND (otros_mov.cod_mov = 30
|
|
OR otros_mov.cod_mov = 31
|
|
OR otros_mov.cod_mov = 55
|
|
OR otros_mov.cod_mov = 56) THEN
|
|
LET chconduce = 'S'
|
|
IF otros_mov.entrada IS NOT NULL THEN
|
|
DECLARE busca_entrada CURSOR FOR
|
|
SELECT c.area,
|
|
d.nombre_area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
c.cantidad_1,
|
|
c.cantidad,
|
|
c.cantidad * - 1,
|
|
b.unidad_med,
|
|
b.descrip_esp,
|
|
a.codigo_bloque,
|
|
c.id_kit
|
|
FROM iptb00006 a,
|
|
iptb00002 b,
|
|
cctb00026 c,
|
|
prtb00016 d
|
|
WHERE a.conduce_no = ordenx
|
|
AND a.status_t IS NULL
|
|
AND a.num_Doc = otros_mov.entrada
|
|
AND d.area_num = c.area
|
|
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 = C.cod_n
|
|
AND a.cod_grupo = c.cod_grupo
|
|
AND a.cod_tipo = c.cod_tipo
|
|
AND a.cod_sec = c.cod_sec
|
|
AND a.area = c.area
|
|
AND c.num_req = pnum_req
|
|
|
|
LET idx = 1
|
|
|
|
FOREACH busca_entrada INTO movi2[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
END IF
|
|
|
|
IF otros_mov.entrada IS NULL THEN
|
|
DECLARE busca_orden1 CURSOR FOR
|
|
SELECT UNIQUE a.area,
|
|
d.nombre_area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
c.cantidad_1,
|
|
c.cantidad,
|
|
c.cantidad,
|
|
b.unidad_med,
|
|
b.descrip_esp,
|
|
' ',
|
|
c.id_kit
|
|
FROM prtb00013 a,
|
|
iptb00002 b,
|
|
cctb00026 c,
|
|
prtb00016 d
|
|
WHERE a.num_oc = ordenx
|
|
AND d.area_num = a.area
|
|
AND a.status_t IS NULL
|
|
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 = C.cod_n
|
|
AND a.cod_grupo = c.cod_grupo
|
|
AND a.cod_tipo = c.cod_tipo
|
|
AND a.cod_sec = c.cod_sec
|
|
AND a.area = c.area
|
|
AND c.num_req = pnum_req
|
|
|
|
LET idx = 1
|
|
FOREACH busca_orden1 INTO movi2[idx].*
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
|
|
END IF
|
|
IF control_devolucion = "SI" THEN
|
|
IF otros_mov.conduce_no IS NULL THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"DEBES DIGITAR NUMERO DE ORDEN DE PEDIDOS",
|
|
"INFO")
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
IF num_doc_ret IS NULL THEN
|
|
|
|
IF otros_mov.factura IS NULL THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"FACTURA ESTA EN BLANCO, FAVOR DE COLOCAR NUMERO DE FACTURA",
|
|
"INFO")
|
|
NEXT FIELD factura
|
|
END IF
|
|
LET selec =
|
|
"SELECT a.area,'',a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp
|
|
FROM vetb00003 a,iptb00002 b
|
|
WHERE (a.factura = ", otros_mov.factura, " 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.status_t IS NULL "
|
|
# ELSE
|
|
# LET selec = "SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp
|
|
# FROM svtb00008 a,iptb00002 b
|
|
# WHERE a.num_doc = ",num_doc_ret," and a.status_t IS NULL 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)"
|
|
|
|
END IF
|
|
PREPARE devoluciones FROM selec
|
|
DECLARE busca_dev CURSOR FOR devoluciones
|
|
|
|
LET idx = 1
|
|
FOREACH busca_dev INTO movi2[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
END IF
|
|
END INPUT
|
|
|
|
INPUT ARRAY movi2 FROM s_movi1.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
LET decide = NULL
|
|
LET selec_pt = NULL
|
|
LET hacerdocumento = TRUE
|
|
|
|
# Este BEFORE FIELD estaba en comentario por disposicion de alguien hace algun
|
|
# tiempo y ahora no se sabe porque se determino que cuando usted hace una
|
|
# devolucion le permita al usuario modificar el codigo del producto
|
|
|
|
# Hoy 13 de noviembre de 1993 el Ing. de informatica dispuso que
|
|
# cuando sea una devolucion a una factura no se permitiera la actualizacion
|
|
# del codigo del producto
|
|
ON ACTION ordenDisponible ATTRIBUTE(TEXT = "Disponible")
|
|
IF movi2[p_act].cod_Sec IS NOT NULL THEN
|
|
CALL busca_ordenes_reservadas(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_Sec)
|
|
END IF
|
|
{ BEFORE ROW
|
|
LET p_act = arr_curr()
|
|
LET scr_l = scr_line()
|
|
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
|
|
NEXT FIELD cantidad_1
|
|
END IF}
|
|
|
|
ON ACTION despiece ATTRIBUTE(TEXT = "Despiece")
|
|
LET p_act = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
SELECT UNIQUE a.cod_n
|
|
FROM iptb00027 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 399
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
IF movi2[p_act].area IS NULL THEN
|
|
LET movi2[p_act].area = 1
|
|
# DISPLAY movi2[p_act].area TO smovi1[scr_l].area
|
|
END IF
|
|
CALL despiece(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].area)
|
|
# CALL adddespiece()
|
|
# BUSCA LA EXISTENCIA
|
|
LET p_act = arr_curr()
|
|
IF status_m = "2" THEN
|
|
|
|
LET hacerdocumento = TRUE
|
|
LET arrcontrol_existencia[p_act] =
|
|
p_iptb02.control_existencia
|
|
|
|
IF p_iptb02.control_existencia = "SI" THEN
|
|
CALL existencia(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].cantidad_2,
|
|
p_act,
|
|
otros_mov.bodega)
|
|
RETURNING vexistencia, movi2[p_act].existencia
|
|
|
|
DISPLAY movi2[p_act].cantidad_2
|
|
TO s_movi1[scr_l].cantidad_2
|
|
|
|
IF vexistencia THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR", "CANTIDAD EXCEDE EXISTENCIA", "STOP")
|
|
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
CALL disponibles(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
TODAY)
|
|
RETURNING cantidad_orden1,
|
|
pcantidadConduce,
|
|
transito,
|
|
existencia,
|
|
reservado,
|
|
valororden
|
|
LET cantidad_orden1 = cantidad_orden1 + pcantidadConduce
|
|
|
|
# LET movi2[p_act].existencia=existencia
|
|
|
|
# LET existencia=existencia-cantidad_orden1
|
|
# LET movi2[p_act].disponible=existencia
|
|
DISPLAY movi2[p_act].existencia
|
|
TO s_movi1[scr_l].existencia
|
|
DISPLAY movi2[p_act].disponible
|
|
TO s_movi1[scr_l].disponible
|
|
|
|
IF movi2[p_act].cantidad_2 > existencia THEN
|
|
CALL fgl_winmessage(
|
|
"info", "CANTIDAD EXCEDE DISPONIBLE", "INFO")
|
|
END IF
|
|
END IF
|
|
END IF
|
|
#================================================================================
|
|
|
|
# DISPLAY movi2[p_act].cantidad_1 TO smovi1[scr_l].cantidad_1
|
|
##NEXT FIELD cantidad_1
|
|
NEXT FIELD cod_sec
|
|
ON ACTION producto ATTRIBUTE(TEXT = "Producto")
|
|
CASE
|
|
WHEN INFIELD(cod_n)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp = busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,
|
|
movi2[p_act].unidad_med
|
|
TO s_movi1[scr_l].cod_n,
|
|
s_movi1[scr_l].cod_grupo,
|
|
s_movi1[scr_l].cod_tipo,
|
|
s_movi1[scr_l].cod_sec,
|
|
s_movi1[scr_l].descrip_esp,
|
|
s_movi1[scr_l].unidad_med
|
|
|
|
WHEN INFIELD(cod_grupo)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp = busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,
|
|
movi2[p_act].unidad_med
|
|
TO s_movi1[scr_l].cod_n,
|
|
s_movi1[scr_l].cod_grupo,
|
|
s_movi1[scr_l].cod_tipo,
|
|
s_movi1[scr_l].cod_sec,
|
|
s_movi1[scr_l].descrip_esp,
|
|
s_movi1[scr_l].unidad_med
|
|
|
|
WHEN INFIELD(cod_tipo)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp = busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,
|
|
movi2[p_act].unidad_med
|
|
TO s_movi1[scr_l].cod_n,
|
|
s_movi1[scr_l].cod_grupo,
|
|
s_movi1[scr_l].cod_tipo,
|
|
s_movi1[scr_l].cod_sec,
|
|
s_movi1[scr_l].descrip_esp,
|
|
s_movi1[scr_l].unidad_med
|
|
|
|
WHEN INFIELD(cod_sec)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp = busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,
|
|
movi2[p_act].unidad_med
|
|
TO s_movi1[scr_l].cod_n,
|
|
s_movi1[scr_l].cod_grupo,
|
|
s_movi1[scr_l].cod_tipo,
|
|
s_movi1[scr_l].cod_sec,
|
|
s_movi1[scr_l].descrip_esp,
|
|
s_movi1[scr_l].unidad_med
|
|
|
|
END CASE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
|
|
AFTER FIELD codigo_bloque
|
|
IF LENGTH(movi2[p_act].codigo_bloque) > 2 THEN
|
|
SELECT UNIQUE a.codigo_bloque
|
|
FROM intb00018 a
|
|
WHERE a.codigo_bloque = movi2[p_act].codigo_bloque
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD codigo_bloque
|
|
END IF
|
|
|
|
END IF
|
|
|
|
AFTER FIELD cod_n
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_n IS NOT NULL THEN
|
|
|
|
LET ant_art.area = movi2[p_act].area
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].area = ant_art.area
|
|
AND movi2[idx].cod_n = ant_art.cod_n
|
|
AND movi2[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi2[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
AFTER FIELD cod_grupo
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_grupo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET ant_art.area = movi2[p_act].area
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].area = ant_art.area
|
|
AND movi2[idx].cod_n = ant_art.cod_n
|
|
AND movi2[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi2[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
AFTER FIELD cod_tipo
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_tipo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET ant_art.area = movi2[p_act].area
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].area = ant_art.area
|
|
AND movi2[idx].cod_n = ant_art.cod_n
|
|
AND movi2[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi2[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
AFTER FIELD cod_sec
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF movi2[p_act].cod_n IS NULL
|
|
AND movi2[p_act].cod_sec IS NOT NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF movi2[p_act].cod_n IS NOT NULL
|
|
AND movi2[p_act].cod_grupo IS NOT NULL
|
|
AND movi2[p_act].cod_tipo IS NOT NULL
|
|
AND movi2[p_act].cod_sec IS NOT NULL THEN
|
|
|
|
SELECT a.descrip_esp,
|
|
a.unidad_med,
|
|
a.control_existencia,
|
|
a.exist_min,
|
|
a.desglose
|
|
INTO p_iptb02.descrip_esp,
|
|
p_iptb02.unidad_med,
|
|
p_iptb02.control_existencia,
|
|
existminima[p_act],
|
|
desglose
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET arrcontrol_existencia[p_act] =
|
|
p_iptb02.control_existencia
|
|
|
|
SELECT UNIQUE a.factor_conv
|
|
INTO factor_conv[p_act]
|
|
FROM iptb00001 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(94)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET movi2[p_act].descrip_esp = p_iptb02.descrip_esp CLIPPED
|
|
LET movi2[p_act].unidad_med = p_iptb02.unidad_med CLIPPED
|
|
|
|
DISPLAY movi2[p_act].descrip_esp
|
|
TO s_movi1[scr_l].descrip_esp
|
|
ATTRIBUTE(CYAN)
|
|
DISPLAY movi2[p_act].unidad_med
|
|
TO s_movi1[scr_l].unidad_med
|
|
ATTRIBUTE(CYAN)
|
|
|
|
LET ant_art.area = movi2[p_act].area
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].area = ant_art.area
|
|
AND movi2[idx].cod_n = ant_art.cod_n
|
|
AND movi2[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi2[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
# CONTROL ITEMS EN LA ORDEN
|
|
IF otros_mov.conduce_no IS NOT NULL
|
|
AND pcontrol_cliente = "SI" THEN
|
|
SELECT UNIQUE a.cod_n
|
|
FROM prtb00013 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.num_oc = ordenx
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 397
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
IF pnum_req IS NOT NULL THEN
|
|
|
|
# CONTROL ITEM EN LA REQUISICION
|
|
|
|
LET hacerdocumento = TRUE
|
|
SELECT UNIQUE a.cod_n
|
|
FROM cctb00026 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.num_oc = otros_mov.conduce_no
|
|
AND a.num_req = pnum_req
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 397
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
# CONTROL DESPIECE
|
|
|
|
SELECT UNIQUE a.cod_n
|
|
FROM iptb00027 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
|
|
# IF NOT siDespiece THEN
|
|
CALL despiece(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].area)
|
|
# CALL adddespiece()
|
|
# END IF
|
|
|
|
DISPLAY movi2[p_act].cantidad_2
|
|
TO s_movi1[scr_l].cantidad_2
|
|
|
|
END IF
|
|
|
|
LET movi2[p_act].cantidad_p =
|
|
cantidad_conduce - cantidad_orden
|
|
# CONTROL UBICACION
|
|
LET moviD.area = movi2[p_act].area
|
|
LET moviD.cod_n = movi2[p_act].cod_n
|
|
LET moviD.cod_grupo = movi2[p_act].cod_grupo
|
|
LET moviD.cod_tipo = movi2[p_act].cod_tipo
|
|
LET moviD.cod_sec = movi2[p_act].cod_sec
|
|
LET moviD.id_bodega = otros_mov.bodega
|
|
LET moviD.cod_mov = otros_mov.cod_mov
|
|
LET moviD.descripcion = movi2[p_act].descrip_esp CLIPPED
|
|
LET moviD.factor_conv = factor_conv[p_act]
|
|
LET moviD.cantidad1 = movi2[p_act].cantidad_1
|
|
LET moviD.cantidad2 = movi2[p_act].cantidad_2
|
|
|
|
LET scodigo =
|
|
movi2[p_act].area USING "<<<",
|
|
"-",
|
|
movi2[p_act].cod_n USING "<<<<",
|
|
"-",
|
|
movi2[p_act].cod_grupo USING "<<<<<",
|
|
"-",
|
|
movi2[p_act].cod_tipo USING "<<<<<<",
|
|
"-",
|
|
movi2[p_act].cod_sec USING "<<<<<<",
|
|
"-"
|
|
LET idx = movi10Dest.search("codigo", scodigo)
|
|
CALL movi10Dest.deleteElement(idx)
|
|
DISPLAY "antes movi cantidad2: ", moviD.cantidad2
|
|
DISPLAY "antes movi cantidad1: ", moviD.cantidad1
|
|
CALL insertaUbicacion(
|
|
moviD.*, tmpnumero)
|
|
RETURNING movi2[p_act].cantidad_1,
|
|
movi2[p_act].cantidad_2,
|
|
tmpnumero,
|
|
movi10
|
|
|
|
DISPLAY movi2[p_act].cantidad_1 TO s_movi1[scr_l].cantidad_1
|
|
DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
|
|
CALL adicionaArray()
|
|
|
|
#CONTROL DEVOLUCION
|
|
IF control_devolucion = "SI" THEN
|
|
SELECT DISTINCT a.area
|
|
INTO movi2[p_act].area
|
|
FROM vetb00003 a
|
|
WHERE a.factura = otros_mov.factura
|
|
AND a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.area = movi2[p_act].area
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(502)
|
|
NEXT FIELD area
|
|
END IF
|
|
DISPLAY movi2[p_act].area
|
|
TO s_movi1[scr_l].area
|
|
ATTRIBUTE(RED)
|
|
|
|
IF movi2[p_Act].cantidad_2
|
|
> movi2[p_Act].cantidad_p THEN
|
|
LET numero_msg = 28
|
|
CALL msg(numero_msg)
|
|
##NEXT FIELD cantidad_1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
DISPLAY movi2[p_Act].cantidad_2
|
|
TO s_movi1[scr_l].cantidad_2
|
|
END IF
|
|
IF desglose = 'S' THEN
|
|
# PROCESO DESGLOSE
|
|
CALL fotos(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,
|
|
USUARIOS,
|
|
TRUE,
|
|
movi2[p_act].cantidad_2,
|
|
tmpnumero,
|
|
otros_mov.cod_mov,
|
|
otros_mov.bodega,
|
|
status_m)
|
|
RETURNING xcantidad2, xcantidad1
|
|
|
|
LET movi2[p_act].cantidad_1 = xcantidad1
|
|
LET movi2[p_act].cantidad_2 = xcantidad2
|
|
NEXT FIELD codigo_bloque
|
|
END IF
|
|
END IF # CONTROL CODIGO EN BLANCO
|
|
AFTER ROW
|
|
LET p_act = arr_curr()
|
|
LET scr_l = scr_line()
|
|
IF movi2[p_act].cod_n IS NOT NULL
|
|
AND movi2[p_act].cod_grupo IS NOT NULL
|
|
AND movi2[p_act].cod_tipo IS NOT NULL
|
|
AND movi2[p_act].cod_sec IS NOT NULL THEN
|
|
|
|
IF arrcontrol_existencia[p_act] = "SI" THEN
|
|
|
|
EXECUTE bcosto
|
|
USING pano,
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec
|
|
INTO costoItem
|
|
|
|
IF STATUS = NOTFOUND OR costoItem = 0 THEN
|
|
DISPLAY movi2[p_act].descrip_esp
|
|
TO s_movi1[scr_l].descrip_esp
|
|
ATTRIBUTE(RED)
|
|
LET numero_msg = 1674
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
ELSE
|
|
LET costoItem = 0
|
|
END IF
|
|
END IF
|
|
AFTER FIELD cantidad_1
|
|
LET p_act = arr_curr()
|
|
|
|
IF movi2[p_act].cod_n IS NOT NULL
|
|
AND movi2[p_act].cod_grupo IS NOT NULL
|
|
AND movi2[p_act].cod_tipo IS NOT NULL
|
|
AND movi2[p_act].cod_sec IS NOT NULL THEN
|
|
|
|
IF movi2[p_act].cantidad_1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
##NEXT FIELD cantidad_1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
|
|
SELECT UNIQUE a.factor_conv
|
|
INTO factor_conv[p_act]
|
|
FROM iptb00001 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(94)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
IF movi2[p_act].cantidad_1 < 0 THEN
|
|
CALL msg(16)
|
|
##NEXT FIELD cantidad_1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
|
|
LET movi2[p_act].cantidad_2 =
|
|
movi2[p_act].cantidad_1 * factor_conv[p_act]
|
|
|
|
DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
|
|
LET p_iptb06.cantidad_2 = 0
|
|
|
|
# BUSCA LA EXISTENCIA
|
|
|
|
IF status_m = "2" THEN
|
|
|
|
LET hacerdocumento = TRUE
|
|
|
|
IF p_iptb02.control_existencia = "SI" THEN
|
|
CALL existencia(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].cantidad_2,
|
|
p_act,
|
|
otros_mov.bodega)
|
|
RETURNING vexistencia, movi2[p_act].existencia
|
|
|
|
IF vexistencia THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"CANTIDAD EXCEDE EXISTENCIA",
|
|
"STOP")
|
|
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
CALL disponibles(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
TODAY)
|
|
RETURNING cantidad_orden1,
|
|
pcantidadConduce,
|
|
transito,
|
|
existencia,
|
|
reservado,
|
|
valororden
|
|
LET cantidad_orden1 =
|
|
cantidad_orden1 + pcantidadConduce
|
|
|
|
DISPLAY movi2[p_act].existencia
|
|
TO s_movi1[scr_l].existencia
|
|
DISPLAY movi2[p_act].disponible
|
|
TO s_movi1[scr_l].disponible
|
|
|
|
IF movi2[p_act].cantidad_2 > existencia THEN
|
|
CALL fgl_winmessage(
|
|
"info",
|
|
"CANTIDAD EXCEDE DISPONIBLE",
|
|
"INFO")
|
|
END IF
|
|
END IF
|
|
END IF
|
|
#================================================================================
|
|
# CONTROL CANTIDAD DESPIECE
|
|
LET total_medida = 0
|
|
IF otros_mov.cod_mov = 30
|
|
OR otros_mov.cod_mov = 31
|
|
OR otros_mov.cod_mov = 55
|
|
OR otros_mov.cod_mov = 70
|
|
OR otros_mov.cod_mov = 71
|
|
OR otros_mov.cod_mov = 72 THEN
|
|
|
|
# CONTROL DESPIECE
|
|
|
|
SELECT UNIQUE a.cod_n
|
|
FROM iptb00027 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
# IF NOT siDespiece THEN
|
|
CALL despiece(
|
|
movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,
|
|
movi2[p_act].area)
|
|
# CALL adddespiece()
|
|
# END IF
|
|
LET movi2[p_act].cantidad_2 =
|
|
movi2[p_act].cantidad_1
|
|
END IF
|
|
END IF
|
|
DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
|
|
LET selec_pt =
|
|
selec_pt CLIPPED,
|
|
movi2[p_act].descrip_esp,
|
|
" CANTIDAD ",
|
|
movi2[p_act].cantidad_2,
|
|
" ",
|
|
movi2[p_act].unidad_med
|
|
|
|
IF otros_mov.conduce_no IS NOT NULL
|
|
AND pcontrol_cliente = "SI" THEN
|
|
# CONTROL ORDEN
|
|
IF otros_mov.cod_mov = 71 OR otros_mov.cod_mov = 70 THEN
|
|
LET cantidad_conduce = 0
|
|
SELECT ISNULL(SUM(a.cantidad), 0)
|
|
INTO cantidad_conduce
|
|
FROM prtb00013 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.num_oc = ordenx
|
|
AND a.status_t IS NULL
|
|
|
|
LET cantidad_recibida = 0
|
|
SELECT ISNULL(SUM(a.cantidad_2), 0)
|
|
INTO cantidad_recibida
|
|
FROM iptb00006 a
|
|
WHERE a.cod_n = movi2[p_act].cod_n
|
|
AND a.cod_grupo = movi2[p_act].cod_grupo
|
|
AND a.cod_tipo = movi2[p_act].cod_tipo
|
|
AND a.cod_sec = movi2[p_act].cod_sec
|
|
AND a.num_oc = ordenx
|
|
AND a.cod_mov IN (20, 70, 72, 71)
|
|
AND a.status_t IS NULL
|
|
|
|
LET hacerdocumento = TRUE
|
|
DISPLAY "CANTIDAD CONDUCE: ",
|
|
movi2[p_act].cod_sec,
|
|
" ",
|
|
cantidad_recibida,
|
|
" ",
|
|
movi2[p_act].cantidad_2,
|
|
" ",
|
|
cantidad_conduce
|
|
IF (cantidad_Recibida + movi2[p_act].cantidad_2)
|
|
> cantidad_conduce THEN
|
|
LET numero_msg = 46
|
|
|
|
LET hacerdocumento = FALSE
|
|
CALL msg(numero_msg)
|
|
##NEXT FIELD cantidad_1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
END IF
|
|
END IF # CONTROL DEVOLUCION
|
|
# CONTROL REQUISICION
|
|
{ IF control_devolucion <>"SI" THEN
|
|
IF pnum_req IS NOT NULL THEN
|
|
|
|
IF NOT control_requisicion(movi2[p_act].cantidad_2,movi2[p_act].cod_n,
|
|
movi2[p_act].cod_grupo,movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,movi2[p_act].id_kit,factor_conv[p_act])
|
|
THEN
|
|
|
|
CALL fgl_Winmessage("ERROR","CANTIDAD EXCEDE A CANTIDAD EN REQUISICION","INFO")
|
|
|
|
NEXT FIELD cantidad_1
|
|
END IF
|
|
END IF
|
|
END IF}
|
|
#=================================================================================================
|
|
LET movi3[p_act].cantidad_2 = movi2[p_act].cantidad_2
|
|
END IF
|
|
ON ACTION guardar ATTRIBUTE(TEXT = "Guardar", IMAGE = "save")
|
|
|
|
FOR idx = 1 TO movi2.getLength()
|
|
IF movi2[idx].area IS NULL THEN
|
|
LET movi2[idx].area = 1
|
|
END IF
|
|
END FOR
|
|
|
|
# CONTROL ORDEN PEDIDOS EN FECHA 10/02/2026
|
|
{IF pcontrol_departamento = "SI" THEN
|
|
IF ordenx IS NOT NULL THEN
|
|
# BUSCA LA CANTIDAD DE LA ORDEN PARA ESTE ITEM
|
|
FOR idx = 1 TO movi2.getLength()
|
|
LET cantidad_orden =0
|
|
SELECT SUM(a.cantidad) INTO cantidad_orden FROM prtb00013 a
|
|
WHERE (a.num_oc = ordenx) AND
|
|
(a.cod_n = movi2[idx].cod_n AND
|
|
a.cod_grupo = movi2[idx].cod_grupo AND
|
|
a.cod_tipo = movi2[idx].cod_tipo AND
|
|
a.cod_sec = movi2[idx].cod_sec) # AND
|
|
# a.area = movi2[idx].area
|
|
|
|
#CANTIDAD PRODUCIDA
|
|
LET cantidad_recibida=0
|
|
|
|
SELECT SUM(a.cantidad_2) INTO cantidad_recibida
|
|
FROM iptb00006 a,iptb00005 b
|
|
WHERE (a.cod_mov = b.cod_mov) AND
|
|
b.control_departamento ='SI' AND
|
|
(a.num_oc = ordenx) AND
|
|
(a.cod_n = movi2[idx].cod_n AND
|
|
a.cod_grupo = movi2[idx].cod_grupo AND
|
|
a.cod_tipo = movi2[idx].cod_tipo AND
|
|
a.cod_sec = movi2[idx].cod_sec) AND
|
|
# a.area = movi2[idx].area AND
|
|
a.status_t IS NULL
|
|
|
|
IF cantidad_recibida >= cantidad_orden THEN
|
|
CALL msg(46)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
END IF
|
|
} #-------------------------------------------------------------------------------
|
|
# CONTROL DESPIECE
|
|
|
|
FOR idx = 1 TO movi2.getLength()
|
|
SELECT UNIQUE a.cod_n
|
|
FROM iptb00027 a
|
|
WHERE a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
|
|
IF despiece.getLength() = 1 THEN
|
|
CALL msg(398)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
#---------------------------------------------------------------------------------------------
|
|
# CONTROL REQUISICION EN FECHA 10/02/2026
|
|
IF control_devolucion <> "SI" THEN
|
|
IF pcontrol_despacho = "SI" THEN
|
|
IF pnum_req IS NOT NULL THEN
|
|
LET hacerdocumento = TRUE
|
|
FOR idx = 1 TO movi2.getLength()
|
|
IF movi2[idx].cod_n IS NOT NULL THEN
|
|
IF NOT control_requisicion(
|
|
movi2[idx].cantidad_2,
|
|
movi2[idx].cod_n,
|
|
movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec,
|
|
movi2[idx].id_kit,
|
|
factor_conv[idx],
|
|
movi2[idx].area) THEN
|
|
|
|
CALL fgl_Winmessage(
|
|
"ERROR",
|
|
"CANTIDAD EXCEDE A CANTIDAD EN REQUISICION",
|
|
"INFO")
|
|
LET hacerdocumento = FALSE
|
|
EXIT FOR
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
IF NOT hacerdocumento THEN
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
ELSE
|
|
CALL fgl_Winmessage(
|
|
"ERROR",
|
|
"NUMERO REQUISICION ESTA EN BLANCO",
|
|
"INFO")
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
END IF
|
|
END IF
|
|
#=================================================================================================
|
|
|
|
IF control_devolucion = "SI" THEN
|
|
IF otros_mov.factura IS NULL OR otros_mov.factura = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
|
|
SELECT UNIQUE a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.orden,
|
|
b.codigo_dgii
|
|
INTO otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.conduce_no,
|
|
documento_encabezado.tipoPago
|
|
FROM vetb00002 a, vetb00012 b
|
|
WHERE factura = otros_mov.factura
|
|
AND a.status_t IS NULL
|
|
AND a.cond_pago = b.cond_pago
|
|
AND CONVERT(CHAR(10), a.fecha_factura, 101)
|
|
>=
|
|
'01/01/2007'
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 102
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fact_no
|
|
END IF
|
|
DISPLAY BY NAME otros_mov.conduce_no
|
|
|
|
# CONTROL `
|
|
LET cantidad_factura = 0
|
|
LET cantidad_devuelta = 0
|
|
SELECT SUM(a.cantidad)
|
|
INTO cantidad_factura
|
|
FROM vetb00003 a
|
|
WHERE a.factura = otros_mov.factura
|
|
AND a.status_t IS NULL
|
|
AND a.fech_crea > '2009-01-01 08:00'
|
|
|
|
SELECT SUM(a.cantidad_2)
|
|
INTO cantidad_devuelta
|
|
FROM iptb00006 a
|
|
WHERE a.factura = otros_mov.factura
|
|
AND a.status_t IS NULL
|
|
AND a.fech_crea > '2009-01-01 08:00'
|
|
AND a.cod_mov IN (12, 13)
|
|
|
|
IF cantidad_devuelta + .05 > cantidad_factura THEN
|
|
LET numero_msg = 238
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
END IF
|
|
|
|
IF pcontrol_cliente = "SI" THEN
|
|
FOR idx = 1 TO movi2.getLength()
|
|
IF movi2[idx].cod_sec IS NOT NULL THEN
|
|
|
|
#CONTROL DEVOLUCION
|
|
IF control_devolucion = "SI" THEN
|
|
SELECT DISTINCT a.area
|
|
INTO movi2[idx].area
|
|
FROM vetb00003 a
|
|
WHERE a.factura = otros_mov.factura
|
|
AND a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
AND a.area = movi2[idx].area
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(502)
|
|
DISPLAY movi2[idx].area
|
|
TO s_movi1[idx].area
|
|
ATTRIBUTE(RED)
|
|
NEXT FIELD area
|
|
END IF
|
|
DISPLAY movi2[idx].area
|
|
TO s_movi1[idx].area
|
|
ATTRIBUTE(RED)
|
|
|
|
IF movi2[idx].cantidad_2
|
|
> movi2[idx].cantidad_p THEN
|
|
CALL msg(28)
|
|
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
DISPLAY movi2[idx].cantidad_2
|
|
TO s_movi1[idx].cantidad_2
|
|
END IF
|
|
#------------------------------------------------------------------------------------------
|
|
IF movi2[idx].area IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD area
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
#----------------------- CONTROL EXISTENCIAS ----------------------------------------
|
|
IF status_m = "2" THEN
|
|
FOR idx = 1 TO movi2.getLength()
|
|
IF movi2[idx].cod_sec IS NOT NULL THEN
|
|
SELECT a.descrip_esp,
|
|
a.unidad_med,
|
|
a.control_existencia
|
|
INTO p_iptb02.descrip_esp,
|
|
p_iptb02.unidad_med,
|
|
p_iptb02.control_existencia
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
AND a.status_t IS NULL
|
|
|
|
DISPLAY "antes del control: ",
|
|
p_iptb02.control_existencia
|
|
IF p_iptb02.control_existencia = "SI" THEN
|
|
DISPLAY "entre aqui: ",
|
|
p_iptb02.control_existencia
|
|
LET vexistencia = FALSE
|
|
DISPLAY movi2[idx].cantidad_2
|
|
TO s_movi1[scr_l].cantidad_2
|
|
# EN FECHA 10/02/2026
|
|
# CALL existencia(movi2[idx].cod_n,movi2[idx].cod_grupo,
|
|
# movi2[idx].cod_tipo,movi2[idx].cod_sec,movi2[idx].cantidad_2,idx,otros_mov.bodega)
|
|
# RETURNING vexistencia,movi2[idx].existencia
|
|
|
|
# IF vexistencia THEN
|
|
|
|
# CALL fgl_winmessage("ERROR","CANTIDAD EXCEDE EXISTENCIA","STOP")
|
|
# NEXT FIELD cod_sec
|
|
# END IF
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
#--------------------------------------------------------------------------------------------------------
|
|
|
|
LET hacerdocumento = TRUE
|
|
LET opc = "NO"
|
|
LET opc =
|
|
fgl_winquestion(
|
|
"INFORMACION",
|
|
"Toda la Informacion Esta Correcta?",
|
|
"YES",
|
|
"YES|NO",
|
|
"QUESTION",
|
|
0)
|
|
|
|
IF OPC = "YES" THEN
|
|
LET pano = YEAR(otros_mov.fecha)
|
|
|
|
ERROR "BUSCANDO SECUENCIA DOCS...."
|
|
# Actualiza tabla control ultimo documento
|
|
BEGIN WORK
|
|
SELECT num_doc
|
|
INTO otros_mov.num_doc
|
|
FROM iptb00007
|
|
WHERE cod_mov = otros_mov.cod_mov
|
|
AND bodega = otros_mov.bodega
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET otros_mov.num_doc = 0
|
|
INSERT INTO iptb00007
|
|
VALUES(1,
|
|
otros_mov.cod_mov,
|
|
NULL,
|
|
usuarios,
|
|
getdate(),
|
|
NULL,
|
|
NULL,
|
|
otros_mov.bodega)
|
|
END IF
|
|
|
|
LET otros_mov.num_doc = otros_mov.num_doc + 1
|
|
|
|
LET cuerpo_correo = "<table>"
|
|
INITIALIZE jsonMovi, movi10Dest_JSON TO NULL
|
|
|
|
FOR idx = 1 TO movi10Dest.getLength()
|
|
|
|
LET movi10Dest_JSON[idx].area = movi10Dest[idx].area
|
|
LET movi10Dest_JSON[idx].cod_n = movi10Dest[idx].cod_n
|
|
LET movi10Dest_JSON[idx].cod_grupo =
|
|
movi10Dest[idx].cod_grupo
|
|
LET movi10Dest_JSON[idx].cod_tipo =
|
|
movi10Dest[idx].cod_tipo
|
|
LET movi10Dest_JSON[idx].cod_sec =
|
|
movi10Dest[idx].cod_sec
|
|
LET movi10Dest_JSON[idx].id_bodega =
|
|
movi10Dest[idx].id_bodega
|
|
LET movi10Dest_JSON[idx].id_seccion1 =
|
|
movi10Dest[idx].id_seccion1
|
|
LET movi10Dest_JSON[idx].id_tramo1 =
|
|
movi10Dest[idx].id_tramo1
|
|
LET movi10Dest_JSON[idx].id_fila =
|
|
movi10Dest[idx].id_fila
|
|
LET movi10Dest_JSON[idx].id_pos = movi10Dest[idx].id_pos
|
|
LET movi10Dest_JSON[idx].cantidad1 =
|
|
movi10Dest[idx].cantidad1
|
|
LET movi10Dest_JSON[idx].cantidad2 =
|
|
movi10Dest[idx].cantidad2
|
|
|
|
END FOR
|
|
|
|
LET jsonMovi = util.JSON.stringify(movi10Dest_JSON)
|
|
|
|
FOR idx = 1 TO movi2.getLength()
|
|
IF movi2[idx].cod_n IS NOT NULL
|
|
AND movi2[idx].cod_grupo IS NOT NULL
|
|
AND movi2[idx].cod_tipo IS NOT NULL
|
|
AND movi2[idx].cod_sec IS NOT NULL THEN
|
|
# BUSCA NUEVAMENTE EL FACTOR DE CONVERSION
|
|
SELECT UNIQUE a.factor_conv
|
|
INTO factor_conv[idx]
|
|
FROM iptb00001 a
|
|
WHERE a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
ROLLBACK WORK
|
|
CALL msg(94)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
IF movi2[idx].cantidad_1 < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
DISPLAY "estoy en cantidad_1"
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
|
|
LET movi2[idx].cantidad_2 =
|
|
movi2[idx].cantidad_1 * factor_conv[idx]
|
|
|
|
IF movi2[idx].cantidad_2 IS NULL
|
|
OR movi2[idx].cantidad_2 = 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
DISPLAY "estoy en cantidad_2 is null and 0"
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
IF movi2[idx].cantidad_2 = 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
DISPLAY "estoy en cantidad_2 =0"
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
|
|
IF movi2[idx].cantidad_2 IS NOT NULL
|
|
OR movi2[idx].cantidad_2 > 0 THEN
|
|
IF movi2[idx].cantidad_1 = 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
DISPLAY "estoy en cantidad_1 es cero"
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF pcontrol_despacho = "SI" THEN
|
|
|
|
SELECT UNIQUE a.cod_mov
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = otros_mov.cod_sp
|
|
AND a.cod_mov = otros_mov.cod_mov
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
ROLLBACK WORK
|
|
LET numero_msg = 386
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_Sec
|
|
END IF
|
|
END IF
|
|
|
|
IF ordenx IS NULL OR ordenx = 0 THEN
|
|
LET ordenx = otros_mov.conduce_no
|
|
END IF
|
|
|
|
IF arrcontrol_existencia[idx] = "SI" THEN
|
|
|
|
EXECUTE bcosto
|
|
USING pano,
|
|
movi2[idx].cod_n,
|
|
movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec
|
|
INTO costoItem
|
|
|
|
IF STATUS = NOTFOUND OR costoItem = 0 THEN
|
|
ROLLBACK WORK
|
|
LET scr_l = scr_line()
|
|
DISPLAY movi2[idx].descrip_esp
|
|
TO s_movi1[scr_l].descrip_esp
|
|
ATTRIBUTE(RED)
|
|
LET numero_msg = 1674
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
ELSE
|
|
LET costoItem = 0
|
|
END IF
|
|
|
|
IF status_m = 2 AND movi2[idx].cantidad_2 > 0 THEN
|
|
LET movi2[idx].cantidad_2 =
|
|
movi2[idx].cantidad_2 * -1
|
|
END IF
|
|
IF status_m = 1 AND movi2[idx].cantidad_2 < 0 THEN
|
|
LET movi2[idx].cantidad_2 =
|
|
movi2[idx].cantidad_2 * -1
|
|
END IF
|
|
|
|
INITIALIZE out_result TO NULL
|
|
|
|
LET procedimiento =
|
|
"EXEC sp_insert_inventario ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
|
?, ?, ?, ?, ?, ?, ?, ?, ?, ?"
|
|
|
|
PREPARE smt FROM procedimiento
|
|
|
|
EXECUTE smt
|
|
USING ordenx IN,
|
|
--idx IN,
|
|
movi2[idx].cod_n IN,
|
|
movi2[idx].cod_grupo IN,
|
|
movi2[idx].cod_tipo IN,
|
|
movi2[idx].cod_sec IN,
|
|
movi2[idx].area IN,
|
|
movi2[idx].cantidad_1 IN,
|
|
movi2[idx].cantidad_2 IN,
|
|
otros_mov.cod_mov IN,
|
|
otros_mov.num_doc IN,
|
|
tmpnumero IN,
|
|
otros_mov.entrada IN,
|
|
otros_mov.fecha IN,
|
|
otros_mov.conduce_no IN,
|
|
otros_mov.cod_sp IN,
|
|
otros_mov.cod_sp_sec IN,
|
|
otros_mov.cod_transp IN,
|
|
otros_mov.sec_transp IN,
|
|
otros_mov.placa IN,
|
|
otros_mov.detalle IN,
|
|
otros_mov.bodega IN,
|
|
pcerrada IN,
|
|
usuarios IN,
|
|
pnum_req IN,
|
|
movi2[idx].codigo_bloque IN,
|
|
psec_vend IN,
|
|
direccion_p IN,
|
|
otros_mov.bodega_destino IN,
|
|
num_doc_ret IN,
|
|
aplica_dev IN,
|
|
otros_mov.departamento IN,
|
|
pcontrol_departamento IN,
|
|
otros_mov.factura IN,
|
|
pnumero_doc IN,
|
|
costoItem IN,
|
|
# jsonMovi IN,
|
|
out_result OUT,
|
|
cod_mensaje OUT,
|
|
out_msg OUT
|
|
|
|
DISPLAY "out_result: ",
|
|
out_msg,
|
|
" - ",
|
|
out_result,
|
|
" - ",
|
|
cod_mensaje
|
|
#DISPLAY jsonMovi
|
|
|
|
IF out_result <> 0 THEN
|
|
IF cod_mensaje IS NOT NULL THEN
|
|
LET numero_msg = cod_mensaje
|
|
ELSE
|
|
LET numero_msg = 1663
|
|
END IF
|
|
|
|
CALL msg(numero_msg)
|
|
ROLLBACK WORK
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
# CUERPO TRANSFERENCIA
|
|
IF pcontrol_transferencia = "SI" THEN
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
"<tr><td>",
|
|
movi2[idx].descrip_esp CLIPPED,
|
|
"</td>",
|
|
"<td>",
|
|
movi2[idx].cantidad_2 USING "##,###.##",
|
|
"</td>",
|
|
"</tr>"
|
|
|
|
END IF
|
|
|
|
# ACTUALIZA LISTA PARA DESPACHO EN STATUS_PRODUCCION
|
|
IF pcontrol_departamento = "SI" THEN
|
|
# BUSCA LA CANTIDAD DE LA ORDEN PARA ESTE ITEM
|
|
|
|
LET cantidad_orden = 0
|
|
SELECT SUM(a.cantidad)
|
|
INTO cantidad_orden
|
|
FROM prtb00013 a
|
|
WHERE (a.num_oc = ordenx)
|
|
AND (a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo
|
|
=
|
|
movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec)
|
|
|
|
#CANTIDAD PRODUCIDA
|
|
LET cantidad_recibida = 0
|
|
|
|
SELECT SUM(a.cantidad_2)
|
|
INTO cantidad_recibida
|
|
FROM iptb00006 a, iptb00005 b
|
|
WHERE (a.cod_mov = b.cod_mov)
|
|
AND b.control_departamento = 'SI'
|
|
AND (a.num_oc = ordenx)
|
|
AND (a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo
|
|
=
|
|
movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec)
|
|
AND a.status_t IS NULL
|
|
|
|
IF cantidad_recibida >= cantidad_orden THEN
|
|
LET chconduce = 'S'
|
|
LET estadoordenes = NULL
|
|
LET cuerpo_correo =
|
|
'ORDEN: ',
|
|
ordenx USING "&&&&&&",
|
|
'LISTA PARA DESPACHO PARA EL MATERIAL ',
|
|
movi2[idx].descrip_esp CLIPPED,
|
|
' ',
|
|
movi2[idx].unidad_med,
|
|
' ',
|
|
movi2[idx].cantidad_2
|
|
USING "<<<,<<<.####",
|
|
'; '
|
|
LET estadoordenes =
|
|
'CON EL DOCUMENTO ',
|
|
otros_mov.num_doc USING "<<<<<<",
|
|
" FUE ACTUALIZADA LA ORDEN ",
|
|
ordenx USING "<<<<<<",
|
|
" LISTA PARA DESPACHO "
|
|
|
|
ELSE
|
|
|
|
LET chconduce = 'S'
|
|
LET cuerpo_correo =
|
|
'ORDEN: ',
|
|
ordenx USING "&&&&&&",
|
|
'PRODUCCION PARCIAL PARA EL MATERIAL ',
|
|
movi2[idx].descrip_esp CLIPPED,
|
|
' ',
|
|
movi2[idx].unidad_med,
|
|
' ',
|
|
movi2[idx].cantidad_2
|
|
USING "<<<,<<<.####",
|
|
'; '
|
|
END IF
|
|
END IF
|
|
|
|
IF chconduce = 'S' OR control_devolucion = 'SI' THEN
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
' ',
|
|
movi2[idx].descrip_esp CLIPPED,
|
|
' ',
|
|
movi2[idx].unidad_med,
|
|
' ',
|
|
movi2[idx].cantidad_2 USING "<<<,<<<.####",
|
|
'; '
|
|
END IF
|
|
|
|
END IF { if de cantidad_2 no NULL }
|
|
# END IF {if cod_n cod_tipo ........ is not null }
|
|
END FOR
|
|
|
|
INITIALIZE numero_msg TO NULL
|
|
CALL addUbicacion() RETURNING numero_msg
|
|
|
|
IF numero_msg IS NOT NULL AND numero_msg <> 0 THEN
|
|
|
|
ROLLBACK WORK
|
|
|
|
DISPLAY "ROLLBACK: ERROR AL REGISTRAR UBICACIONES"
|
|
|
|
CALL msg(numero_msg)
|
|
|
|
NEXT FIELD cod_sec
|
|
|
|
END IF
|
|
|
|
#-----------------------------------------------------------------------------------------
|
|
#DESPIECE
|
|
|
|
IF despiece.getLength() > 0 THEN
|
|
FOR idx = 1 TO despiece.getLength()
|
|
INSERT INTO iptb00025(
|
|
id_etiqueta,
|
|
cod_mov,
|
|
num_doc,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
lado_1,
|
|
lado_2,
|
|
lado_3,
|
|
cantidad,
|
|
medida,
|
|
us_crea,
|
|
fech_crea,
|
|
bodega)
|
|
VALUES(despiece[idx].id_etiqueta,
|
|
otros_mov.cod_mov,
|
|
otros_mov.num_doc,
|
|
despiece[idx].cod_n,
|
|
despiece[idx].cod_grupo,
|
|
despiece[idx].cod_tipo,
|
|
despiece[idx].cod_sec,
|
|
despiece[idx].lado_1,
|
|
despiece[idx].lado_2,
|
|
despiece[idx].lado_3,
|
|
despiece[idx].cantidad,
|
|
despiece[idx].medida,
|
|
usuarios,
|
|
GETDATE(),
|
|
otros_mov.bodega)
|
|
END FOR
|
|
END IF
|
|
|
|
# CALL autoFacturacion(datos.*,usuarios)
|
|
|
|
DELETE FROM tmpdespiece WHERE id_despiece = tmpnumero
|
|
# ELIMINA DE LA TABLA TEMPORAL EL DOCUMENTO CON RELACION AL DESGLOSE
|
|
DELETE FROM tmpdesglose_master
|
|
WHERE num_Doc = tmpnumero
|
|
AND cod_mov = otros_mov.cod_mov
|
|
AND us_crea = usuarios
|
|
DELETE FROM tmpdesglose
|
|
WHERE num_Doc = tmpnumero
|
|
AND cod_mov = otros_mov.cod_mov
|
|
AND us_crea = usuarios
|
|
|
|
#ACTUALIZA LA REQUISICION TRANSACCIONES
|
|
IF pnumero_Doc > 0 THEN
|
|
|
|
IF actualizareqtrx(pnumero_doc) THEN
|
|
|
|
UPDATE iptb00057
|
|
SET estado = 'CERRADA',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE numero_doc = pnumero_doc
|
|
END IF
|
|
END IF
|
|
|
|
# ENVIO AVISO EXISTENCIA MINIMA
|
|
|
|
CALL existenciaMinima()
|
|
|
|
# ACTUALIZA EL ESTADO DE LA REQUISICION DESPACHO
|
|
|
|
SELECT ISNULL(SUM(a.cantidad), 0)
|
|
INTO cantidadRequisicion
|
|
FROM cctb00026 a
|
|
WHERE (a.num_req = pnum_req) AND a.status_t IS NULL
|
|
|
|
SELECT ISNULL(SUM(a.cantidad_2 * - 1), 0)
|
|
INTO rcantidad_requisicion
|
|
FROM iptb00006 a
|
|
WHERE (a.num_req = pnum_req) AND a.status_t IS NULL
|
|
|
|
LET diferencia = cantidadRequisicion - rcantidad_Requisicion
|
|
|
|
IF diferencia < .05 THEN
|
|
|
|
UPDATE cctb00025
|
|
SET estado_despacho = 'DESPACHADA',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_req = pnum_req
|
|
ELSE
|
|
|
|
UPDATE cctb00025
|
|
SET estado_despacho = 'DESPACHO PARCIAL',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE (num_req = pnum_req)
|
|
END IF
|
|
# CIERRE ORDENES
|
|
|
|
LET diferencia = 0
|
|
SELECT ISNULL(SUM(cantidad), 0)
|
|
INTO cantidad_orden
|
|
FROM prtb00013 a
|
|
WHERE (a.num_oc = ordenx)
|
|
|
|
SELECT ISNULL(SUM(cantidad_2 * - 1), 0)
|
|
INTO cantidad_conduce
|
|
FROM iptb00006 a
|
|
WHERE (a.num_oc = ordenx)
|
|
AND (a.cod_mov IN (12, 13, 30, 31, 55))
|
|
AND CONVERT(CHAR(10), a.fecha, 101) > "01/01/2007"
|
|
AND a.status_t IS NULL
|
|
|
|
LET diferencia = cantidad_orden - cantidad_conduce
|
|
IF diferencia < 0 THEN
|
|
LET diferencia = diferencia * -1
|
|
END IF
|
|
IF diferencia IS NULL THEN
|
|
LET diferencia = 0
|
|
END IF
|
|
IF diferencia < .05 THEN
|
|
IF status_m <> 1 THEN
|
|
|
|
TRY
|
|
UPDATE prtb00012
|
|
SET cerrada = "S",
|
|
estado_despacho = 'DESPACHADA',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_oc = ordenx
|
|
# ACTUALIZA EL ESTADO DE LA REQUISICION DESPACHO
|
|
|
|
UPDATE cctb00025
|
|
SET estado_despacho = 'DESPACHADA',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_req = pnum_req
|
|
CATCH
|
|
# ROLLBACK WORK
|
|
LET numero_msg = 1663
|
|
DISPLAY "ROLLBACK actualizar estado prtb12"
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END TRY
|
|
END IF
|
|
END IF
|
|
|
|
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
|
|
|
|
UPDATE cctb00025
|
|
SET estado_despacho = 'DESPACHO PARCIAL',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_req = pnum_req AND status_t IS NULL
|
|
|
|
IF cantidad_devuelta > cantidad_orden THEN
|
|
|
|
UPDATE prtb00012
|
|
SET estado_devolucion = 'DEVOLUCION COMPLETA',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_oc = otros_mov.conduce_no
|
|
ELSE
|
|
|
|
UPDATE prtb00012
|
|
SET estado_devolucion = 'DEVOLUCION PARCIAL',
|
|
cerrada = 'N',
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_oc = otros_mov.conduce_no
|
|
|
|
END IF
|
|
END IF
|
|
SELECT a.descrip_mov
|
|
INTO pdescripmov
|
|
FROM iptb00005 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov
|
|
|
|
#-> Actualiza la tabla de monitoreo de las ordenes de corte vg. Saturday, 03 March, 2001 10:51:42 AM
|
|
IF otros_mov.conduce_no IS NOT NULL THEN
|
|
LET prtb09.detalle =
|
|
pdescripmov CLIPPED,
|
|
" CON EL NUMERO DE DOCUMENTO: ",
|
|
otros_mov.num_doc USING "<<<<<<<",
|
|
" DE FECHA : ",
|
|
otros_mov.fecha USING "dd/mm/yyyy"
|
|
|
|
INSERT INTO prtb00009
|
|
VALUES(ordenx,
|
|
otros_mov.fecha,
|
|
NULL,
|
|
"S",
|
|
prtb09.detalle,
|
|
NULL,
|
|
usuarios,
|
|
getdate(),
|
|
NULL,
|
|
NULL)
|
|
END IF
|
|
COMMIT WORK
|
|
# INSERTA EN LA OTRA DB
|
|
IF control_devolucion = "SI" THEN
|
|
|
|
CALL insertaData()
|
|
|
|
END IF
|
|
# PROCEDIMIENTO ENVIO CORREO
|
|
IF chconduce = 'S'
|
|
OR pcontrol_departamento = "SI"
|
|
OR pcontrol_transferencia = "SI" THEN
|
|
|
|
LET TOEmail = NULL
|
|
|
|
IF psec_vend IS NOT NULL THEN
|
|
|
|
SELECT UNIQUE a.email
|
|
INTO TOEmail
|
|
FROM seg0000 a
|
|
WHERE a.sec_vend = psec_vend
|
|
END IF
|
|
|
|
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
|
|
|
|
LET subject =
|
|
'DOCUMENTO ',
|
|
otros_mov.num_doc USING "&&&&&&&&",
|
|
" CODIGO MOV ",
|
|
otros_mov.cod_mov USING "&&&",
|
|
" ",
|
|
pdescripmov CLIPPED,
|
|
"ORDEN: ",
|
|
ordenx USING "<<<<<<<"
|
|
|
|
IF TOEmail IS NULL THEN
|
|
LET TOEmail = "notificacion@marmotech.com.do"
|
|
ELSE
|
|
LET toemail = toemail CLIPPED
|
|
END IF
|
|
DECLARE buscaCorreos CURSOR FOR
|
|
SELECT DISTINCT a.correo
|
|
FROM seg0003 a
|
|
WHERE a.controldespacho = 'SI'
|
|
|
|
LET ccemail = NULL
|
|
FOREACH buscacorreos INTO PCCEMAIL
|
|
LET CCEmail = Pccemail CLIPPED, ',', CCEmail
|
|
END FOREACH
|
|
|
|
# LET toemail = 'jsoto@marmotech.com.do'
|
|
# LET ccemail = 'jsoto@marmotech.com.do'
|
|
IF ccemail IS NULL THEN
|
|
LET ccemail = 'notificacion@marmotech.com.do'
|
|
END IF
|
|
IF subject IS NULL THEN
|
|
LET subject =
|
|
'DOCUMENTO ',
|
|
otros_mov.num_doc USING "&&&&&&&&",
|
|
" CODIGO MOV ",
|
|
otros_mov.cod_mov USING "&&&"
|
|
END IF
|
|
IF TOemail IS NULL THEN
|
|
LET TOemail = "notificacion@marmotech.com.do"
|
|
END IF
|
|
|
|
IF pcontrol_transferencia = 'NO' THEN
|
|
|
|
LET cuerpo_correo =
|
|
'CLIENTE: ',
|
|
otros_mov.descrip4 CLIPPED,
|
|
", ",
|
|
otros_mov.detalle CLIPPED
|
|
END IF
|
|
LET cuerpo_correo = cuerpo_correo CLIPPED, "</table>"
|
|
DISPLAY "ccmail ", ccemail, " to ", Toemail
|
|
LET TOemail = toemail CLIPPED, ",", ccemail CLIPPED
|
|
|
|
LET buf = base.StringBuffer.create()
|
|
CALL buf.append(TOemail)
|
|
CALL buf.replace(',', ' ', 1)
|
|
LET TOemail = buf.toString()
|
|
|
|
# CALL envia_correo(TOemail,CCEmail,cuerpo_correo,
|
|
# subject, procedimiento )
|
|
|
|
END IF
|
|
|
|
LET opt2 =
|
|
fgl_winquestion(
|
|
"IMPRESION",
|
|
"Desea Imprimir Formulario Ahora?",
|
|
"YES",
|
|
"YES|NO",
|
|
"QUESTION",
|
|
0)
|
|
|
|
IF opt2 = "YES" THEN
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
{ IF usuarios = 'mabad' THEN
|
|
IF salida IS NULL THEN
|
|
LET salida = 'PDF'
|
|
END IF
|
|
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
START REPORT formu4 TO XML HANDLER HANDLER
|
|
ELSE }
|
|
START REPORT formu4 TO archivo
|
|
-- END IF
|
|
|
|
LET ya = NULL
|
|
FOR idx = 1 TO arr_count()
|
|
IF movi2[idx].cod_sec IS NOT NULL THEN
|
|
OUTPUT TO REPORT formu4(
|
|
otros_mov.*, movi2[idx].*)
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT formu4
|
|
-- IF usuarios <> 'mabad' THEN
|
|
RUN imprime
|
|
-- END IF
|
|
END IF
|
|
|
|
SET CONNECTION "SQL_C"
|
|
IF ordenx > 0 THEN
|
|
IF Toemail IS NOT NULL THEN
|
|
LET xusername = 'notificacion@marmotech.com.do'
|
|
LET xsmtphost = 'smtp.office365.com'
|
|
LET xsmtpport = '587'
|
|
LET xpassword = 'Lmmjvsd2020'
|
|
IF LENGTH(Toemail) > 2 THEN
|
|
CALL enviaemail(
|
|
Toemail,
|
|
subject,
|
|
cuerpo_correo,
|
|
NULL,
|
|
xusername,
|
|
xsmtphost,
|
|
xsmtpport,
|
|
xpassword)
|
|
|
|
# RETURNING retorne
|
|
# LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
|
|
CALL movi2.clear()
|
|
CALL movi10Dest.clear()
|
|
CALL despiece.clear()
|
|
CALL despiecedest.clear()
|
|
|
|
END INPUT
|
|
ON ACTION recibir
|
|
ATTRIBUTE(TEXT = "Recepcion Mercancia", IMAGE = "fa-ship")
|
|
CALL piking(usuarios, clave, impresor, otros_mov.bodega, psucid)
|
|
|
|
ON ACTION CANCEL ATTRIBUTE(TEXT = "Cancel", IMAGE = "quit")
|
|
LET INT_FLAG = FALSE
|
|
CALL msg(2)
|
|
DELETE FROM tmpdesglose_master
|
|
WHERE num_Doc = tmpnumero
|
|
AND cod_mov = otros_mov.cod_mov
|
|
AND us_crea = usuarios
|
|
DELETE FROM tmpdesglose
|
|
WHERE num_Doc = tmpnumero
|
|
AND cod_mov = otros_mov.cod_mov
|
|
AND us_crea = usuarios
|
|
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
REPORT formu4(x, z)
|
|
|
|
DEFINE x RECORD
|
|
num_doc LIKE iptb00006.num_doc,
|
|
cod_cia LIKE iptb00006.cod_cia,
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
fact_no LIKE iptb00006.fact_no,
|
|
cod_transp LIKE iptb00006.cod_transp,
|
|
sec_transp LIKE iptb00006.sec_transp,
|
|
cod_tarifa LIKE iptb00006.cod_tarifa,
|
|
placa LIKE iptb00006.placa,
|
|
fecha LIKE iptb00006.fecha,
|
|
conduce_no LIKE iptb00006.conduce_no,
|
|
descrip_mov CHAR(80),
|
|
bodega LIKE iptb00006.bodega,
|
|
bodega_destino SMALLINT,
|
|
detalle VARCHAR(100),
|
|
cod_sp LIKE iptb00006.cod_sp,
|
|
cod_sp_sec LIKE iptb00006.cod_sp_sec,
|
|
departamento SMALLINT,
|
|
nombre_depto CHAR(30),
|
|
cod_mov1 SMALLINT,
|
|
entrada INT,
|
|
descrip_mov1 CHAR(40),
|
|
descrip4 CHAR(30),
|
|
factura INT
|
|
END RECORD
|
|
|
|
DEFINE
|
|
z RECORD
|
|
area SMALLINT,
|
|
descripcion_area VARCHAR(30),
|
|
cod_n LIKE intb00003.cod_n,
|
|
cod_grupo LIKE intb00003.cod_grupo,
|
|
cod_tipo LIKE intb00003.cod_tipo,
|
|
cod_sec LIKE intb00003.cod_sec,
|
|
cantidad_1 DEC(12, 5),
|
|
cantidad_2 DEC(12, 5),
|
|
cantidad_p DEC(12, 5),
|
|
unidad_med LIKE iptb00002.unidad_med,
|
|
descrip_esp CHAR(80),
|
|
existencia DEC(12, 5),
|
|
disponible DEC(12, 5),
|
|
codigo_bloque CHAR(15),
|
|
id_kit INT
|
|
END RECORD,
|
|
etiqueta, ptelefono, ptelefono1, pcelular, nombre, apellido CHAR(30),
|
|
plado1, plado2, plado3, pcantidad, pmedida DEC(12, 5),
|
|
pprovincia SMALLINT,
|
|
nombre_provincia CHAR(30),
|
|
nombre_p CHAR(70),
|
|
total_unidades INT,
|
|
hora CHAR(5),
|
|
pubica CHAR(60),
|
|
porden_cliente VARCHAR(25),
|
|
i INT
|
|
|
|
DEFINE kdatos DYNAMIC ARRAY OF RECORD
|
|
lado_2 DEC(8, 5),
|
|
lado_1 DEC(8, 5),
|
|
lado_3 DEC(8, 5),
|
|
cantidad FLOAT,
|
|
cantidad2 FLOAT,
|
|
tono VARCHAR(100),
|
|
calidad VARCHAR(100),
|
|
xobservacion VARCHAR(200),
|
|
id_producto CHAR(25),
|
|
seccion INT,
|
|
tramo INT
|
|
END RECORD
|
|
DEFINE usuario_c CHAR(9)
|
|
DEFINE signo CHAR(1)
|
|
DEFINE doce, normal, doble, doble_of, negras, negras_off CHAR(2)
|
|
DEFINE
|
|
l, cuenta SMALLINT,
|
|
darea VARCHAR(40)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 0
|
|
|
|
ORDER BY x.num_doc, z.area, z.cod_sec
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.num_doc
|
|
LET doble = ASCII 14
|
|
LET doble_of = ASCII 20
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_off = ASCII 27, ASCII 70
|
|
LET comp_on = ASCII 15
|
|
|
|
SELECT UNIQUE us_crea
|
|
INTO usuario_c
|
|
FROM iptb00006
|
|
WHERE num_doc = x.num_doc
|
|
AND cod_mov = x.cod_mov
|
|
AND us_crea = user
|
|
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET hora = TIME
|
|
PRINT doce
|
|
#PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED
|
|
IF x.cod_sp <> 19 AND x.cod_sp <> 18 THEN
|
|
PRINT COLUMN 1, doble, "M A R M O T E C H, S. A.", doble_of
|
|
END IF
|
|
PRINT COLUMN 71, "No. ", doble, x.num_doc USING "<<<<<<"
|
|
#LET l = (80 - LENGTH ("OTROS MOVIMIENTOS")) / 2
|
|
PRINT #COLUMN l, "OTROS MOVIMIENTOS",
|
|
COLUMN 71, x.fecha USING "dd/mm/yyyy"
|
|
PRINT COLUMN 71, hora
|
|
|
|
LET l = (70 - LENGTH(x.descrip_mov)) / 2
|
|
|
|
PRINT COLUMN l - 2,
|
|
doble,
|
|
negras,
|
|
"(",
|
|
x.cod_mov USING "&&",
|
|
") ",
|
|
x.descrip_mov,
|
|
doble_of
|
|
PRINT negras_off
|
|
IF x.cod_mov = 12 THEN
|
|
PRINT COLUMN 1, "Factura Venta: ", x.factura USING "&&&&&&"
|
|
END IF
|
|
|
|
IF x.detalle IS NULL THEN
|
|
LET x.detalle = "**************************************"
|
|
END IF
|
|
{ COMENTARIO DE ESTAS DIRECCIONES PORQUE SOLO SE VA A TOMAR LA DIRECCION DEL PROYECTO
|
|
QUE ASU VEZ VIENE EN EL MENSAJE DE LA REQUISICION
|
|
|
|
SELECT a.calle,a.casa_num,a.urbanizacion,b.telefono,b.telex,c.nom1_emp,c.apell1_emp,b.cod_provincia
|
|
INTO pcalle,pcasa_num,purbanizacion,ptelefono,pcelular,nombre,apellido,pprovincia
|
|
FROM vetb00005 a,vetb00004 b,vetb00028 d,adtb00003 c
|
|
WHERE a.tipo_cliente = x.cod_sp AND
|
|
a.sec_cliente = x.cod_sp_sec AND
|
|
a.tipo_cliente = d.tipo_cliente AND
|
|
a.sec_cliente = d.sec_cliente AND
|
|
a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND
|
|
d.sec_vend = c.num_emp
|
|
|
|
SELECT a.nombre_proyecto,a.direccion_proyecto INTO nombre_p,direccion_p
|
|
FROM vetb00050 a
|
|
WHERE a.tipo_cliente = x.cod_sp AND
|
|
a.sec_cliente = x.cod_sp_Sec AND
|
|
a.cotizacion_no = xcotizacion
|
|
|
|
}
|
|
LET pcelular = NULL
|
|
LET ptelefono = NULL
|
|
LET ptelefono1 = NULL
|
|
LET nombre_p = NULL
|
|
|
|
LET nombre = NULL
|
|
SELECT a.nom1_emp + ' ' + a.apell1_emp
|
|
INTO nombre
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = psec_vend
|
|
|
|
SELECT a.nombre_proyecto, a.telefono_r, a.telefono_o, a.celular1
|
|
INTO nombre_p, ptelefono, ptelefono1, pcelular
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = xcotizacion
|
|
|
|
LET nombre_provincia = NULL
|
|
IF x.cod_mov = 30 OR x.cod_mov = 31 THEN
|
|
SELECT a.nombre_provincia
|
|
INTO nombre_provincia
|
|
FROM vetb00020 a
|
|
WHERE a.cod_provincia = pprovincia
|
|
END IF
|
|
IF x.cod_mov = 55 THEN
|
|
SELECT UNIQUE a.nom_pais
|
|
INTO nombre_provincia
|
|
FROM cotb00018 a
|
|
WHERE a.cod_pais = pprovincia
|
|
END IF
|
|
|
|
SELECT a.direccion, a.nombre_file
|
|
INTO pubica, porden_cliente
|
|
FROM prtb00012 a
|
|
WHERE a.num_oc = x.conduce_no
|
|
AND CONVERT(CHAR(10), a.fech_crea, 103) > "01/01/2007"
|
|
|
|
# SELECT a.observacion INTO pobserva FROM prtb00014 a
|
|
# WHERE a.num_oc = x.conduce_no AND a.fech_crea > datetime (2007-01-01 08:00) year to minute
|
|
# BUSCA BODEGAS
|
|
SELECT a.descripcion
|
|
INTO almacen_origen
|
|
FROM intb00009 a
|
|
WHERE a.cod_bodega = x.bodega
|
|
|
|
SELECT a.descripcion
|
|
INTO almacen_destino
|
|
FROM intb00009 a
|
|
WHERE a.cod_bodega = x.bodega_destino
|
|
|
|
PRINT COLUMN 1,
|
|
"ALMACEN : ",
|
|
"(",
|
|
x.bodega USING "<<<",
|
|
")",
|
|
almacen_origen
|
|
PRINT COLUMN 1,
|
|
"ALMACEN DESTINO : ",
|
|
"(",
|
|
x.bodega_destino USING "<<<",
|
|
")",
|
|
almacen_destino
|
|
PRINT COLUMN 1,
|
|
"CLIENTE : ",
|
|
negras,
|
|
x.descrip4,
|
|
" (",
|
|
x.cod_sp USING "&&",
|
|
"-",
|
|
x.cod_sp_sec USING "&&&&&&",
|
|
")",
|
|
negras_off
|
|
#PRINT COLUMN 1, "DIRECCION: ",pcalle CLIPPED," ",pcasa_num CLIPPED," ",purbanizacion CLIPPED,
|
|
# " TELEFONO: ",ptelefono CLIPPED," CELULAR: ",pcelular
|
|
PRINT COLUMN 1,
|
|
"Proyecto : ",
|
|
nombre_p CLIPPED,
|
|
" DIRECCION: ",
|
|
direccion_p CLIPPED
|
|
PRINT COLUMN 1,
|
|
"TELEFONO1: ",
|
|
ptelefono CLIPPED,
|
|
" TELEFONO2 :,",
|
|
ptelefono1,
|
|
" CELULAR: ",
|
|
pcelular
|
|
PRINT COLUMN 1, "Vendedor : ", nombre CLIPPED, " ", apellido
|
|
PRINT COLUMN 1,
|
|
"Entrada : ",
|
|
x.entrada USING "<<<<<<",
|
|
" (",
|
|
x.cod_mov1 USING "<<<",
|
|
") ",
|
|
x.descrip_mov1 CLIPPED
|
|
PRINT COLUMN 1,
|
|
"Orden : ",
|
|
x.conduce_no,
|
|
COLUMN 20,
|
|
"ORDEN CLIENTE: ",
|
|
porden_cliente,
|
|
" COTIZACION NO: ",
|
|
xcotizacion USING "&&&&&&"
|
|
#,"Observacion Orden: ",pobserva CLIPPED
|
|
PRINT COLUMN 1, "Requisicion: ", pnum_req USING "<<<<<<"
|
|
#PRINT COLUMN 1, "Ubicacion: ",pubica CLIPPED
|
|
PRINT COLUMN 1, "Otros Documentos : ", otros_mov.fact_no
|
|
|
|
IF x.departamento IS NOT NULL THEN
|
|
PRINT COLUMN 1,
|
|
"DEPARTAMENTO: ",
|
|
x.departamento USING "<<<<",
|
|
" ",
|
|
x.nombre_depto
|
|
END IF
|
|
|
|
PRINT comp_on
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------------------------",
|
|
"-------------------------------------------------------------------"
|
|
|
|
PRINT COLUMN 2, doble, "PRODUCTO(S)", doble_of CLIPPED
|
|
|
|
PRINT COLUMN 123, "CANTIDAD"
|
|
|
|
PRINT COLUMN 108, "CANTIDAD", COLUMN 123, "PENDIENTE"
|
|
|
|
PRINT COLUMN 94,
|
|
"UNIDADES",
|
|
COLUMN 108,
|
|
"A DESPACHAR",
|
|
# COLUMN 123, "CON ESTA TRANSACCION",
|
|
2 SPACES,
|
|
"BLOQUE"
|
|
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------------------------",
|
|
"-------------------------------------------------------------------"
|
|
SKIP 1 LINES
|
|
BEFORE GROUP OF z.area
|
|
|
|
SELECT a.nombre_Area
|
|
INTO darea
|
|
FROM prtb00016 a
|
|
WHERE a.area_num = z.area
|
|
|
|
PRINT COLUMN 2, "(" CLIPPED, z.area CLIPPED, ") ", darea CLIPPED
|
|
|
|
ON EVERY ROW
|
|
IF z.cod_n IS NOT NULL
|
|
AND z.cod_grupo IS NOT NULL
|
|
AND z.cod_tipo IS NOT NULL
|
|
AND z.cod_sec IS NOT NULL THEN
|
|
PRINT COLUMN 2,
|
|
z.cod_n USING "&&&&",
|
|
"-",
|
|
z.cod_grupo USING "&&&&&",
|
|
"-",
|
|
z.cod_tipo USING "&&&&&&&",
|
|
"-",
|
|
z.cod_sec USING "&&&&&&&&&&",
|
|
" ",
|
|
z.descrip_esp[1, 64],
|
|
" ";
|
|
|
|
IF cuenta = 1 THEN
|
|
LET signo = "+"
|
|
ELSE
|
|
LET signo = "-"
|
|
LET z.cantidad_2 = z.cantidad_2 * -1
|
|
END IF
|
|
IF z.cantidad_2 < 0 THEN
|
|
LET z.cantidad_2 = z.cantidad_2 * -1
|
|
END IF
|
|
PRINT COLUMN 69,
|
|
z.cantidad_1 USING "###,###.#####",
|
|
COLUMN 84,
|
|
z.cantidad_2 USING "###,###.#####",
|
|
" ",
|
|
z.unidad_med,
|
|
COLUMN 105,
|
|
z.cantidad_p USING "###,###.#####",
|
|
2 SPACES,
|
|
z.codigo_bloque
|
|
IF z.descrip_esp[65, 80] <> ' ' THEN
|
|
PRINT COLUMN 22, z.descrip_esp[65, 80]
|
|
END IF
|
|
SELECT DISTINCT a.cod_n
|
|
FROM iptb00025 a, vetb00026 b
|
|
WHERE # a.area = z.area 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.cod_mov = X.cod_mov
|
|
AND a.num_Doc = x.num_doc
|
|
AND a.bodega = x.bodega
|
|
AND a.id_etiqueta = b.codid
|
|
IF STATUS <> NOTFOUND THEN
|
|
PRINT "------------------------------- DESPIECE ----------------------------------------"
|
|
DECLARE busca_d1 CURSOR FOR
|
|
SELECT b.descripcion,
|
|
a.lado_1,
|
|
a.lado_2,
|
|
a.lado_3,
|
|
a.cantidad,
|
|
a.medida
|
|
FROM iptb00025 a, vetb00026 b
|
|
WHERE # a.area = z.area 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.cod_mov = X.cod_mov
|
|
AND a.num_Doc = x.num_doc
|
|
AND a.bodega = x.bodega
|
|
AND a.id_etiqueta = b.codid
|
|
|
|
LET total_unidades = 0
|
|
FOREACH busca_d1
|
|
INTO etiqueta,
|
|
plado1,
|
|
plado2,
|
|
plado3,
|
|
pcantidad,
|
|
pmedida
|
|
PRINT COLUMN 19,
|
|
pcantidad USING "<,<<<",
|
|
" ",
|
|
etiqueta,
|
|
" 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
|
|
PRINT
|
|
PRINT "---------------------------------------------------------------------------------"
|
|
|
|
END IF
|
|
# IMPRESION DESGLOSE
|
|
SELECT DISTINCT a.num_doc
|
|
FROM iptb00052 a
|
|
WHERE a.num_doc = x.num_doc AND a.cod_mov = x.cod_mov
|
|
IF STATUS <> NOTFOUND THEN
|
|
PRINT COLUMN 10,
|
|
"------------------------------------- DESGLOSE -----------------------------------"
|
|
DECLARE busca_desglose CURSOR FOR
|
|
SELECT a.lado_1,
|
|
a.lado_2,
|
|
a.lado_3,
|
|
a.cantidad,
|
|
a.cantidad2,
|
|
a.tono,
|
|
a.calidad,
|
|
b.descripcion,
|
|
c.descripcion
|
|
FROM iptb00050 a, intb00010 b, intb00043 c
|
|
WHERE 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_doc = x.num_doc
|
|
AND a.cod_mov = x.cod_mov
|
|
AND a.cod_seccion = b.cod_seccion
|
|
AND a.cod_bodega = x.bodega
|
|
AND a.cod_bodega = b.cod_bodega
|
|
AND a.cod_seccion = b.cod_seccion
|
|
AND a.cod_tramo = c.cod_tramo
|
|
AND b.cod_seccion = c.cod_seccion
|
|
AND b.cod_bodega = c.cod_bodega
|
|
|
|
LET i = 1
|
|
FOREACH busca_desglose
|
|
INTO kdatos[i].lado_1,
|
|
kdatos[i].lado_2,
|
|
kdatos[i].lado_3,
|
|
kdatos[i].cantidad,
|
|
kdatos[i].cantidad2,
|
|
kdatos[i].tono,
|
|
kdatos[i].calidad
|
|
PRINT COLUMN 10,
|
|
kdatos[i].lado_1,
|
|
2 SPACES,
|
|
kdatos[i].lado_2,
|
|
2 SPACES,
|
|
kdatos[i].lado_3,
|
|
2 SPACES,
|
|
kdatos[i].cantidad,
|
|
2 SPACES,
|
|
kdatos[i].cantidad2,
|
|
2 SPACES,
|
|
kdatos[i].tono,
|
|
2 SPACES,
|
|
kdatos[i].calidad
|
|
LET i = i + 1
|
|
END FOREACH
|
|
PRINT COLUMN 10,
|
|
"----------------------------------------------------------------------------------"
|
|
END IF
|
|
END IF
|
|
|
|
PAGE TRAILER
|
|
SELECT a.nombre
|
|
INTO descrip2
|
|
FROM vetb00015 a
|
|
WHERE a.cod_transp = x.cod_transp
|
|
AND a.sec_transp = x.sec_transp
|
|
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "OBSERVACIONES: ", UPSHIFT(x.detalle)
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"TRANSPORTISTA: ",
|
|
x.cod_transp USING "<<",
|
|
"-",
|
|
x.sec_transp USING "<<<<",
|
|
" ",
|
|
descrip2 CLIPPED
|
|
PRINT COLUMN 1, "PLACA : ", x.placa
|
|
SKIP 4 LINES
|
|
|
|
PRINT COLUMN 1,
|
|
"---------------------------",
|
|
6 SPACES,
|
|
"---------------------------",
|
|
6 SPACES,
|
|
"---------------------------"
|
|
|
|
PRINT COLUMN 1,
|
|
"Entregado Por ",
|
|
6 SPACES,
|
|
"Recibido Por ",
|
|
6 SPACES,
|
|
"Aprobado Por "
|
|
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 2,
|
|
"Original: Contabilidad Copia: Vendedor Copia: Ventas Copia: Almacen"
|
|
|
|
PRINT normal
|
|
END REPORT
|
|
|
|
FUNCTION busca_vend()
|
|
|
|
DEFINE arr_vend ARRAY[200] OF RECORD
|
|
sec_cliente INTEGER,
|
|
num_emp INTEGER,
|
|
nombre CHAR(30)
|
|
END RECORD
|
|
|
|
OPEN WINDOW busca_1
|
|
AT 8, 4
|
|
WITH FORM "ipfmwd004"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, PROMPT LINE LAST)
|
|
|
|
DECLARE busca_1 CURSOR FOR
|
|
SELECT a.sec_cliente, a.num_emp, b.nombre
|
|
FROM vetb00033 a, vetb00004 b
|
|
WHERE a.sec_cliente = b.sec_cliente AND a.status_t IS NULL
|
|
ORDER BY 1
|
|
|
|
LET idx = 1
|
|
FOREACH busca_1 INTO arr_vend[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY arr_vend TO sc_vend.*
|
|
LET idx = ARR_CURR()
|
|
|
|
LET busca_v.sec_cliente = arr_vend[idx].sec_cliente
|
|
LET busca_v.nombre = arr_vend[idx].nombre
|
|
|
|
CLOSE WINDOW busca_1
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_prod1()
|
|
|
|
DEFINE arr_prod DYNAMIC ARRAY OF RECORD
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(30),
|
|
unidad_med CHAR(5)
|
|
END RECORD
|
|
|
|
OPEN WINDOW busca_2
|
|
AT 8, 4
|
|
WITH FORM "ipfmwd001"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, PROMPT LINE LAST)
|
|
|
|
CONSTRUCT criterio
|
|
ON a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp
|
|
FROM cod_n, cod_grupo, cod_tipo, cod_sec, descrip_esp
|
|
|
|
LET selec_pt =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
|
|
" a.unidad_med FROM iptb00002 a ",
|
|
"WHERE ",
|
|
criterio CLIPPED,
|
|
" and a.status_t IS NULL ORDER BY a.descrip_esp "
|
|
|
|
PREPARE comando_p FROM selec_pt
|
|
DECLARE busca_2 CURSOR FOR comando_p
|
|
|
|
LET idx = 1
|
|
FOREACH busca_2 INTO arr_prod[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY arr_prod TO s_prod.*
|
|
LET idx = ARR_CURR()
|
|
|
|
LET busca_p.cod_n = arr_prod[idx].cod_n
|
|
LET busca_p.cod_grupo = arr_prod[idx].cod_grupo
|
|
LET busca_p.cod_tipo = arr_prod[idx].cod_tipo
|
|
LET busca_p.cod_sec = arr_prod[idx].cod_sec
|
|
LET busca_p.descrip_esp = arr_prod[idx].descrip_esp
|
|
LET busca_p.unidad_med = arr_prod[idx].unidad_med
|
|
# para el precio
|
|
LET p_vetb25.cod_n = arr_prod[idx].cod_n
|
|
LET p_vetb25.cod_grupo = arr_prod[idx].cod_grupo
|
|
LET p_vetb25.cod_tipo = arr_prod[idx].cod_tipo
|
|
LET p_vetb25.cod_sec = arr_prod[idx].cod_sec
|
|
|
|
LET descrip1 = arr_prod[idx].descrip_esp
|
|
LET medida = arr_prod[idx].unidad_med
|
|
|
|
CLOSE WINDOW busca_2
|
|
END FUNCTION
|
|
|
|
FUNCTION despiece(pcodn, pcodgrupo, pcodtipo, pcodsec, parea)
|
|
DEFINE
|
|
cetiqueta VARCHAR(20),
|
|
total_cantidad FLOAT,
|
|
i, pcodn, pcodgrupo, pcodtipo, pcodsec, parea INT,
|
|
xfactor DEC(12, 5)
|
|
|
|
OPEN WINDOW wdespiece
|
|
AT 5, 3
|
|
WITH FORM "ipfmwd010"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, PROMPT LINE LAST)
|
|
|
|
CALL despiece.clear()
|
|
LET idx = 0
|
|
DISPLAY BY NAME movi2[p_act].descrip_esp, movi2[p_act].unidad_med
|
|
|
|
LET despiece[1].cod_n = pcodn
|
|
LET despiece[1].cod_grupo = pcodgrupo
|
|
LET despiece[1].cod_tipo = pcodtipo
|
|
LET despiece[1].cod_sec = pcodsec
|
|
|
|
#CONTROL EN CASO QUE UN PRODUCTO TENGA EN LA MAESTRA QUE DEBE DESPIEZARSE, EN SU FACTOR DE
|
|
# CONVERSION ES DIFERENTE A LA UNIDAD. TODO ARTICULO QUE SE DESPIECE DEBE TENER LA UNIDAD EN EL
|
|
# FACTOR DE CONVERSION
|
|
|
|
SELECT a.factor_conv
|
|
INTO Xfactor
|
|
FROM iptb00001 a
|
|
WHERE a.cod_n = pcodn
|
|
AND a.cod_grupo = pcodgrupo
|
|
AND a.cod_tipo = pcodtipo
|
|
AND a.cod_sec = pcodsec
|
|
IF xfactor <> 1 THEN
|
|
CALL msg(1021)
|
|
CLOSE WINDOW wdespiece
|
|
RETURN
|
|
END IF
|
|
|
|
CALL loadDespieceMemory(
|
|
pcodn, pcodgrupo, pcodtipo, pcodsec)
|
|
RETURNING container
|
|
|
|
IF container.getLength() = 0 THEN
|
|
|
|
CALL loadDespiece(
|
|
pcodn,
|
|
pcodgrupo,
|
|
pcodtipo,
|
|
pcodsec,
|
|
parea,
|
|
otros_mov.entrada,
|
|
otros_mov.cod_mov1,
|
|
pcontrol_despacho,
|
|
ordenx,
|
|
pnum_req)
|
|
RETURNING container
|
|
|
|
END IF
|
|
|
|
LET i = container.getLength()
|
|
|
|
IF i > 0 THEN
|
|
|
|
CALL despiece.clear()
|
|
|
|
FOR idx = 1 TO i
|
|
LET despiece[idx].* = container[idx].*
|
|
END FOR
|
|
|
|
END IF
|
|
|
|
IF idx > 1 THEN
|
|
DISPLAY BY NAME total_cantidad
|
|
|
|
CALL set_count(idx - 1)
|
|
END IF
|
|
|
|
INPUT ARRAY despiece WITHOUT DEFAULTS FROM sdespiece.*
|
|
|
|
BEFORE ROW
|
|
LET curr1 = arr_curr()
|
|
LET fila = scr_line()
|
|
|
|
CALL cetiquetas()
|
|
|
|
IF curr1 > 1 THEN
|
|
IF despiece[curr1].id_etiqueta IS NULL THEN
|
|
LET despiece[curr1].id_etiqueta =
|
|
despiece[curr1 - 1].id_etiqueta
|
|
END IF
|
|
LET despiece[curr1].cod_n = pcodn
|
|
LET despiece[curr1].cod_grupo = pcodgrupo
|
|
LET despiece[curr1].cod_tipo = pcodtipo
|
|
LET despiece[curr1].cod_sec = pcodsec
|
|
|
|
DISPLAY despiece[curr1].cod_n TO sdespiece[fila].cod_n
|
|
DISPLAY despiece[curr1].cod_grupo TO sdespiece[fila].cod_grupo
|
|
DISPLAY despiece[curr1].cod_tipo TO sdespiece[fila].cod_tipo
|
|
DISPLAY despiece[curr1].cod_sec TO sdespiece[fila].cod_sec
|
|
END IF
|
|
DISPLAY cetiqueta TO sdespiece[fila].etiqueta
|
|
|
|
DISPLAY pcodn TO sdespiece[fila].cod_n
|
|
DISPLAY pcodgrupo TO sdespiece[fila].cod_grupo
|
|
DISPLAY pcodtipo TO sdespiece[fila].cod_tipo
|
|
DISPLAY pcodsec TO sdespiece[fila].cod_sec
|
|
|
|
AFTER FIELD cantidad
|
|
|
|
LET despiece[curr1].secuencia = arr_curr()
|
|
|
|
IF movi2[p_act].unidad_med = "M2" THEN
|
|
LET despiece[curr1].medida =
|
|
despiece[curr1].cantidad
|
|
* (despiece[curr1].lado_1 * despiece[curr1].lado_2)
|
|
END IF
|
|
|
|
IF movi2[p_act].unidad_med = "M3" THEN
|
|
LET despiece[curr1].medida =
|
|
despiece[curr1].cantidad
|
|
* (despiece[curr1].lado_1
|
|
* despiece[curr1].lado_2
|
|
* despiece[curr1].lado_3)
|
|
END IF
|
|
|
|
IF movi2[p_act].unidad_med = "ML" THEN
|
|
LET despiece[curr1].medida =
|
|
despiece[curr1].cantidad * despiece[curr1].lado_1
|
|
LET despiece[curr1].lado_2 = 0
|
|
END IF
|
|
|
|
IF movi2[p_act].unidad_med = "UD"
|
|
OR movi2[p_act].unidad_med = "GL" THEN
|
|
LET despiece[curr1].medida = despiece[curr1].cantidad
|
|
END IF
|
|
DISPLAY despiece[curr1].medida TO sdespiece[fila].medida
|
|
AFTER ROW
|
|
IF despiece[curr1].medida IS NULL
|
|
AND despiece[curr1].lado_1 IS NOT NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD lado_1
|
|
END IF
|
|
IF despiece[curr1].id_etiqueta IS NULL
|
|
AND despiece[curr1].medida IS NOT NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD etiqueta
|
|
END IF
|
|
|
|
LET total_medida = 0
|
|
LET total_cantidad = 0
|
|
FOR idx = 1 TO despiece.getLength()
|
|
IF despiece[idx].medida IS NOT NULL THEN
|
|
|
|
LET total_cantidad = total_cantidad + despiece[idx].cantidad
|
|
LET total_medida = total_medida + despiece[idx].medida
|
|
END IF
|
|
|
|
END FOR
|
|
DISPLAY BY NAME total_medida, total_cantidad
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
END IF
|
|
LET total_medida = 0
|
|
LET total_cantidad = 0
|
|
FOR idx = 1 TO despiece.getLength()
|
|
|
|
IF despiece[idx].id_etiqueta IS NOT NULL THEN
|
|
|
|
IF movi2[p_act].unidad_med = "M2" THEN
|
|
LET despiece[idx].medida =
|
|
despiece[idx].cantidad
|
|
* (despiece[idx].lado_1 * despiece[idx].lado_2)
|
|
END IF
|
|
|
|
IF movi2[p_act].unidad_med = "M3" THEN
|
|
LET despiece[idx].medida =
|
|
despiece[idx].cantidad
|
|
* (despiece[idx].lado_1
|
|
* despiece[idx].lado_2
|
|
* despiece[idx].lado_3)
|
|
END IF
|
|
|
|
IF movi2[p_act].unidad_med = "ML" THEN
|
|
LET despiece[idx].medida =
|
|
despiece[idx].cantidad * despiece[idx].lado_1
|
|
LET despiece[idx].lado_2 = 0
|
|
END IF
|
|
|
|
IF movi2[p_act].unidad_med = "UD"
|
|
OR movi2[p_act].unidad_med = "GL" THEN
|
|
LET despiece[idx].medida = despiece[idx].cantidad
|
|
END IF
|
|
DISPLAY despiece[idx].medida TO sdespiece[fila].medida
|
|
LET total_medida = total_medida + despiece[idx].medida
|
|
LET total_cantidad = total_cantidad + despiece[idx].cantidad
|
|
END IF
|
|
END FOR
|
|
DISPLAY BY NAME total_medida, total_cantidad
|
|
|
|
FOR i = 1 TO despiece.getLength()
|
|
LET despiece[i].cod_n = pcodn
|
|
LET despiece[i].cod_grupo = pcodgrupo
|
|
LET despiece[i].cod_tipo = pcodtipo
|
|
LET despiece[i].cod_sec = pcodsec
|
|
END FOR
|
|
|
|
CALL saveDespieceMemory(pcodn, pcodgrupo, pcodtipo, pcodsec)
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
CLOSE WINDOW wdespiece
|
|
RETURN
|
|
END IF
|
|
|
|
LET total_medida = 0
|
|
LET total_cantidad = 0
|
|
FOR idx = 1 TO despiece.getLength()
|
|
|
|
IF despiece[idx].medida IS NOT NULL THEN
|
|
|
|
LET total_cantidad = total_cantidad + despiece[idx].cantidad
|
|
LET total_medida = total_medida + despiece[idx].medida
|
|
END IF
|
|
END FOR
|
|
DISPLAY "EN FUNCION DESPIECE CANTIDAD1: ", total_cantidad
|
|
DISPLAY "EN FUNCION DESPIECE CANTIDAD2: ", total_medida
|
|
|
|
LET movi2[p_act].cantidad_1 = total_medida
|
|
LET movi2[p_act].cantidad_2 = total_medida
|
|
DISPLAY "DESPIECE AL FINAL: ", despiece[1].*
|
|
CLOSE WINDOW wdespiece
|
|
END FUNCTION
|
|
|
|
FUNCTION consulta()
|
|
|
|
CONSTRUCT CRITERIO
|
|
ON a.num_Doc,
|
|
a.cod_mov,
|
|
a.fecha,
|
|
a.conduce_no,
|
|
a.cod_sp,
|
|
a.cod_sp_Sec,
|
|
a.bodega,
|
|
a.detalle
|
|
FROM num_doc,
|
|
cod_mov,
|
|
fecha,
|
|
conduce_no,
|
|
cod_sp,
|
|
cod_sp_sec,
|
|
bodega,
|
|
detalle
|
|
BEFORE CONSTRUCT
|
|
CALL cmovimientos()
|
|
|
|
AFTER CONSTRUCT
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
END CONSTRUCT
|
|
CALL movi2.clear()
|
|
|
|
LET selec =
|
|
"SELECT DISTINCT
|
|
a.num_doc, a.cod_cia, a.cod_mov, a.fact_no, a.cod_transp, a.sec_transp, a.cod_tarifa,
|
|
a.placa, a.fecha, a.conduce_no, a.bodega, a.bodega_d, a.detalle, a.cod_sp, a.cod_sp_sec,
|
|
a.departamento, d.nom_dpto, c.cod_mov1, c.entrada,
|
|
' ' , ' ' ,a.factura, a.num_req, a.sec_vend,a.num_oc,k.descrip_mov
|
|
FROM iptb00006 AS a LEFT OUTER JOIN
|
|
adtb00001 AS d ON a.departamento = d.departamento INNER JOIN
|
|
iptb00005 AS k ON a.cod_mov = k.cod_mov LEFT OUTER JOIN
|
|
iptb00028 AS c ON a.num_doc = c.num_doc AND a.cod_mov = c.cod_mov LEFT OUTER JOIN
|
|
iptb00048 AS b ON a.bodega = b.bodega
|
|
WHERE (b.usuario ='",
|
|
usuarios CLIPPED,
|
|
"' ",
|
|
") AND (a.status_t IS NULL) AND ",
|
|
criterio CLIPPED
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE busca4 SCROLL CURSOR WITH HOLD FOR comando
|
|
OPEN busca4
|
|
|
|
FETCH FIRST busca4
|
|
INTO otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend,
|
|
ordenx,
|
|
otros_mov.descrip_mov
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
CALL busca_info()
|
|
DISPLAY BY NAME otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend
|
|
DISPLAY ordenx TO conduce_no
|
|
|
|
MENU "Busqueda "
|
|
ON ACTION exportar ATTRIBUTE(TEXT = "Exp PDF")
|
|
CALL toPDF()
|
|
COMMAND "Siguiete " "Sieguiente Registro Cumpla Condicion"
|
|
FETCH NEXT busca4
|
|
INTO otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend,
|
|
ordenx,
|
|
otros_mov.descrip_mov
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL busca_info()
|
|
DISPLAY BY NAME otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend
|
|
|
|
DISPLAY ordenx TO conduce_no
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS busca4
|
|
INTO otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend,
|
|
ordenx,
|
|
otros_mov.descrip_mov
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL busca_info()
|
|
DISPLAY BY NAME otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend
|
|
|
|
DISPLAY ordenx TO conduce_no
|
|
|
|
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST busca4
|
|
INTO otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend,
|
|
ordenx,
|
|
otros_mov.descrip_mov
|
|
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
CALL busca_info()
|
|
DISPLAY BY NAME otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
psec_vend
|
|
DISPLAY ordenx TO conduce_no
|
|
|
|
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST busca4
|
|
INTO otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend,
|
|
ordenx,
|
|
otros_mov.descrip_mov
|
|
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
CALL busca_info()
|
|
DISPLAY BY NAME otros_mov.num_doc,
|
|
otros_mov.cod_cia,
|
|
otros_mov.cod_mov,
|
|
otros_mov.fact_no,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.placa,
|
|
otros_mov.fecha,
|
|
otros_mov.conduce_no,
|
|
otros_mov.bodega,
|
|
otros_mov.bodega_destino,
|
|
otros_mov.detalle,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.departamento,
|
|
otros_mov.nombre_depto,
|
|
otros_mov.cod_mov1,
|
|
otros_mov.entrada,
|
|
otros_mov.descrip_mov1,
|
|
otros_mov.descrip4,
|
|
otros_mov.factura,
|
|
pnum_req,
|
|
psec_vend
|
|
DISPLAY ordenx TO conduce_no
|
|
COMMAND "Items" "Busca Items"
|
|
|
|
DECLARE busca1 CURSOR FROM "SELECT a.area, c.nombre_area, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec,
|
|
a.cantidad_1, a.cantidad_2, '0', b.unidad_med, b.descrip_esp
|
|
FROM iptb00006 a
|
|
JOIN iptb00002 b ON 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
|
|
LEFT JOIN prtb00016 c ON a.area = c.area_num
|
|
WHERE a.num_doc = "
|
|
|| otros_mov.num_doc
|
|
|| "
|
|
AND a.cod_mov = "
|
|
|| otros_mov.cod_mov
|
|
|| "
|
|
AND a.bodega = "
|
|
|| otros_mov.bodega
|
|
|| "
|
|
AND a.fech_crea > '2009-01-01 08:00'
|
|
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
|
|
|
|
{SELECT a.area,c.nombre_area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
|
|
a.cantidad_1,a.cantidad_2,'0',b.unidad_med,b.descrip_esp
|
|
FROM iptb00006 a,iptb00002 b, prtb00016 c
|
|
WHERE a.num_doc = otros_mov.num_doc AND
|
|
a.cod_mov = otros_mov.cod_mov 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.bodega = otros_mov.bodega AND
|
|
a.fech_crea > '01/01/2009 08:00' AND
|
|
a.area = c.area_num}
|
|
|
|
LET idx = 1
|
|
CALL movi2.clear()
|
|
FOREACH busca1 INTO movi2[idx].*
|
|
IF movi2[idx].cantidad_2 < 0 THEN
|
|
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
|
|
END IF
|
|
|
|
SELECT SUM(a.cantidad)
|
|
INTO cantidad_conduce
|
|
FROM prtb00013 a
|
|
WHERE a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
AND a.num_oc = ordenx
|
|
AND a.status_t IS NULL
|
|
|
|
LET cantidad_orden = 0
|
|
IF otros_mov.cod_mov = 30 AND otros_mov.cod_mov = 31
|
|
OR otros_mov.cod_mov = 55 THEN
|
|
SELECT SUM(a.cantidad_2 * - 1)
|
|
INTO cantidad_orden
|
|
FROM iptb00006 a
|
|
WHERE a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
AND a.conduce_no = otros_mov.conduce_no
|
|
AND cod_mov IN (30, 31, 55)
|
|
AND a.status_t IS NULL
|
|
END IF
|
|
|
|
IF cantidad_orden IS NULL THEN
|
|
LET cantidad_orden = 0
|
|
END IF
|
|
|
|
IF cantidad_conduce IS NULL THEN
|
|
LET cantidad_conduce = 0
|
|
END IF
|
|
|
|
LET movi2[idx].cantidad_p = cantidad_conduce - cantidad_orden
|
|
|
|
IF movi2[idx].area IS NULL THEN
|
|
LET movi2[idx].area = 1
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx - 1)
|
|
DISPLAY ARRAY movi2 TO s_movi1.*
|
|
|
|
PROMPT "Desea Imprimir Formulario Ahora? (S/N)" FOR CHAR opt2
|
|
|
|
IF opt2 = "S" OR opt2 = "s" THEN
|
|
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
{ IF usuarios = 'mabad' THEN
|
|
IF salida IS NULL THEN
|
|
LET salida = 'PDF'
|
|
END IF
|
|
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
START REPORT formu4 TO XML HANDLER HANDLER
|
|
ELSE }
|
|
START REPORT formu4 TO archivo
|
|
-- END IF
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF movi2[idx].cod_sec IS NOT NULL THEN
|
|
IF movi2[idx].cantidad_2 IS NOT NULL
|
|
AND movi2[idx].cantidad_2 != 0 THEN
|
|
|
|
OUTPUT TO REPORT formu4(otros_mov.*, movi2[idx].*)
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT formu4
|
|
IF opt2 = "S" OR opt2 = "s" THEN
|
|
# LET filename = "TYPE ",archivo CLIPPED," > %USPRINT%"
|
|
# RUN filename
|
|
-- IF usuarios <> 'mabad' THEN
|
|
RUN imprime
|
|
-- END IF
|
|
|
|
END IF
|
|
END IF
|
|
CALL movi2.clear()
|
|
|
|
COMMAND "Retornar" "Retorna al menu anterior"
|
|
CLEAR FORM
|
|
INITIALIZE otros_mov.* TO NULL
|
|
LET otros_mov.fecha = TODAY
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
FUNCTION busca_info()
|
|
|
|
SELECT nombre
|
|
INTO descrip2
|
|
FROM vetb00015
|
|
WHERE cod_transp = otros_mov.cod_transp
|
|
AND sec_transp = otros_mov.sec_transp
|
|
AND status_t IS NULL
|
|
|
|
SELECT nombre
|
|
INTO otros_mov.descrip4
|
|
FROM vetb00004
|
|
WHERE tipo_cliente = otros_mov.cod_sp
|
|
AND sec_cliente = otros_mov.cod_sp_sec
|
|
|
|
SELECT a.status_mov,
|
|
a.control_clientes,
|
|
a.control_despacho,
|
|
a.control_devolucion,
|
|
a.control_transferencia,
|
|
a.control_departamento
|
|
INTO status_m,
|
|
pcontrol_cliente,
|
|
pcontrol_despacho,
|
|
control_devolucion,
|
|
Pcontrol_transferencia,
|
|
pcontrol_departamento
|
|
FROM iptb00005 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov AND a.status_t IS NULL
|
|
|
|
SELECT a.descrip_mov
|
|
INTO otros_mov.descrip_mov1
|
|
FROM iptb00005 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov1
|
|
|
|
IF pcontrol_transferencia = 'SI' THEN
|
|
LET k1 = '2'
|
|
ELSE
|
|
LET k1 = '1'
|
|
END IF
|
|
|
|
CALL bodegas(k1)
|
|
|
|
SELECT a.tipo_cliente, a.sec_cliente, a.cerrada, a.cotizacion_no
|
|
INTO otros_mov.cod_sp, otros_mov.cod_sp_sec, pcerrada, xcotizacion
|
|
FROM prtb00012 a
|
|
WHERE a.num_oc = ordenx AND a.status_t IS NULL
|
|
|
|
SELECT a.mensaje
|
|
INTO direccion_p
|
|
FROM cctb00029 a
|
|
WHERE a.num_req = pnum_req
|
|
|
|
DISPLAY BY NAME descrip2,
|
|
otros_mov.descrip4,
|
|
otros_mov.descrip_mov1,
|
|
direccion_p
|
|
END FUNCTION
|
|
|
|
FUNCTION actualiza_st(forden)
|
|
DEFINE
|
|
forden INTEGER,
|
|
prod_total, vent_total DEC(12, 5),
|
|
prtb09 RECORD LIKE prtb00009.*
|
|
|
|
SELECT SUM(a.cantidad)
|
|
INTO prod_total
|
|
FROM prtb00013 a
|
|
WHERE a.num_oc = forden
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET prod_total = 0
|
|
END IF
|
|
LET vent_total = 0
|
|
SELECT SUM(b.cantidad_2)
|
|
INTO vent_total
|
|
FROM IPTB00006 a
|
|
WHERE a.conduce_no = forden
|
|
AND CONVERT(CHAR(10), a.fecha, 101) > "31122006"
|
|
AND a.cod_sp = otros_mov.cod_sp
|
|
AND a.sec_cliente = otros_mov.cod_sp_Sec
|
|
AND a.cod_mov IN (30, 31, 55, 12, 13)
|
|
AND a.status_t IS NULL
|
|
|
|
IF vent_total IS NULL THEN
|
|
LET vent_total = 0
|
|
END IF
|
|
|
|
#-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM
|
|
IF vent_total = prod_total THEN
|
|
UPDATE prtb00012
|
|
SET fecha_cierre = otros_mov.fecha, cerrada = "S"
|
|
WHERE @num_oc = forden
|
|
AND @tipo_cliente = otros_mov.cod_sp
|
|
AND @sec_cliente = otros_mov.cod_sp_Sec
|
|
|
|
LET prtb09.num_oc = forden
|
|
LET prtb09.fecha = otros_mov.fecha
|
|
LET prtb09.pendiente = "N"
|
|
LET prtb09.detalle =
|
|
"CIERRE DE ORDEN DE PRODUCCION SEGUN CONDUCE # ",
|
|
otros_mov.num_doc USING "<<<<<<<",
|
|
" DE FECHA : ",
|
|
otros_mov.fecha USING "dd/mm/yyyy"
|
|
|
|
INSERT INTO prtb00009
|
|
VALUES(prtb09.num_oc,
|
|
prtb09.fecha,
|
|
NULL,
|
|
prtb09.pendiente,
|
|
prtb09.detalle,
|
|
NULL,
|
|
USER,
|
|
getdate(),
|
|
NULL,
|
|
NULL)
|
|
ELSE
|
|
LET prtb09.num_oc = forden
|
|
LET prtb09.fecha = otros_mov.fecha
|
|
LET prtb09.pendiente = "N"
|
|
LET prtb09.detalle =
|
|
"DESPACHO ",
|
|
pdescripmov CLIPPED,
|
|
" SEGUN CONDUCE # ",
|
|
otros_mov.num_doc USING "<<<<<<<",
|
|
" DE FECHA : ",
|
|
otros_mov.fecha USING "dd/mm/yyyy",
|
|
" CONTIENE PRODUCTO(S): ",
|
|
selec_pt CLIPPED
|
|
|
|
INSERT INTO prtb00009
|
|
VALUES(prtb09.num_oc,
|
|
prtb09.fecha,
|
|
NULL,
|
|
prtb09.pendiente,
|
|
prtb09.detalle,
|
|
NULL,
|
|
USER,
|
|
getdate(),
|
|
NULL,
|
|
NULL)
|
|
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION visualizacion_despacho()
|
|
DEFINE arr_autoriza_desp DYNAMIC ARRAY OF RECORD
|
|
num_oc INT,
|
|
cliente CHAR(66),
|
|
fecha CHAR(10),
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente INT,
|
|
num_req INT
|
|
END RECORD
|
|
OPEN WINDOW w1 AT 10, 5 WITH FORM "ipfmwd011"
|
|
|
|
DECLARE busca_autoriza CURSOR FOR
|
|
SELECT DISTINCT a.num_oc,
|
|
rtrim(
|
|
CAST(b.tipo_cliente AS CHAR(2)) + '-'
|
|
+ CAST(b.sec_cliente AS CHAR(6))
|
|
+ ' '
|
|
+ b.nombre),
|
|
CAST(d.fecha AS CHAR(10)) AS FECHA,
|
|
b.tipo_cliente,
|
|
b.sec_cliente,
|
|
a.num_req
|
|
FROM cctb00026 a, vetb00004 b, prtb00012 c, cctb00025 d
|
|
WHERE c.tipo_cliente = b.tipo_cliente
|
|
AND c.sec_cliente = b.sec_cliente
|
|
AND (a.num_oc = c.num_oc)
|
|
AND
|
|
# c.tipo_orden = ptipoorden AND
|
|
(a.cotizacion_no = c.cotizacion_no)
|
|
AND c.cerrada = 'N'
|
|
AND A.num_req = d.num_req
|
|
AND d.estado IN ('AUTORIZADA')
|
|
AND d.estado_despacho IN ('DESPACHO PARCIAL', 'NO DESPACHADA')
|
|
AND c.status_t IS NULL
|
|
AND a.status_t IS NULL
|
|
ORDER BY fecha
|
|
|
|
LET idx = 1
|
|
FOREACH busca_autoriza INTO arr_autoriza_desp[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx - 1)
|
|
DISPLAY ARRAY arr_autoriza_desp TO s_despachos.*
|
|
AFTER DISPLAY
|
|
LET idx = arr_curr()
|
|
IF Int_flag THEN
|
|
|
|
EXIT DISPLAY
|
|
|
|
END IF
|
|
END DISPLAY
|
|
CLOSE WINDOW w1
|
|
IF int_flag THEN
|
|
|
|
RETURN 0, 0, 0, 0
|
|
ELSE
|
|
RETURN arr_autoriza_desp[idx].num_oc,
|
|
arr_autoriza_desp[idx].tipo_cliente,
|
|
arr_autoriza_desp[idx].sec_cliente,
|
|
arr_autoriza_desp[idx].num_req
|
|
|
|
END IF
|
|
END FUNCTION
|
|
FUNCTION existencia(pcodn, pcodgrupo, pcodtipo, pcodsec, cantidad, pid, xbodega)
|
|
DEFINE
|
|
pcodn, pcodgrupo, pcodtipo, pcodsec, pid, xbodega SMALLINT,
|
|
pexistencia, pexistencia1, cantidad DEC(12, 5),
|
|
verdad BOOLEAN
|
|
|
|
LET verdad = FALSE
|
|
SELECT SUM(a.cantidad_2)
|
|
INTO pexistencia
|
|
FROM iptb00006 a
|
|
WHERE (a.cod_n = Pcodn
|
|
AND a.cod_grupo = Pcodgrupo
|
|
AND a.cod_tipo = Pcodtipo
|
|
AND a.cod_sec = Pcodsec)
|
|
AND (a.bodega = xbodega)
|
|
AND (a.status_t IS NULL)
|
|
DISPLAY "existencia ", pexistencia, " c ", cantidad
|
|
IF pexistencia IS NULL THEN
|
|
LET pexistencia = 0
|
|
END IF
|
|
IF pexistencia1 IS NULL THEN
|
|
LET pexistencia1 = 0
|
|
END IF
|
|
LET existenciaact[p_act] = pexistencia
|
|
|
|
# IF pexistencia < 0 THEN
|
|
# RETURN TRUE,pexistencia
|
|
# END IF
|
|
IF cantidad > pexistencia THEN
|
|
RETURN TRUE, pexistencia
|
|
END IF
|
|
|
|
RETURN verdad, pexistencia
|
|
END FUNCTION
|
|
|
|
FUNCTION cetiquetas()
|
|
DEFINE
|
|
ketiquetas SMALLINT,
|
|
detiquetas CHAR(30)
|
|
|
|
LET petiquetas = ui.combobox.forname("formonly.etiqueta")
|
|
|
|
DECLARE betiquetas CURSOR FOR
|
|
SELECT a.codid, a.descripcion FROM vetb00026 a ORDER BY a.descripcion
|
|
CALL petiquetas.clear()
|
|
|
|
FOREACH betiquetas INTO ketiquetas, detiquetas
|
|
CALL petiquetas.additem(ketiquetas, detiquetas)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION control_requisicion(
|
|
cantidad_Trx, xcodn, xcodgrupo, xcodtipo, xcodsec, xkit, fconv, xarea)
|
|
DEFINE
|
|
cantidad_Trx, fconv DEC(12, 5),
|
|
totalcantidad DEC(12, 5),
|
|
xcodn, xcodgrupo, xcodtipo, xcodsec, xarea SMALLINT,
|
|
xkit INT
|
|
|
|
# DISPLAY "otra data: ",pnum_req," ",xcodn," ",xcodsec
|
|
SELECT ISNULL(SUM(a.cantidad), 0)
|
|
INTO cantidadRequisicion
|
|
FROM cctb00026 a
|
|
WHERE a.cod_n = xcodn
|
|
AND a.cod_grupo = xcodgrupo
|
|
AND a.cod_tipo = xcodtipo
|
|
AND a.cod_sec = xcodsec
|
|
AND
|
|
# a.area = xarea AND
|
|
a.num_req = pnum_req
|
|
AND a.status_t IS NULL
|
|
|
|
SELECT ISNULL(SUM(a.cantidad_2), 0)
|
|
INTO Rcantidad_requisicion
|
|
FROM iptb00006 a
|
|
WHERE a.cod_n = xcodn
|
|
AND a.cod_grupo = xcodgrupo
|
|
AND a.cod_tipo = xcodtipo
|
|
AND a.cod_sec = xcodsec
|
|
AND
|
|
# a.area = xarea AND
|
|
a.cod_mov IN (30, 31, 55, 12, 13)
|
|
AND (a.num_req = pnum_req)
|
|
AND a.status_t IS NULL
|
|
IF rcantidad_requisicion < 0 THEN
|
|
LET rcantidad_requisicion = rcantidad_requisicion * -1
|
|
END IF
|
|
DISPLAY "cantidad req ",
|
|
cantidadRequisicion,
|
|
" cantidad trx ",
|
|
Rcantidad_requisicion,
|
|
" CANTIDAD TRX ",
|
|
cantidad_Trx
|
|
# IF fconv > 1 THEN
|
|
# LET cantidadRequisicion = cantidadRequisicion + .03
|
|
# END IF
|
|
LET totalcantidad = Rcantidad_requisicion + cantidad_Trx
|
|
|
|
DISPLAY totalcantidad
|
|
DISPLAY cantidadRequisicion
|
|
|
|
IF xcodn IS NOT NULL THEN
|
|
DISPLAY "TOTALES: ", totalcantidad, " req ", cantidadRequisicion
|
|
IF totalcantidad > cantidadRequisicion THEN
|
|
# INSERT EN ESTE LOG PARA MONITOREAR CUALES SON LOS VALORES
|
|
|
|
INSERT INTO iptb00006_log(
|
|
num_req,
|
|
fechatrx,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad_1,
|
|
cantidad_2,
|
|
num_oc,
|
|
cotizacion_no,
|
|
us_crea,
|
|
cod_mov,
|
|
totalCantidadControl,
|
|
totalCantidadReq,
|
|
totalCantidadReqInv,
|
|
retornado)
|
|
VALUES(pnum_req,
|
|
getdate(),
|
|
xarea,
|
|
xcodn,
|
|
xcodgrupo,
|
|
xcodtipo,
|
|
xcodsec,
|
|
cantidad_Trx,
|
|
cantidad_Trx,
|
|
ordenx,
|
|
xcotizacion,
|
|
usuarios,
|
|
otros_mov.cod_mov,
|
|
totalcantidad,
|
|
cantidadRequisicion,
|
|
Rcantidad_requisicion,
|
|
'FALSO')
|
|
|
|
RETURN FALSE
|
|
ELSE
|
|
INSERT INTO iptb00006_log(
|
|
num_req,
|
|
fechatrx,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad_1,
|
|
cantidad_2,
|
|
num_oc,
|
|
cotizacion_no,
|
|
us_crea,
|
|
cod_mov,
|
|
totalCantidadControl,
|
|
totalCantidadReq,
|
|
totalCantidadReqInv,
|
|
retornado)
|
|
VALUES(pnum_req,
|
|
getdate(),
|
|
xarea,
|
|
xcodn,
|
|
xcodgrupo,
|
|
xcodtipo,
|
|
xcodsec,
|
|
cantidad_Trx,
|
|
cantidad_Trx,
|
|
ordenx,
|
|
xcotizacion,
|
|
usuarios,
|
|
otros_mov.cod_mov,
|
|
totalcantidad,
|
|
cantidadRequisicion,
|
|
Rcantidad_requisicion,
|
|
'VERDADERO')
|
|
|
|
RETURN TRUE
|
|
END IF
|
|
END IF
|
|
END FUNCTION
|
|
|
|
FUNCTION insertaData()
|
|
|
|
DEFINE emp, codi_cia SMALLINT
|
|
DEFINE nom_cli, nombre_emp CHAR(30)
|
|
|
|
LET arr_recibo.cod_mov = otros_mov.cod_mov
|
|
LET recibo.fecha_orig = fecha1
|
|
|
|
# Control Secuencial de las notas de creditos
|
|
|
|
LET recibo.fecha_orig = otros_mov.fecha
|
|
LET recibo.tipo_cliente = otros_mov.cod_sp
|
|
LET recibo.sec_cliente = otros_mov.cod_sp_sec
|
|
LET recibo.itbi = 0
|
|
LET fact_gral.bodega = otros_mov.bodega
|
|
|
|
LET reimpresion = "N"
|
|
|
|
LET fecha1 = recibo.fecha_orig
|
|
|
|
# Busca el codigo del cliente y chequea que el documento de almacen exista
|
|
|
|
LET recibo.tipo_cliente = otros_mov.cod_sp
|
|
LET recibo.sec_cliente = otros_mov.cod_sp_sec
|
|
LET codi_cia = otros_mov.cod_cia
|
|
LET fact_gral.factura = otros_mov.factura
|
|
|
|
SET CONNECTION "SQL_C"
|
|
|
|
SELECT b.nombre,
|
|
a.calle || ' ' || a.casa_num || ' ' || a.urbanizacion || ' '
|
|
|| a.barrio,
|
|
c.ventas
|
|
INTO nom_cli, fact_gral.direccion, fact_gral.ventas
|
|
FROM vetb00004 b, vetb00060 c, OUTER vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente)
|
|
AND (b.sec_cliente = recibo.sec_cliente)
|
|
AND b.tipo_cliente = a.tipo_cliente
|
|
AND b.sec_cliente = a.sec_cliente
|
|
AND b.tipo_cliente = c.tipo_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET nom_cli = "NO E X I S T E"
|
|
END IF
|
|
|
|
LET descrip2 = NULL
|
|
LET descrip3 = NULL
|
|
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003
|
|
WHERE num_emp = psec_vend
|
|
--DISPLAY "descrip2 ",descrip2,"descrip3 ",descrip3
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET nombre_emp = "NO E X I S T E"
|
|
ELSE
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3 CLIPPED
|
|
END IF
|
|
|
|
--DISPLAY nombre_emp
|
|
LET busca1 = "S"
|
|
|
|
SELECT SUM(a.cantidad_2 * b.precio)
|
|
INTO valor_fac
|
|
FROM iptb00006 a, vetb00003 b
|
|
WHERE (a.num_doc = otros_mov.num_doc)
|
|
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_mov = otros_mov.cod_mov)
|
|
AND (b.factura = otros_mov.factura)
|
|
AND a.area = b.area
|
|
AND (a.bodega = otros_mov.bodega)
|
|
|
|
--DISPLAY "valor_fac 1",valor_fac
|
|
LET arr_recibo.valor_pen = valor_fac
|
|
|
|
{ SE ESTA FORZANDO A QUE DEBE TENER UNA FACTURA UNA DEVOLUCION 13/3/2024
|
|
IF valor_fac IS NULL THEN
|
|
--DISPLAY "ESTA NULO "
|
|
LET busca2 = "S"
|
|
LET busca1 = "N"
|
|
SELECT SUM(a.cantidad_2*b.precio) INTO valor_fac
|
|
FROM iptb00006 a,vetb00025 b
|
|
WHERE (a.num_doc = otros_mov.num_doc) 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_mov = otros_mov.cod_mov) AND
|
|
a.bodega = otros_mov.bodega
|
|
AND b.ventas = "1" AND b.tipo_cliente IS NULL
|
|
END IF}
|
|
|
|
LET arr_recibo.valor_pen = valor_fac
|
|
|
|
LET pdescuento = 0
|
|
|
|
# BUSCA EL DESCUENTO
|
|
SELECT SUM(a.cantidad_2 * b.precio * (b.cantidad_2 / 100)),
|
|
AVG(b.cantidad_2)
|
|
INTO pdescuento, xporc_desc
|
|
FROM iptb00006 a, vetb00003 b
|
|
WHERE (a.num_doc = otros_mov.num_doc)
|
|
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_mov = otros_mov.cod_mov)
|
|
AND (b.factura = fact_gral.factura)
|
|
AND a.area = b.area
|
|
AND a.bodega = otros_mov.bodega
|
|
|
|
IF pdescuento IS NULL THEN
|
|
LET pdescuento = 0
|
|
END IF
|
|
|
|
LET arr_recibo.val_desc = pdescuento
|
|
LET arr_recibo.desc_p = xporc_Desc
|
|
|
|
# El campo VALOR_PEN gruarda el valor bruto de la nota de credito obtenida
|
|
# por la multiplicacion de las cantidades devueltas por el movimiento 12
|
|
# por el precio actual del producto
|
|
# LET arr_recibo[curr].val_desc = arr_recibo[curr].valor_pen * (arr_recibo[curr].desc_p / 100)
|
|
# Calcula el itbi despues de restar el descuento al monto bruto
|
|
|
|
# BUSCA PORCENTAJE ITBIS FACTURA
|
|
LET pitbis = 0
|
|
LET p_itbi = 0
|
|
DISPLAY fact_gral.factura
|
|
SELECT a.porc_itbi, a.fecha_factura
|
|
INTO pitbis, fact_gral.fecha_despacho
|
|
FROM vetb00002 a
|
|
WHERE a.factura = fact_gral.factura
|
|
IF STATUS = NOTFOUND THEN
|
|
DISPLAY "NO LA ENCONTRE"
|
|
ELSE
|
|
DISPLAY "LA ENCONTRE"
|
|
END IF
|
|
LET dias_factura = TODAY - fact_gral.fecha_despacho
|
|
{DISPLAY "fact_gral.fecha_despacho ", fact_gral.fecha_despacho
|
|
DISPLAY "chitbis", chitbis}
|
|
DISPLAY "dias factura ", dias_factura, " fecha: ", fact_gral.fecha_despacho
|
|
IF dias_factura <= 30 THEN
|
|
LET chitbis = "S"
|
|
|
|
LET p_itbi =
|
|
(arr_recibo.valor_pen - arr_recibo.val_desc) * (pitbis / 100)
|
|
LET recibo.itbi = recibo.itbi + p_itbi
|
|
DISPLAY "MENOS DE 30 ", recibo.itbi
|
|
ELSE
|
|
LET chitbis = "N"
|
|
LET recibo.itbi = 0
|
|
DISPLAY "MAS DE 30 ", recibo.itbi
|
|
END IF
|
|
|
|
LET chitbis = UPSHIFT(chitbis)
|
|
|
|
LET arr_recibo.valor_pag =
|
|
(arr_recibo.valor_pen - arr_recibo.val_desc) + p_itbi
|
|
|
|
LET p_total = arr_recibo.valor_pag
|
|
|
|
LET via = "S"
|
|
|
|
SELECT b.nombre,
|
|
a.calle || ' ' || a.casa_num || ' ' || a.urbanizacion || ' ' || a.barrio
|
|
INTO nom_cli, fact_gral.direccion
|
|
FROM vetb00004 b, vetb00005 a
|
|
WHERE (b.tipo_cliente = otros_mov.cod_sp)
|
|
AND (b.sec_cliente = otros_mov.cod_sp_sec)
|
|
AND b.tipo_cliente = a.tipo_cliente
|
|
AND b.sec_cliente = a.sec_cliente
|
|
|
|
IF fact_gral.direccion IS NULL THEN
|
|
LET fact_gral.direccion = 'NO ESPECIFICADA'
|
|
END IF
|
|
|
|
LET descrip2 = NULL
|
|
LET descrip3 = NULL
|
|
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003
|
|
WHERE num_emp = psec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET nombre_emp = "NO E X I S T E"
|
|
ELSE
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3 CLIPPED
|
|
END IF
|
|
|
|
#SECUENCIA RECIBO
|
|
|
|
SELECT ult_recibo INTO p_num_doc FROM cctb00003 WHERE tipo_doc = "NC"
|
|
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
LET recibo.cod_emp_sec = psec_vend
|
|
|
|
IF otros_mov.num_doc IS NOT NULL THEN
|
|
LET arr_recibo.aplica_a = otros_mov.num_doc
|
|
LET impresor = 47
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
START REPORT cr_edito TO archivo
|
|
|
|
IF arr_recibo.aplica_a IS NOT NULL THEN
|
|
|
|
INSERT INTO tmpnotascr(
|
|
num_doc,
|
|
fecha,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_mov,
|
|
factura,
|
|
num_doc_nc,
|
|
itbis,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(arr_recibo.aplica_a,
|
|
otros_mov.fecha,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.cod_mov,
|
|
otros_mov.factura,
|
|
recibo.num_doc,
|
|
recibo.itbi,
|
|
usuarios,
|
|
getdate())
|
|
|
|
OUTPUT TO REPORT cr_edito(
|
|
recibo.*, arr_recibo.*, nom_cli, descrip2, descrip3, codi_cia)
|
|
END IF
|
|
|
|
FINISH REPORT cr_edito
|
|
RUN imprime
|
|
# IMPRESION EXTERIOR
|
|
|
|
#--------------------------------------------------------------------------------------------------------
|
|
|
|
######### ADICION A SQL_E CUANDO ES DEVOLUCION MERCANCIA
|
|
SET CONNECTION "SQL_E"
|
|
LET xnum_doc_c = otros_mov.num_doc
|
|
|
|
SELECT a.num_doc
|
|
INTO tmpnumero
|
|
FROM iptb00007 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov #AND
|
|
# a.bodega = otros_mov.bodega
|
|
|
|
IF tmpnumero IS NULL THEN
|
|
INSERT INTO iptb00007(
|
|
num_doc, cod_mov, bodega)
|
|
VALUES(1, otros_mov.cod_mov, otros_mov.bodega)
|
|
ELSE
|
|
LET num_doc_e = tmpnumero + 1
|
|
END IF
|
|
|
|
LET factura_e = NULL
|
|
FOR idx = 1 TO movi2.getLength()
|
|
IF movi2[idx].cod_n IS NOT NULL THEN
|
|
SELECT MAX(
|
|
a
|
|
.factura) #,MAX(a.sucid),MAX(a.hash),MAX(fechafirmadigital)
|
|
INTO factura_e, psucid, xhas, xfechaFirmaDigital
|
|
FROM vetb00002 a, vetb00003 b
|
|
WHERE a.factura_c = otros_mov.factura
|
|
AND a.factura = b.factura
|
|
AND (b.cod_n = movi2[idx].cod_n
|
|
AND b.cod_grupo = movi2[idx].cod_grupo
|
|
AND b.cod_tipo = movi2[idx].cod_tipo
|
|
AND b.cod_sec = movi2[idx].cod_sec)
|
|
AND a.status_t IS NULL
|
|
DISPLAY "FACTURA: ", factura_e
|
|
IF factura_e IS NOT NULL THEN
|
|
INITIALIZE out_result TO NULL
|
|
|
|
INSERT INTO iptb00006(
|
|
cod_cia,
|
|
num_doc,
|
|
fact_no,
|
|
fecha,
|
|
cod_transp,
|
|
sec_transp,
|
|
cod_sp,
|
|
cod_sp_sec,
|
|
placa,
|
|
cod_tarifa,
|
|
cod_mov,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad_1,
|
|
cantidad_2,
|
|
bodega,
|
|
us_crea,
|
|
fech_crea,
|
|
num_oc,
|
|
cotizacion_no,
|
|
num_doc_c,
|
|
conduce_no,
|
|
detalle,
|
|
num_req,
|
|
sec_vend,
|
|
idtipo)
|
|
VALUES(otros_mov.cod_cia,
|
|
num_doc_e,
|
|
factura_e,
|
|
otros_mov.fecha,
|
|
otros_mov.cod_transp,
|
|
otros_mov.sec_transp,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.placa,
|
|
otros_mov.cod_tarifa,
|
|
otros_mov.cod_mov,
|
|
movi2[idx].area,
|
|
movi2[idx].cod_n,
|
|
movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec,
|
|
movi2[idx].cantidad_1,
|
|
movi2[idx].cantidad_2,
|
|
'1',
|
|
usuarios,
|
|
getdate(),
|
|
ordenx,
|
|
xcotizacion,
|
|
xnum_doc_c,
|
|
otros_mov.conduce_no,
|
|
otros_mov.detalle,
|
|
pnum_req,
|
|
psec_vend,
|
|
idtipo)
|
|
END IF
|
|
END IF
|
|
|
|
END FOR
|
|
UPDATE iptb00007
|
|
SET num_doc = num_doc_e
|
|
WHERE cod_mov = otros_mov.cod_mov
|
|
END IF
|
|
|
|
#--------------------------------------------------------------------------------------------------------
|
|
LET impresor1 = 45
|
|
CALL defecto(
|
|
usuarios, clave, impresor1)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
SELECT * INTO p_companias.* FROM companias
|
|
|
|
SELECT a.factura, b.sucnombre, a.sucid
|
|
INTO fact_gral.factura, nombre_sucursal, psucid
|
|
FROM vetb00002 a, sucursales b
|
|
WHERE a.factura_c = otros_mov.factura
|
|
AND a.sucid = b.sucid
|
|
AND a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
DISPLAY "dato e: ", recibo.num_doc
|
|
IF num_doc_e > 0 THEN
|
|
LET num_cr_e = recibo.num_doc
|
|
SELECT a.ult_recibo
|
|
INTO p_num_doc
|
|
FROM cctb00003 a
|
|
WHERE a.tipo_Doc = 'NC'
|
|
IF p_num_doc IS NULL THEN
|
|
INSERT INTO cctb00003(ult_recibo, tipo_doc) VALUES(1, 'NC')
|
|
LET p_num_doc = 1
|
|
END IF
|
|
LET recibo.num_doc = p_num_doc + 1
|
|
|
|
START REPORT cr_edito1 TO archivo
|
|
LET arr_recibo.aplica_a = num_doc_e
|
|
IF arr_recibo.aplica_a IS NOT NULL THEN
|
|
|
|
INSERT INTO tmpnotascr(
|
|
num_doc,
|
|
fecha,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_mov,
|
|
factura,
|
|
num_doc_nc,
|
|
itbis,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(arr_recibo.aplica_a,
|
|
otros_mov.fecha,
|
|
otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.cod_mov,
|
|
otros_mov.factura,
|
|
recibo.num_doc,
|
|
recibo.itbi,
|
|
usuarios,
|
|
getdate())
|
|
|
|
OUTPUT TO REPORT cr_edito1(
|
|
recibo.*,
|
|
arr_recibo.*,
|
|
nom_cli,
|
|
descrip2,
|
|
descrip3,
|
|
codi_cia)
|
|
END IF
|
|
|
|
FINISH REPORT cr_edito1
|
|
RUN imprime
|
|
|
|
{ # PARA LA NC ELECTRONICA
|
|
LET factura.fecha_factura = otros_mov.fecha
|
|
LET factura.nombre = nom_cli
|
|
|
|
LET r_filename = "veprmt022.4rp"
|
|
iF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
|
|
LET r_output="PDF"
|
|
LET preview=1
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
|
|
|
|
ELSE
|
|
RETURN
|
|
END IF
|
|
START REPORT cr_edito1_encf TO XML HANDLER HANDLER
|
|
|
|
|
|
|
|
OUTPUT TO REPORT cr_edito1_encf (recibo.*,arr_recibo.*,nom_cli,
|
|
descrip2,descrip3,codi_cia)
|
|
|
|
FINISH REPORT cr_edito1_encf}
|
|
END IF
|
|
END IF
|
|
|
|
SET CONNECTION "SQL_C"
|
|
LET emp = psec_vend
|
|
END FUNCTION
|
|
|
|
REPORT cr_edito(x, z, nombre_cli, nombre, apellido, cia)
|
|
DEFINE x RECORD
|
|
num_doc LIKE cctb00001.num_doc,
|
|
tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
sec_cliente LIKE cctb00001.sec_cliente,
|
|
cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
fecha_orig LIKE cctb00001.fecha_orig,
|
|
itbi DECIMAL(12, 2),
|
|
concepto CHAR(60)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
aplica_a LIKE cctb00001.aplica_a,
|
|
valor_pen DECIMAL(12, 2),
|
|
desc_p LIKE cctb00001.monto_desc,
|
|
valor_desc DECIMAL(12, 2),
|
|
valor_pag DECIMAL(12, 2)
|
|
END RECORD
|
|
|
|
DEFINE cia SMALLINT
|
|
DEFINE total_nc, total_bruto, total_desc, itbis DECIMAL(12, 2)
|
|
DEFINE nombre_cli, nombre, apellido CHAR(30)
|
|
DEFINE comp_on,
|
|
comp_off,
|
|
negrillas_on,
|
|
negrillas_off,
|
|
doble_on,
|
|
doble_off,
|
|
doce,
|
|
normal
|
|
CHAR(2)
|
|
|
|
DEFINE
|
|
reg_i RECORD
|
|
area SMALLINT,
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(100),
|
|
cantidad DEC(18, 5),
|
|
precio DECIMAL(12, 2),
|
|
descuento DEC(12, 2)
|
|
END RECORD,
|
|
lj, j, i, h SMALLINT,
|
|
factura_ncf INT,
|
|
xtipo_doc CHAR(2)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 4
|
|
# PAGE LENGTH 33
|
|
|
|
ORDER BY x.num_doc
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.num_doc
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET comp_off = ASCII 18
|
|
LET comp_on = ASCII 15
|
|
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2
|
|
LET j = (90 - LENGTH(p_companias.direccion CLIPPED)) / 2
|
|
LET i = (90 - LENGTH(p_companias.telefono CLIPPED)) / 2
|
|
LET h = (90 - LENGTH(p_companias.rnc CLIPPED)) / 2
|
|
|
|
PRINT comp_on
|
|
PRINT COLUMN lj, normal, doble_on, p_companias.nombre CLIPPED
|
|
PRINT COLUMN j + 3, p_companias.direccion
|
|
PRINT COLUMN i - 9,
|
|
"Tels : ",
|
|
p_companias.telefono,
|
|
" Fax : ",
|
|
p_companias.fax
|
|
PRINT COLUMN h - 1,
|
|
"RNC : ",
|
|
p_companias.rnc CLIPPED,
|
|
COLUMN 100,
|
|
"Pag. ",
|
|
PAGENO USING "###"
|
|
PRINT COLUMN h, "NOTAS DE CREDITOS"
|
|
|
|
IF reimpresion = "S" THEN
|
|
PRINT COLUMN i, "RE-IMPRESION"
|
|
ELSE
|
|
PRINT " "
|
|
END IF
|
|
|
|
PRINT negrillas_on
|
|
|
|
LET total_bruto = 0
|
|
LET total_Desc = 0
|
|
# DESCRIPCION BODEGA
|
|
SELECT a.descripcion
|
|
INTO xbodega
|
|
FROM intb00009 a
|
|
WHERE a.cod_bodega = fact_gral.bodega
|
|
|
|
PRINT COLUMN 1,
|
|
"Numero : ",
|
|
doble_on,
|
|
x.num_doc USING "&&&&&&",
|
|
doble_off,
|
|
negrillas_off
|
|
|
|
PRINT COLUMN 1,
|
|
"CLiente : ",
|
|
x.tipo_cliente USING "&&",
|
|
"-",
|
|
x.sec_cliente USING "&&&&&&&&",
|
|
" ",
|
|
nombre_cli
|
|
PRINT COLUMN 1, "Direccion: ", fact_gral.direccion
|
|
PRINT COLUMN 1,
|
|
"Vendedor : ",
|
|
x.cod_emp_sec USING "&&&&",
|
|
" ",
|
|
nombre CLIPPED,
|
|
",",
|
|
apellido
|
|
PRINT COLUMN 1,
|
|
"Fecha : ",
|
|
x.fecha_orig USING "dd/mm/yy",
|
|
negrillas_on
|
|
PRINT COLUMN 1,
|
|
"Doc. Dev : ",
|
|
z.aplica_a USING "&&&&&&",
|
|
" Factura : ",
|
|
fact_gral.factura USING "&&&&&&"
|
|
PRINT COLUMN 1,
|
|
"Bodega : ",
|
|
"(",
|
|
fact_gral.bodega USING "<<<",
|
|
")",
|
|
xbodega
|
|
PRINT COLUMN 1, "Concepto : ", x.concepto CLIPPED
|
|
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------",
|
|
"------------------------------------------"
|
|
PRINT COLUMN 1,
|
|
"Producto",
|
|
COLUMN 53,
|
|
"Cantidad",
|
|
COLUMN 64,
|
|
"Precio",
|
|
COLUMN 74,
|
|
"%Desc",
|
|
COLUMN 86,
|
|
"Valor Desc",
|
|
COLUMN 97,
|
|
"Total"
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------",
|
|
"------------------------------------------"
|
|
PRINT COLUMN 1, negrillas_off
|
|
|
|
AFTER GROUP OF x.num_doc
|
|
|
|
IF busca1 = "S" THEN
|
|
# DISPLAY "bodega ",fact_gral.bodega," COD_MOV ",z.cod_mov," aplica ",z.aplica_a
|
|
DECLARE venta1 CURSOR FOR
|
|
SELECT DISTINCT a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
SUM(a.cantidad_2),
|
|
c.precio,
|
|
AVG(c.cantidad_2)
|
|
FROM iptb00006 a, iptb00002 b, vetb00003 c
|
|
WHERE 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 = c.cod_n
|
|
AND a.cod_grupo = c.cod_grupo
|
|
AND a.cod_tipo = c.cod_tipo
|
|
AND a.cod_sec = c.cod_sec
|
|
AND a.factura = c.factura
|
|
AND a.cod_mov = z.cod_mov
|
|
AND a.num_doc = z.aplica_a
|
|
AND a.area = c.area
|
|
AND a.bodega = fact_gral.bodega
|
|
GROUP BY a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
c.precio
|
|
ORDER BY a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec
|
|
END IF
|
|
|
|
IF busca2 = "S" THEN
|
|
DECLARE venta2 CURSOR FOR
|
|
SELECT DISTINCT a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
c.descrip_esp,
|
|
SUM(a.cantidad_2),
|
|
b.precio,
|
|
'0'
|
|
FROM iptb00006 a, vetb00025 b, iptb00002 c
|
|
WHERE (a.num_doc = z.aplica_a)
|
|
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 = c.cod_n)
|
|
AND (a.cod_grupo = c.cod_grupo)
|
|
AND (a.cod_tipo = c.cod_tipo)
|
|
AND (a.cod_sec = c.cod_sec)
|
|
AND (a.cod_mov = z.cod_mov)
|
|
AND a.bodega = fact_gral.bodega
|
|
AND b.ventas = "1"
|
|
AND b.tipo_cliente IS NULL
|
|
GROUP BY a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.precio,
|
|
c.descrip_esp
|
|
END IF
|
|
|
|
LET total_bruto = 0
|
|
LET salir = "N"
|
|
IF busca1 = "S" THEN
|
|
FOREACH venta1
|
|
INTO reg_i.area,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
|
|
PRINT COLUMN 1,
|
|
reg_i.area,
|
|
" ",
|
|
reg_i.cod_n USING "&&&&",
|
|
'-',
|
|
reg_i.cod_grupo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_tipo USING "&&&",
|
|
"-",
|
|
reg_i.cod_sec USING "&&&&",
|
|
" ",
|
|
reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
|
|
COLUMN 40,
|
|
reg_i.cantidad USING "###,###.#####",
|
|
2 SPACES,
|
|
reg_i.precio USING "##,###.##",
|
|
2 SPACES,
|
|
reg_i.descuento USING "##,###.##",
|
|
2 SPACES,
|
|
pdescuento USING "###,###.##",
|
|
COLUMN 88,
|
|
reg_i.cantidad * reg_i.precio USING "###,###,###.##"
|
|
|
|
# IF reimpresion = "N" THEN
|
|
INSERT INTO cctb00004(
|
|
tipo_Doc,
|
|
num_Doc,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad,
|
|
precio,
|
|
descuento,
|
|
cod_mov,
|
|
num_doc_almacen,
|
|
bodega,
|
|
porc_Desc)
|
|
VALUES('NC',
|
|
x.num_doc,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
pdescuento,
|
|
z.cod_mov,
|
|
z.aplica_a,
|
|
fact_gral.bodega,
|
|
reg_i.descuento)
|
|
# END IF
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF busca2 = "S" THEN
|
|
FOREACH venta2
|
|
INTO reg_i.area,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
#LET reg_i.descuento = pdescuento
|
|
|
|
IF reimpresion = "N" THEN
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
ELSE
|
|
LET total_bruto = ptotalb
|
|
END IF
|
|
|
|
PRINT COLUMN 1,
|
|
reg_i.cod_n USING "&&&&",
|
|
'-',
|
|
reg_i.cod_grupo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_tipo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_sec USING "&&&&",
|
|
" ",
|
|
reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
|
|
COLUMN 40,
|
|
reg_i.cantidad USING "###,###.####",
|
|
2 SPACES,
|
|
reg_i.precio USING "##,###.##",
|
|
2 SPACES,
|
|
reg_i.descuento USING "##,###.##",
|
|
2 SPACES,
|
|
pdescuento USING "###,###.##",
|
|
COLUMN 88,
|
|
(reg_i.cantidad * reg_i.precio) - pdescuento
|
|
USING "###,###,###.##"
|
|
|
|
# IF reimpresion = "N" THEN
|
|
INSERT INTO cctb00004(
|
|
tipo_Doc,
|
|
num_Doc,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad,
|
|
precio,
|
|
descuento,
|
|
cod_mov,
|
|
num_doc_almacen,
|
|
bodega,
|
|
porc_Desc)
|
|
VALUES('NC',
|
|
x.num_doc,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
pdescuento,
|
|
z.cod_mov,
|
|
z.aplica_a,
|
|
fact_gral.bodega,
|
|
reg_i.descuento)
|
|
|
|
# END IF
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF reimpresion = "S" THEN
|
|
DECLARE busca_codigos CURSOR FOR
|
|
SELECT a.cod_n,
|
|
a.cod_Grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
a.cantidad,
|
|
a.precio,
|
|
a.porc_desc
|
|
FROM cctb00004 a, iptb00002 b
|
|
WHERE a.tipo_doc = 'NC'
|
|
AND a.num_doc = x.num_doc
|
|
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 total_Desc = 0
|
|
LET total_bruto = 0
|
|
|
|
FOREACH busca_codigos
|
|
INTO reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
|
|
PRINT COLUMN 1,
|
|
reg_i.cod_n USING "&&&&",
|
|
'-',
|
|
reg_i.cod_grupo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_tipo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_sec USING "&&&&",
|
|
" ",
|
|
reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
|
|
COLUMN 40,
|
|
reg_i.cantidad USING "###,###.####",
|
|
2 SPACES,
|
|
reg_i.precio USING "##,###.##",
|
|
2 SPACES,
|
|
pdescuento USING "##,###.##",
|
|
COLUMN 88,
|
|
(reg_i.cantidad * reg_i.precio) - pdescuento
|
|
USING "###,###,###.##"
|
|
END FOREACH
|
|
|
|
END IF
|
|
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
END IF
|
|
DISPLAY "1", x.itbi
|
|
IF reimpresion = "N" THEN
|
|
IF chitbis = "S" THEN
|
|
LET x.itbi = (total_bruto - total_desc) * (pitbis / 100)
|
|
DISPLAY "2", x.itbi
|
|
ELSE
|
|
LET x.itbi = 0
|
|
DISPLAY "3", x.itbi
|
|
END IF
|
|
END IF
|
|
|
|
PRINT COLUMN 88, "--------------"
|
|
PRINT COLUMN 60,
|
|
" BRUTO : ",
|
|
COLUMN 88,
|
|
total_bruto USING "###,###,###.##"
|
|
PRINT COLUMN 60,
|
|
" DESC : ",
|
|
COLUMN 88,
|
|
total_Desc USING "---,---,###.##"
|
|
PRINT COLUMN 60,
|
|
"SUB-TOTAL : ",
|
|
COLUMN 88,
|
|
(total_bruto - total_desc) USING "---,---,###.##"
|
|
PRINT COLUMN 60,
|
|
" ITBIS : ",
|
|
pitbis USING "<<<.##",
|
|
"% : ",
|
|
COLUMN 88,
|
|
x.itbi USING "---,---,###.##"
|
|
PRINT COLUMN 60,
|
|
" NETO : ",
|
|
COLUMN 88,
|
|
total_bruto - total_desc + x.itbi USING "---,---,###.##"
|
|
|
|
LET total_nc = (total_bruto + x.itbi)
|
|
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
DISPLAY "4", x.itbi
|
|
END IF
|
|
|
|
{
|
|
ACTUALIZACION DE LA TABLA DE CUENTAS POR COBRAR
|
|
===============================================
|
|
|
|
VALOR NETO (total_nc) SE GUARDA EN EL CAMPO: valor,
|
|
ITBI (x.itbi) SE GUARDA EN EL CAMPO: valor_efectivo,
|
|
EL VALOR BRUTO (total_bruto) SE GUARDA EN EN CAMPO: valor_cheque,
|
|
MONTO DE DESCUENTO(total_desc) EN EL CAMPO: monto_desc
|
|
EL CAMPO NUM_CHEQUE SE UTILIZA PARA EL NUMERO DE DOCUMENTOS
|
|
DE INVENTARIO DEL MOVIMIENTO 12 DE PRODUCTO TERMINADOS}
|
|
|
|
IF reimpresion = "N" THEN
|
|
IF chitbis = 'YES' THEN
|
|
LET chitbis = 'SI'
|
|
ELSE
|
|
LET chitbis = 'NO'
|
|
END IF
|
|
|
|
SELECT a.ult_recibo
|
|
INTO p_num_doc
|
|
FROM cctb00003 a
|
|
WHERE a.tipo_Doc = 'NC'
|
|
IF p_num_doc IS NULL THEN
|
|
INSERT INTO cctb00003(ult_recibo, tipo_doc) VALUES(1, 'NC')
|
|
LET p_num_doc = 1
|
|
END IF
|
|
LET x.num_doc = p_num_doc + 1
|
|
|
|
{ INSERT INTO cctb00011 (num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,chitbis,bodega,porc_itbis,valor_recibo,descuento,
|
|
monto_itbis,valor_bruto,sucid)
|
|
VALUES (x.num_doc,"NC",x.tipo_cliente,x.sec_cliente,otros_mov.detalle,chitbis,fact_gral.bodega,pitbis,total_nc,
|
|
total_desc,x.itbi,total_bruto,psucid)
|
|
}
|
|
INSERT INTO cctb00011(
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
comentario,
|
|
chitbis,
|
|
bodega,
|
|
porc_itbis)
|
|
VALUES(x.num_doc,
|
|
"NC",
|
|
x.tipo_cliente,
|
|
x.sec_cliente,
|
|
otros_mov.detalle,
|
|
chitbis,
|
|
fact_gral.bodega,
|
|
pitbis)
|
|
|
|
INSERT INTO log_devoluciones(
|
|
num_doc,
|
|
cod_mov,
|
|
fecha,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
num_oc,
|
|
cotizacion_no,
|
|
factura,
|
|
observacion,
|
|
fecha_trx)
|
|
VALUES(x.num_doc,
|
|
'NC',
|
|
otros_mov.fecha,
|
|
x.tipo_cliente,
|
|
x.sec_cliente,
|
|
ordenx,
|
|
xcotizacion,
|
|
otros_mov.factura,
|
|
'INSERTE EN LA TABLA CCTB00011',
|
|
getdate())
|
|
|
|
LET total_nc = total_nc * -1
|
|
LET total_bruto = total_bruto * -1
|
|
IF fact_gral.ventas = '1' THEN
|
|
LET xtipo_doc = 'FT'
|
|
ELSE
|
|
LET xtipo_Doc = 'FE'
|
|
END IF
|
|
IF total_nc > 0 THEN
|
|
LET total_nc = total_nc * -1
|
|
END IF
|
|
INSERT INTO cctb00001(
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
aplica_a,
|
|
banco,
|
|
num_cheque,
|
|
valor,
|
|
valor_efectivo,
|
|
valor_cheque,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
bodega,
|
|
tipo_doc_aplica,
|
|
cod_emp,
|
|
num_oc,
|
|
documento_ref)
|
|
VALUES(cia,
|
|
"NC",
|
|
x.num_doc,
|
|
x.tipo_cliente,
|
|
x.sec_cliente,
|
|
x.cod_emp_sec,
|
|
x.fecha_orig,
|
|
fact_gral.factura,
|
|
z.cod_mov,
|
|
z.aplica_a,
|
|
total_nc,
|
|
x.itbi,
|
|
total_bruto,
|
|
total_desc,
|
|
usuarios,
|
|
GETDATE(),
|
|
fact_gral.bodega,
|
|
xtipo_doc,
|
|
psucid,
|
|
ordenx,
|
|
xcotizacion)
|
|
|
|
INSERT INTO log_devoluciones(
|
|
num_doc,
|
|
cod_mov,
|
|
fecha,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
num_oc,
|
|
cotizacion_no,
|
|
factura,
|
|
observacion,
|
|
fecha_trx)
|
|
VALUES(x.num_doc,
|
|
'NC',
|
|
otros_mov.fecha,
|
|
x.tipo_cliente,
|
|
x.sec_cliente,
|
|
ordenx,
|
|
xcotizacion,
|
|
fact_gral.factura,
|
|
'INSERTE EN LA TABLA CCTB00001',
|
|
getdate())
|
|
|
|
UPDATE cctb00003
|
|
SET ult_recibo = x.num_doc
|
|
WHERE tipo_Doc = 'NC'
|
|
|
|
END IF
|
|
PRINT normal
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 6, " Preparado Por", COLUMN 40, " Autorizado Por"
|
|
|
|
PRINT " "
|
|
|
|
PRINT COLUMN 6,
|
|
"---------------------------",
|
|
COLUMN 36,
|
|
"---------------------------"
|
|
|
|
ON LAST ROW
|
|
IF reimpresion = "N" THEN
|
|
|
|
UPDATE cctb00003
|
|
SET ult_recibo = x.num_doc,
|
|
us_crea = SUSER_SNAME(),
|
|
fech_crea = GETDATE(),
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc IN ("NC")
|
|
END IF
|
|
END REPORT
|
|
|
|
REPORT cr_edito1(x, z, nombre_cli, nombre, apellido, cia)
|
|
DEFINE x RECORD
|
|
num_doc LIKE cctb00001.num_doc,
|
|
tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
sec_cliente LIKE cctb00001.sec_cliente,
|
|
cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
fecha_orig LIKE cctb00001.fecha_orig,
|
|
itbi DECIMAL(12, 2),
|
|
concepto CHAR(60)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
aplica_a LIKE cctb00001.aplica_a,
|
|
valor_pen DECIMAL(12, 2),
|
|
desc_p LIKE cctb00001.monto_desc,
|
|
valor_desc DECIMAL(12, 2),
|
|
valor_pag DECIMAL(12, 2)
|
|
END RECORD
|
|
|
|
DEFINE cia SMALLINT
|
|
DEFINE total_nc, total_bruto, sub_total, total_desc, itbis DECIMAL(12, 2)
|
|
DEFINE nombre_cli, nombre, apellido CHAR(30)
|
|
DEFINE comp_on,
|
|
comp_off,
|
|
negrillas_on,
|
|
negrillas_off,
|
|
doble_on,
|
|
doble_off,
|
|
doce,
|
|
normal
|
|
CHAR(2)
|
|
|
|
DEFINE
|
|
reg_i RECORD
|
|
area SMALLINT,
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(100),
|
|
cantidad DEC(18, 5),
|
|
precio DECIMAL(12, 2),
|
|
descuento DEC(12, 2)
|
|
END RECORD,
|
|
lj, j, i, h SMALLINT,
|
|
idxecf, id_tipoProducto INT,
|
|
xtipo_doc CHAR(2),
|
|
xhash VARCHAR(10),
|
|
respuesta, xfechaFirma, xrespuesta, codigo STRING,
|
|
xfecha_modificada DATE,
|
|
ptasa DEC(12, 2),
|
|
montoFactura DEC(18, 2)
|
|
|
|
DEFINE p RECORD
|
|
|
|
trackId STRING,
|
|
codigo INT,
|
|
estado, rnc, encf, secuenciaUtilizada, fechaRecepcion STRING,
|
|
|
|
mensajes DYNAMIC ARRAY OF RECORD
|
|
valor STRING,
|
|
codigo INT
|
|
END RECORD
|
|
|
|
END RECORD
|
|
DEFINE p1 RECORD
|
|
trackId, ERROR, mensaje STRING
|
|
END RECORD
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 4
|
|
# PAGE LENGTH 33
|
|
|
|
ORDER BY x.num_doc
|
|
FORMAT
|
|
#marmotech tienda, santiago_
|
|
#baja y alta resolucion
|
|
BEFORE GROUP OF x.num_doc
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET comp_off = ASCII 18
|
|
LET comp_on = ASCII 15
|
|
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2
|
|
LET j = (90 - LENGTH(p_companias.direccion CLIPPED)) / 2
|
|
LET i = (90 - LENGTH(p_companias.telefono CLIPPED)) / 2
|
|
LET h = (90 - LENGTH(p_companias.rnc CLIPPED)) / 2
|
|
|
|
PRINT comp_on
|
|
PRINT COLUMN lj, normal, doble_on, p_companias.nombre CLIPPED
|
|
PRINT COLUMN j + 3, p_companias.direccion
|
|
PRINT COLUMN i - 9,
|
|
"Tels : ",
|
|
p_companias.telefono,
|
|
" Fax : ",
|
|
p_companias.fax
|
|
PRINT COLUMN h - 1,
|
|
"RNC : ",
|
|
p_companias.rnc CLIPPED,
|
|
COLUMN 100,
|
|
"Pag. ",
|
|
PAGENO USING "###"
|
|
PRINT COLUMN h, "NOTAS DE CREDITOS"
|
|
|
|
IF reimpresion = "S" THEN
|
|
PRINT COLUMN i, "RE-IMPRESION"
|
|
ELSE
|
|
PRINT " "
|
|
END IF
|
|
|
|
PRINT negrillas_on
|
|
|
|
LET total_bruto = 0
|
|
LET total_Desc = 0
|
|
#BUSCA EL NCF DE LA FACTURA EN LA NC
|
|
# DE ESTA FORMA ES QUE EL QUERY ESTABA 1/2/2024
|
|
# SELECT a.codigo_dgii,a.ncf INTO codigodgii_m,num_ncf_m FROM vetb00072 a WHERE a.documento = fact_gral.factura AND
|
|
# a.tipo_doc = 'FT' AND a.sucid = psucid
|
|
SELECT a.ncf, a.fecha_factura, a.prima_us, a.porc_itbi, a.neto
|
|
INTO codigodgii_m,
|
|
xfecha_modificada,
|
|
ptasa,
|
|
pitbis,
|
|
montoFactura
|
|
FROM vetb00002 a
|
|
WHERE a.factura = fact_gral.factura AND a.sucid = psucid
|
|
|
|
#BUSCA EL NCF DE LA NC
|
|
SELECT a.codigo_dgii, a.tipo_ncf
|
|
INTO codigodgii, descripcion_ncf
|
|
FROM vetb00071 a
|
|
WHERE a.tipo_doc = 'NC' AND a.disponible = "S" AND a.sucid = 1
|
|
SELECT a.ncf
|
|
INTO ult_ncf
|
|
FROM vetb00073 a
|
|
WHERE a.tipo_doc = 'NC'
|
|
AND a.codigo_dgii = codigodgii
|
|
AND a.sucid = 1
|
|
IF ult_ncf IS NOT NULL THEN
|
|
LET num_ncf = ult_ncf + 1
|
|
END IF
|
|
# DESCRIPCION BODEGA
|
|
SELECT a.descripcion
|
|
INTO xbodega
|
|
FROM intb00009 a
|
|
WHERE a.cod_bodega = fact_gral.bodega
|
|
|
|
PRINT COLUMN 1,
|
|
"Numero : ",
|
|
doble_on,
|
|
x.num_doc USING "&&&&&&",
|
|
doble_off,
|
|
negrillas_off
|
|
|
|
PRINT COLUMN 1,
|
|
"CLiente : ",
|
|
x.tipo_cliente USING "&&",
|
|
"-",
|
|
x.sec_cliente USING "&&&&&&&&",
|
|
" ",
|
|
nombre_cli
|
|
PRINT COLUMN 1, "Direccion: ", fact_gral.direccion
|
|
PRINT COLUMN 1,
|
|
"Vendedor : ",
|
|
x.cod_emp_sec USING "&&&&",
|
|
" ",
|
|
nombre CLIPPED,
|
|
",",
|
|
apellido
|
|
PRINT COLUMN 1,
|
|
"Fecha : ",
|
|
x.fecha_orig USING "dd/mm/yy",
|
|
negrillas_on
|
|
PRINT COLUMN 1,
|
|
"Doc. Dev : ",
|
|
z.aplica_a USING "&&&&&&",
|
|
" Factura : ",
|
|
fact_gral.factura USING "&&&&&&",
|
|
" NCF MODIFICADO:",
|
|
codigodgii_m CLIPPED
|
|
PRINT COLUMN 1,
|
|
"Bodega : ",
|
|
"(",
|
|
fact_gral.bodega USING "<<<",
|
|
")",
|
|
xbodega
|
|
PRINT COLUMN 1,
|
|
"NCF : ",
|
|
codigodgii CLIPPED,
|
|
num_ncf USING "&&&&&&&&"
|
|
PRINT COLUMN 1, "Concepto : ", x.concepto CLIPPED
|
|
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------",
|
|
"------------------------------------------"
|
|
PRINT COLUMN 1,
|
|
"Producto",
|
|
COLUMN 53,
|
|
"Cantidad",
|
|
COLUMN 64,
|
|
"Precio",
|
|
COLUMN 74,
|
|
"%Desc",
|
|
COLUMN 86,
|
|
"Valor Desc",
|
|
COLUMN 97,
|
|
"Total"
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------",
|
|
"------------------------------------------"
|
|
PRINT COLUMN 1, negrillas_off
|
|
|
|
AFTER GROUP OF x.num_doc
|
|
LET dias_factura = TODAY - xfecha_modificada
|
|
IF dias_factura <= 30 THEN
|
|
LET chitbis = "S"
|
|
ELSE
|
|
LET chitbis = 'N'
|
|
END IF
|
|
IF chitbis = 'S' THEN
|
|
LET documento_encabezado.IndicadorNotaCredito = '0'
|
|
ELSE
|
|
LET documento_encabezado.IndicadorNotaCredito = '1'
|
|
LET pitbis = 0
|
|
END IF
|
|
DISPLAY "CHITBIS :", CHITBIS
|
|
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
|
|
LET total_bruto = 0
|
|
LET itbis = 0
|
|
LET pdescuento = 0
|
|
LET total_desc = 0
|
|
|
|
IF busca1 = "S" THEN
|
|
# DISPLAY "bodega ",fact_gral.bodega," COD_MOV ",z.cod_mov," aplica ",z.aplica_a
|
|
DECLARE venta11 CURSOR FOR
|
|
SELECT DISTINCT a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
SUM(a.cantidad_2),
|
|
c.precio,
|
|
SUM(c.cantidad_2),
|
|
b.tipoproducto
|
|
FROM iptb00006 a, iptb00002 b, vetb00003 c
|
|
WHERE 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 = c.cod_n
|
|
AND a.cod_grupo = c.cod_grupo
|
|
AND a.cod_tipo = c.cod_tipo
|
|
AND a.cod_sec = c.cod_sec
|
|
AND CAST(a.fact_no AS INT) = c.factura
|
|
AND a.cod_mov = z.cod_mov
|
|
AND a.num_doc = z.aplica_a
|
|
AND a.area = c.area
|
|
GROUP BY a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
c.precio,
|
|
b.tipoproducto
|
|
ORDER BY a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec
|
|
END IF
|
|
|
|
LET idxecf = 1
|
|
|
|
IF busca2 = "S" THEN
|
|
DECLARE venta21 CURSOR FOR
|
|
SELECT DISTINCT a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
c.descrip_esp,
|
|
SUM(a.cantidad_2),
|
|
b.precio,
|
|
'0',
|
|
c.tipoproducto
|
|
FROM iptb00006 a, vetb00025 b, iptb00002 c
|
|
WHERE (a.num_doc = z.aplica_a)
|
|
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 = c.cod_n)
|
|
AND (a.cod_grupo = c.cod_grupo)
|
|
AND (a.cod_tipo = c.cod_tipo)
|
|
AND (a.cod_sec = c.cod_sec)
|
|
AND (a.cod_mov = z.cod_mov)
|
|
AND b.ventas = "1"
|
|
AND b.tipo_cliente IS NULL
|
|
GROUP BY a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.precio,
|
|
c.descrip_esp,
|
|
c.tipoproducto
|
|
END IF
|
|
|
|
LET salir = "N"
|
|
IF busca1 = "S" THEN
|
|
FOREACH venta11
|
|
INTO reg_i.area,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento,
|
|
id_tipoProducto
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
LET total_desc =
|
|
(reg_i.precio * reg_i.cantidad)
|
|
* (reg_i.descuento / 100)
|
|
+ total_desc
|
|
|
|
LET pdescuento = reg_i.precio * (reg_i.descuento / 100)
|
|
LET itbis =
|
|
((reg_i.precio - pdescuento) * reg_i.cantidad)
|
|
* (pitbis / 100)
|
|
# LET reg_i.precio = reg_i.precio + itbis
|
|
|
|
PRINT COLUMN 1,
|
|
reg_i.area,
|
|
" ",
|
|
reg_i.cod_n USING "&&&&",
|
|
'-',
|
|
reg_i.cod_grupo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_tipo USING "&&&",
|
|
"-",
|
|
reg_i.cod_sec USING "&&&&",
|
|
" ",
|
|
reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
|
|
COLUMN 40,
|
|
reg_i.cantidad USING "###,###.#####",
|
|
2 SPACES,
|
|
reg_i.precio USING "##,###.##",
|
|
2 SPACES,
|
|
reg_i.descuento USING "##,###.##",
|
|
2 SPACES,
|
|
pdescuento USING "###,###.##",
|
|
COLUMN 88,
|
|
reg_i.cantidad * reg_i.precio USING "###,###,###.##"
|
|
LET reg_i.precio = reg_i.precio - pdescuento
|
|
# IF reimpresion = "N" THEN
|
|
INSERT INTO cctb00010(
|
|
tipo_Doc,
|
|
num_Doc,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad,
|
|
precio,
|
|
descuento,
|
|
cod_mov,
|
|
num_doc_almacen,
|
|
bodega,
|
|
porc_Desc,
|
|
itbis,
|
|
us_crea,
|
|
fech_crea,
|
|
descripcion)
|
|
VALUES('NC',
|
|
x.num_doc,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
'0',
|
|
z.cod_mov,
|
|
z.aplica_a,
|
|
fact_gral.bodega,
|
|
'0',
|
|
itbis,
|
|
usuarios,
|
|
getdate(),
|
|
reg_i.descrip_esp)
|
|
# END IF
|
|
----------->Documento Detalle OBLIGATORIO NC
|
|
LET documento_detalle[idxecf].DescripcionItem = NULL
|
|
LET documento_detalle[idxecf].cantidadItem =
|
|
reg_i.cantidad USING "<<<<<<<<<<<<<&.##"
|
|
LET documento_detalle[idxecf].montoItem =
|
|
(reg_i.precio * reg_i.cantidad) * ptasa
|
|
USING "<<<<<<<<<<<<<&.##"
|
|
LET documento_detalle[idxecf].precioUnitarioItem =
|
|
reg_i.precio * ptasa USING "<<<<<<<<<<<&.##"
|
|
LET documento_detalle[idxecf].indicadorFacturacion =
|
|
'1' --no s� que campo colocar
|
|
LET documento_detalle[idxecf].nombreItem =
|
|
reg_i.descrip_esp[
|
|
1,
|
|
79] CLIPPED --Tengo la descripcion pero no el nombre del producto
|
|
LET documento_detalle[idxecf].indicadorBienoServicio =
|
|
id_tipoProducto --el generafile llena este campo, pero no estoy convencido
|
|
|
|
LET idxecf = idxecf + 1
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF busca2 = "S" THEN
|
|
FOREACH venta21
|
|
INTO reg_i.area,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento,
|
|
id_tipoProducto
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
#LET reg_i.descuento = pdescuento
|
|
|
|
IF reimpresion = "N" THEN
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
ELSE
|
|
LET total_bruto = ptotalb
|
|
END IF
|
|
|
|
PRINT COLUMN 1,
|
|
reg_i.cod_n USING "&&&&",
|
|
'-',
|
|
reg_i.cod_grupo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_tipo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_sec USING "&&&&",
|
|
" ",
|
|
reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
|
|
COLUMN 40,
|
|
reg_i.cantidad USING "###,###.####",
|
|
2 SPACES,
|
|
reg_i.precio USING "##,###.##",
|
|
2 SPACES,
|
|
reg_i.descuento USING "##,###.##",
|
|
2 SPACES,
|
|
pdescuento USING "###,###.##",
|
|
COLUMN 88,
|
|
(reg_i.cantidad * reg_i.precio) - pdescuento
|
|
USING "###,###,###.##"
|
|
LET reg_i.precio = reg_i.precio - pdescuento
|
|
# IF reimpresion = "N" THEN
|
|
INSERT INTO cctb00010(
|
|
tipo_Doc,
|
|
num_Doc,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad,
|
|
precio,
|
|
descuento,
|
|
cod_mov,
|
|
num_doc_almacen,
|
|
bodega,
|
|
porc_Desc,
|
|
itbis,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES('NC',
|
|
x.num_doc,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
'0',
|
|
z.cod_mov,
|
|
z.aplica_a,
|
|
fact_gral.bodega,
|
|
'0',
|
|
itbis,
|
|
usuarios,
|
|
getdate())
|
|
#
|
|
# END IF
|
|
----------->Documento Detalle OBLIGATORIO NC
|
|
LET documento_detalle[idxecf].DescripcionItem = NULL
|
|
LET documento_detalle[idxecf].cantidadItem =
|
|
reg_i.cantidad USING "<<<<<<<<<<<<<<.##"
|
|
LET documento_detalle[idxecf].montoItem =
|
|
(reg_i.precio * reg_i.cantidad) * ptasa
|
|
USING "<<<<<<<<<<<<<<.##"
|
|
LET documento_detalle[idxecf].precioUnitarioItem =
|
|
reg_i.precio * ptasa USING "<<<<<<<<<<<<.##"
|
|
LET documento_detalle[idxecf].indicadorFacturacion =
|
|
'1' --no s� que campo colocar
|
|
LET documento_detalle[idxecf].nombreItem =
|
|
reg_i.descrip_esp[
|
|
1,
|
|
79] CLIPPED --Tengo la descripcion pero no el nombre del producto
|
|
LET documento_detalle[idxecf].indicadorBienoServicio =
|
|
id_tipoProducto --el generafile llena este campo, pero no estoy convencido
|
|
|
|
LET idxecf = idxecf + 1
|
|
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF reimpresion = "S" THEN
|
|
DECLARE busca_codigos1 CURSOR FOR
|
|
SELECT a.cod_n,
|
|
a.cod_Grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
a.cantidad,
|
|
a.precio,
|
|
a.porc_desc,
|
|
b.tipoproducto
|
|
FROM cctb00004 a, iptb00002 b
|
|
WHERE a.tipo_doc = 'NC'
|
|
AND a.num_doc = x.num_doc
|
|
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 total_Desc = 0
|
|
LET total_bruto = 0
|
|
LET idxecf = 1
|
|
FOREACH busca_codigos1
|
|
INTO reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento,
|
|
id_tipoProducto
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
|
|
PRINT COLUMN 1,
|
|
reg_i.cod_n USING "&&&&",
|
|
'-',
|
|
reg_i.cod_grupo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_tipo USING "&&&&",
|
|
"-",
|
|
reg_i.cod_sec USING "&&&&",
|
|
" ",
|
|
reg_i.descrip_esp WORDWRAP RIGHT MARGIN 45,
|
|
COLUMN 40,
|
|
reg_i.cantidad USING "###,###.####",
|
|
2 SPACES,
|
|
reg_i.precio USING "##,###.##",
|
|
2 SPACES,
|
|
pdescuento USING "##,###.##",
|
|
COLUMN 88,
|
|
(reg_i.cantidad * reg_i.precio) - pdescuento
|
|
USING "###,###,###.##"
|
|
|
|
LET reg_i.precio = reg_i.precio - pdescuento
|
|
----------->Documento Detalle OBLIGATORIO NC
|
|
LET documento_detalle[idxecf].DescripcionItem = NULL
|
|
LET documento_detalle[idxecf].cantidadItem =
|
|
reg_i.cantidad USING "<<<<<<<<<<<<<<.##"
|
|
LET documento_detalle[idxecf].montoItem =
|
|
(reg_i.precio * reg_i.cantidad) * ptasa
|
|
USING "<<<<<<<<<<<<<<.##"
|
|
LET documento_detalle[idxecf].precioUnitarioItem =
|
|
reg_i.precio * ptasa USING "<<<<<<<<<<<<.##"
|
|
LET documento_detalle[idxecf].indicadorFacturacion =
|
|
'1' --no s� que campo colocar
|
|
LET documento_detalle[idxecf].nombreItem =
|
|
reg_i.descrip_esp[
|
|
1,
|
|
79] CLIPPED --Tengo la descripcion pero no el nombre del producto
|
|
LET documento_detalle[idxecf].indicadorBienoServicio =
|
|
id_tipoProducto --el generafile llena este campo, pero no estoy convencido
|
|
|
|
LET idxecf = idxecf + 1
|
|
|
|
END FOREACH
|
|
|
|
END IF
|
|
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
END IF
|
|
--_chitbis
|
|
IF reimpresion = "N" THEN
|
|
IF chitbis = "S" THEN
|
|
LET x.itbi = (total_bruto - total_desc) * (pitbis / 100)
|
|
ELSE
|
|
LET x.itbi = 0
|
|
END IF
|
|
END IF
|
|
LET total_nc = (total_bruto - total_Desc + x.itbi)
|
|
PRINT COLUMN 88, "--------------"
|
|
PRINT COLUMN 60,
|
|
" BRUTO : ",
|
|
COLUMN 88,
|
|
total_bruto USING "###,###,###.##"
|
|
PRINT COLUMN 60,
|
|
" DESC : ",
|
|
COLUMN 88,
|
|
total_Desc USING "---,---,###.##"
|
|
PRINT COLUMN 60,
|
|
"SUB-TOTAL : ",
|
|
COLUMN 88,
|
|
(total_bruto - total_desc) USING "---,---,###.##"
|
|
PRINT COLUMN 60,
|
|
" ITBIS : ",
|
|
pitbis USING "<<<.##",
|
|
"% : ",
|
|
COLUMN 88,
|
|
x.itbi USING "---,---,###.##"
|
|
PRINT COLUMN 60,
|
|
" NETO : ",
|
|
COLUMN 88,
|
|
total_nc USING "---,---,###.##"
|
|
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
END IF
|
|
|
|
{
|
|
ACTUALIZACION DE LA TABLA DE CUENTAS POR COBRAR
|
|
===============================================
|
|
|
|
VALOR NETO (total_nc) SE GUARDA EN EL CAMPO: valor,
|
|
ITBI (x.itbi) SE GUARDA EN EL CAMPO: valor_efectivo,
|
|
EL VALOR BRUTO (total_bruto) SE GUARDA EN EN CAMPO: valor_cheque,
|
|
MONTO DE DESCUENTO(total_desc) EN EL CAMPO: monto_desc
|
|
EL CAMPO NUM_CHEQUE SE UTILIZA PARA EL NUMERO DE DOCUMENTOS
|
|
DE INVENTARIO DEL MOVIMIENTO 12 DE PRODUCTO TERMINADOS}
|
|
|
|
IF reimpresion = "N" THEN
|
|
IF _chitbis = 'YES' THEN
|
|
LET _chitbis = 'SI'
|
|
ELSE
|
|
LET _chitbis = 'NO'
|
|
END IF
|
|
# BEGIN WORK
|
|
|
|
INSERT INTO cctb00011(
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
comentario,
|
|
chitbis,
|
|
bodega,
|
|
porc_itbis,
|
|
valor_recibo,
|
|
descuento,
|
|
monto_itbis,
|
|
valor_bruto,
|
|
sucid,
|
|
tipo_nc)
|
|
VALUES(x.num_doc,
|
|
"NC",
|
|
x.tipo_cliente,
|
|
x.sec_cliente,
|
|
otros_mov.detalle,
|
|
chitbis,
|
|
fact_gral.bodega,
|
|
pitbis,
|
|
total_nc,
|
|
total_desc,
|
|
x.itbi,
|
|
total_bruto,
|
|
psucid,
|
|
'01')
|
|
|
|
LET total_nc = total_nc * -1
|
|
LET total_bruto = total_bruto * -1
|
|
IF fact_gral.ventas = '1' THEN
|
|
LET xtipo_doc = 'FT'
|
|
|
|
ELSE
|
|
LET xtipo_Doc = 'FE'
|
|
END IF
|
|
|
|
SELECT MAX(a.fecha_Ven)
|
|
INTO fechaVencimiento
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = fact_gral.factura
|
|
AND a.tipo_doc = xtipo_doc
|
|
AND a.tipo_cliente = x.tipo_cliente
|
|
AND a.sec_cliente = x.sec_cliente
|
|
|
|
IF num_ncf > 0 THEN
|
|
UPDATE vetb00073
|
|
SET ncf = num_ncf
|
|
WHERE tipo_doc = 'NC'
|
|
AND codigo_dgii = codigodgii
|
|
AND sucid = 1
|
|
INSERT INTO vetb00072(
|
|
documento,
|
|
tipo_doc,
|
|
codigo_dgii,
|
|
ncf,
|
|
us_crea,
|
|
fech_crea,
|
|
sucid)
|
|
VALUES(x.num_doc,
|
|
'NC',
|
|
codigodgii,
|
|
num_ncf,
|
|
usuarios,
|
|
getdate(),
|
|
psucid)
|
|
END IF
|
|
|
|
IF total_nc > 0 THEN
|
|
LET total_nc = total_nc * -1
|
|
END IF
|
|
|
|
LET documento_encabezado.eNcf =
|
|
"E", codigodgii CLIPPED, num_ncf USING "&&&&&&&&&&"
|
|
|
|
INSERT INTO cctb00001(
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
aplica_a,
|
|
banco,
|
|
num_cheque,
|
|
valor,
|
|
valor_efectivo,
|
|
valor_cheque,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
bodega,
|
|
tipo_doc_aplica,
|
|
cod_emp,
|
|
sucid,
|
|
localidad_aplica_a,
|
|
num_oc,
|
|
documento_ref,
|
|
num_doc_c,
|
|
ncf,
|
|
itbis)
|
|
VALUES(cia,
|
|
"NC",
|
|
x.num_doc,
|
|
x.tipo_cliente,
|
|
x.sec_cliente,
|
|
x.cod_emp_sec,
|
|
x.fecha_orig,
|
|
fact_gral.factura,
|
|
z.cod_mov,
|
|
z.aplica_a,
|
|
total_nc,
|
|
total_bruto,
|
|
'0',
|
|
'0', # total_desc---COLOQUE ESTO EN COMENTARIO PORQUE ESTABA DISTORCIONANDO EL VALOR CUANDO SE IMPRIMEN LOS REPORTES,
|
|
usuarios,
|
|
GETDATE(),
|
|
fact_gral.bodega,
|
|
xtipo_doc,
|
|
psucid,
|
|
psucid,
|
|
psucid,
|
|
ordenx,
|
|
xcotizacion,
|
|
num_cr_e,
|
|
documento_encabezado.eNcf,
|
|
x.itbi)
|
|
|
|
UPDATE cctb00003
|
|
SET ult_recibo = x.num_doc
|
|
WHERE tipo_Doc = 'NC'
|
|
|
|
------->Documento Encabezado OBLIGATORIO
|
|
LET documento_encabezado.tipoEcf = '34'
|
|
|
|
LET documento_encabezado.rncEmisor = p_companias.rnc CLIPPED
|
|
LET documento_encabezado.razonSocialEmisor =
|
|
p_companias.nombre CLIPPED
|
|
LET documento_encabezado.direccionEmisor =
|
|
p_companias.direccion CLIPPED
|
|
LET documento_encabezado.Municipio =
|
|
id_municipio_dgii USING "&&&&&&"
|
|
LET documento_encabezado.Provincia =
|
|
id_provincia_dgii USING "&&&&&&"
|
|
LET documento_encabezado.fechaLimitePago =
|
|
fechaVencimiento USING "dd-mm-yyyy"
|
|
|
|
IF total_nc < 0 THEN
|
|
LET total_nc = total_nc * -1
|
|
END IF
|
|
LET documento_encabezado.montoTotal =
|
|
total_nc * ptasa USING "<<<<<<<<<<<<<<<&.##"
|
|
|
|
# IF x.itbi > 0 THEN
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
END IF
|
|
LET documento_encabezado.montoGravadoTotal =
|
|
(total_nc - x.itbi) * ptasa USING "<<<<<<<<<<<<<&.##"
|
|
LET documento_encabezado.montoGravadoI1 =
|
|
(total_nc - x.itbi) * ptasa USING "<<<<<<<<<<<<<&.##"
|
|
|
|
LET documento_encabezado.itbis1 = pitbis USING "&&"
|
|
|
|
LET documento_encabezado.totalItbis =
|
|
x.itbi * ptasa USING "<<<<<<<<<<<<<<<&.##"
|
|
LET documento_encabezado.totalItbis1 =
|
|
x.itbi * ptasa USING "<<<<<<<<<<<<<<<&.##"
|
|
# END IF
|
|
|
|
LET documento_encabezado.tipoIngreso = '01'
|
|
|
|
LET documento_encabezado.indicadorMontoGravado = '0'
|
|
|
|
LET documento_encabezado.razonSocialComprador =
|
|
nombre_cli CLIPPED
|
|
LET documento_encabezado.codigoVendedor = x.cod_emp_sec
|
|
LET documento_encabezado.numeroFacturaInterna =
|
|
fact_gral.factura
|
|
|
|
LET documento_encabezado.fechaEmision =
|
|
x.fecha_orig
|
|
USING "dd-mm-yyyy" --Creo deberia usar getdate porque es una fecha diferente
|
|
{Si es un getdate entonces restar dias fecha emision de fecha_org, si es > 30 entonces llenar
|
|
IndicadorNotaCredito }
|
|
|
|
LET documento_encabezado.NCFmodificado = codigodgii_m CLIPPED
|
|
LET documento_encabezado.fechaNCFmodificado =
|
|
xfecha_modificada USING "dd-mm-yyyy"
|
|
|
|
# LET documento_encabezado.codigoModificacion = idtipo
|
|
|
|
LET documento_encabezado.nombreFile =
|
|
p_companias.rnc CLIPPED,
|
|
"E",
|
|
codigodgii CLIPPED,
|
|
num_ncf USING "&&&&&&&&&&",
|
|
".xml"
|
|
IF total_nc < 0 THEN
|
|
LET total_nc = total_nc * 1
|
|
END IF
|
|
IF montoFactura <> total_nc THEN
|
|
LET documento_encabezado.codigoModificacion = 3
|
|
ELSE
|
|
LET documento_encabezado.codigoModificacion = 1
|
|
END IF
|
|
#LET documento_encabezado.fechaEmision=NULL
|
|
IF (total_nc - x.itbi) * ptasa > 0 THEN
|
|
CALL generafile(
|
|
documento_encabezado.*,
|
|
documento_detalle,
|
|
psucid,
|
|
psucid,
|
|
'adicionar')
|
|
RETURNING xhash, respuesta, xfechaFirma, codigo
|
|
DISPLAY "Aqui es lo que viene IPPRMT044: ",
|
|
respuesta,
|
|
" codigo: ",
|
|
codigo
|
|
|
|
UPDATE cctb00001
|
|
SET hash = xhash,
|
|
ultima_respuesta = respuesta,
|
|
fechaFirmaDigital = xfechaFirma
|
|
WHERE num_doc = x.num_doc AND tipo_Doc = 'NC'
|
|
|
|
IF codigo = '200' THEN
|
|
CALL procesoEncf(
|
|
' ',
|
|
"produccion",
|
|
' ',
|
|
0,
|
|
0,
|
|
'consultatrackid',
|
|
respuesta)
|
|
RETURNING phash, xrespuesta, codigo
|
|
|
|
DISPLAY "consulta trackid: ", xrespuesta
|
|
IF codigo = '200' THEN
|
|
CALL util.JSON.parse(xrespuesta, p)
|
|
ELSE
|
|
DISPLAY "consulta trackid CON ERROR: ", xrespuesta
|
|
END IF
|
|
|
|
ELSE
|
|
CALL util.JSON.parse(respuesta, p1)
|
|
DISPLAY "consulta trackid CON ERROR DEL PRIMER IF: ",
|
|
xrespuesta
|
|
LET p.trackId = p1.trackId
|
|
END IF
|
|
# TRY
|
|
|
|
# CALL procesoEncf(' ',"test",' ',0,0,'consultatrackid',respuesta)
|
|
# RETURNING phash,xrespuesta
|
|
# CALL util.JSON.parse(xrespuesta,p)
|
|
# DISPLAY "estado respuesta: ",p.estado
|
|
# CATCH
|
|
# LET xtrack.mensaje="NO PUDE PARSEAR LA RESPUESTA EN EL PROGRAMA IPPRMT044"
|
|
# END TRY
|
|
|
|
UPDATE cctb00001
|
|
SET trackid = p.trackId,
|
|
estado_dgii = p.estado,
|
|
mensaje = p1.mensaje
|
|
WHERE num_doc = x.num_doc AND tipo_Doc = 'NC'
|
|
|
|
END IF
|
|
|
|
END IF
|
|
PRINT NORMAL
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 6, " Preparado Por", COLUMN 40, " Autorizado Por"
|
|
|
|
PRINT " "
|
|
|
|
PRINT COLUMN 6,
|
|
"---------------------------",
|
|
COLUMN 36,
|
|
"---------------------------"
|
|
|
|
ON LAST ROW
|
|
IF reimpresion = "N" THEN
|
|
|
|
UPDATE cctb00003
|
|
SET ult_recibo = x.num_doc,
|
|
us_crea = SUSER_SNAME(),
|
|
fech_crea = GETDATE(),
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc IN ("NC")
|
|
END IF
|
|
END REPORT
|
|
|
|
REPORT cr_edito1_encf(x, z, nombre_cli, nombre, apellido, cia)
|
|
DEFINE x RECORD
|
|
num_doc LIKE cctb00001.num_doc,
|
|
tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
sec_cliente LIKE cctb00001.sec_cliente,
|
|
cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
fecha_orig LIKE cctb00001.fecha_orig,
|
|
itbi DECIMAL(12, 2),
|
|
concepto CHAR(60)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
aplica_a LIKE cctb00001.aplica_a,
|
|
valor_pen DECIMAL(12, 2),
|
|
desc_p LIKE cctb00001.monto_desc,
|
|
valor_desc DECIMAL(12, 2),
|
|
valor_pag DECIMAL(12, 2)
|
|
END RECORD
|
|
|
|
DEFINE cia SMALLINT
|
|
DEFINE total_nc,
|
|
total_bruto,
|
|
sub_total,
|
|
total_desc,
|
|
itbis,
|
|
valor_neto,
|
|
valor_bruto,
|
|
total_neto
|
|
DECIMAL(12, 2)
|
|
DEFINE nombre_cli, nombre, apellido CHAR(30)
|
|
|
|
DEFINE
|
|
reg_i RECORD
|
|
area SMALLINT,
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(100),
|
|
cantidad DEC(18, 5),
|
|
precio DECIMAL(12, 2),
|
|
descuento DEC(12, 2)
|
|
END RECORD,
|
|
ch_ncf_m, ch_ncf STRING
|
|
|
|
ORDER BY x.num_doc
|
|
FORMAT
|
|
#marmotech tienda, santiago_
|
|
#baja y alta resolucion
|
|
BEFORE GROUP OF x.num_doc
|
|
|
|
PRINTX p_companias.nombre,
|
|
p_companias.direccion,
|
|
p_companias.telefono,
|
|
p_companias.rnc
|
|
|
|
LET total_bruto = 0
|
|
LET total_Desc = 0
|
|
#BUSCA EL NCF DE LA FACTURA EN LA NC
|
|
# SELECT a.ncf INTO codigodgii_m FROM vetb00072 a WHERE a.documento = fact_gral.factura AND
|
|
# a.tipo_doc = 'FT' AND a.sucid = psucid
|
|
|
|
#BUSCA EL NCF DE LA NC
|
|
SELECT a.codigo_dgii, a.tipo_ncf
|
|
INTO codigodgii, descripcion_ncf
|
|
FROM vetb00071 a
|
|
WHERE a.tipo_doc = 'NC' AND a.disponible = "S" AND a.sucid = 1
|
|
SELECT a.ncf
|
|
INTO ult_ncf
|
|
FROM vetb00073 a
|
|
WHERE a.tipo_doc = 'NC'
|
|
AND a.codigo_dgii = codigodgii
|
|
AND a.sucid = 1
|
|
IF ult_ncf IS NOT NULL THEN
|
|
LET num_ncf = ult_ncf + 1
|
|
END IF
|
|
# DESCRIPCION BODEGA
|
|
SELECT a.descripcion
|
|
INTO xbodega
|
|
FROM intb00009 a
|
|
WHERE a.cod_bodega = fact_gral.bodega
|
|
# LET ch_ncf = "E",codigodgii CLIPPED,num_ncf USING "&&&&&&&&&&"
|
|
LET ch_ncf_m = codigodgii_m CLIPPED
|
|
|
|
PRINTX x.tipo_cliente,
|
|
x.sec_cliente,
|
|
nombre_cli,
|
|
fact_gral.direccion,
|
|
x.cod_emp_sec,
|
|
nombre,
|
|
apellido,
|
|
x.fecha_orig,
|
|
z.aplica_a,
|
|
fact_gral.factura,
|
|
ch_ncf_m,
|
|
ch_ncf
|
|
PRINTX fact_gral.bodega, xbodega
|
|
|
|
PRINTX x.concepto
|
|
|
|
AFTER GROUP OF x.num_doc
|
|
IF busca1 = "S" THEN
|
|
# DISPLAY "bodega ",fact_gral.bodega," COD_MOV ",z.cod_mov," aplica ",z.aplica_a
|
|
DECLARE venta111 CURSOR FOR
|
|
SELECT DISTINCT a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
SUM(a.cantidad_2),
|
|
c.precio,
|
|
AVG(c.cantidad_2)
|
|
FROM iptb00006 a, iptb00002 b, vetb00003 c
|
|
WHERE 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 = c.cod_n
|
|
AND a.cod_grupo = c.cod_grupo
|
|
AND a.cod_tipo = c.cod_tipo
|
|
AND a.cod_sec = c.cod_sec
|
|
AND CAST(a.fact_no AS INT) = c.factura
|
|
AND a.cod_mov = z.cod_mov
|
|
AND a.num_doc = z.aplica_a
|
|
AND a.area = c.area
|
|
GROUP BY a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
c.precio
|
|
ORDER BY a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec
|
|
END IF
|
|
|
|
IF busca2 = "S" THEN
|
|
DECLARE venta211 CURSOR FOR
|
|
SELECT DISTINCT a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
c.descrip_esp,
|
|
SUM(a.cantidad_2),
|
|
b.precio,
|
|
'0'
|
|
FROM iptb00006 a, vetb00025 b, iptb00002 c
|
|
WHERE (a.num_doc = z.aplica_a)
|
|
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 = c.cod_n)
|
|
AND (a.cod_grupo = c.cod_grupo)
|
|
AND (a.cod_tipo = c.cod_tipo)
|
|
AND (a.cod_sec = c.cod_sec)
|
|
AND (a.cod_mov = z.cod_mov)
|
|
AND b.ventas = "1"
|
|
AND b.tipo_cliente IS NULL
|
|
GROUP BY a.area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.precio,
|
|
c.descrip_esp
|
|
END IF
|
|
|
|
LET total_bruto = 0
|
|
LET salir = "N"
|
|
IF busca1 = "S" THEN
|
|
FOREACH venta111
|
|
INTO reg_i.area,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
LET valor_bruto = reg_i.cantidad * reg_i.precio
|
|
|
|
PRINTX reg_i.area,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento,
|
|
pdescuento,
|
|
valor_bruto
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF busca2 = "S" THEN
|
|
FOREACH venta211
|
|
INTO reg_i.area,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
#LET reg_i.descuento = pdescuento
|
|
|
|
IF reimpresion = "N" THEN
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
ELSE
|
|
LET total_bruto = ptotalb
|
|
END IF
|
|
|
|
LET valor_neto =
|
|
(reg_i.cantidad * reg_i.precio) - pdescuento
|
|
PRINTX COLUMN 1,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento,
|
|
pdescuento,
|
|
valor_neto
|
|
|
|
IF reimpresion = "N" THEN
|
|
INSERT INTO cctb00004(
|
|
tipo_Doc,
|
|
num_Doc,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad,
|
|
precio,
|
|
descuento,
|
|
cod_mov,
|
|
num_doc_almacen,
|
|
bodega,
|
|
porc_Desc)
|
|
VALUES('NC',
|
|
x.num_doc,
|
|
reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
pdescuento,
|
|
z.cod_mov,
|
|
z.aplica_a,
|
|
fact_gral.bodega,
|
|
reg_i.descuento)
|
|
|
|
END IF
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF reimpresion = "S" THEN
|
|
DECLARE busca_codigos11 CURSOR FOR
|
|
SELECT a.cod_n,
|
|
a.cod_Grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
b.descrip_esp,
|
|
a.cantidad,
|
|
a.precio,
|
|
a.porc_desc
|
|
FROM cctb00004 a, iptb00002 b
|
|
WHERE a.tipo_doc = 'NC'
|
|
AND a.num_doc = x.num_doc
|
|
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 total_Desc = 0
|
|
LET total_bruto = 0
|
|
|
|
FOREACH busca_codigos11
|
|
INTO reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET pdescuento =
|
|
(reg_i.cantidad * reg_i.precio)
|
|
* (reg_i.descuento / 100)
|
|
LET total_desc = pdescuento + total_desc
|
|
LET total_bruto =
|
|
total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
LET valor_neto =
|
|
(reg_i.cantidad * reg_i.precio) - pdescuento
|
|
|
|
PRINTX reg_i.cod_n,
|
|
reg_i.cod_grupo,
|
|
reg_i.cod_tipo,
|
|
reg_i.cod_sec,
|
|
reg_i.descrip_esp,
|
|
reg_i.cantidad,
|
|
reg_i.precio,
|
|
pdescuento,
|
|
valor_neto
|
|
END FOREACH
|
|
|
|
END IF
|
|
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
SELECT a.porc_itbi
|
|
INTO pitbis
|
|
FROM vetb00002 a
|
|
WHERE a.factura = fact_gral.factura
|
|
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
END IF
|
|
--_chitbis
|
|
IF reimpresion = "N" THEN
|
|
IF chitbis = "S" THEN
|
|
LET x.itbi = (total_bruto - total_desc) * (pitbis / 100)
|
|
ELSE
|
|
LET x.itbi = 0
|
|
END IF
|
|
END IF
|
|
|
|
LET sub_total = (total_bruto - total_desc)
|
|
LET total_neto = sub_total + x.itbi
|
|
|
|
PRINTX total_bruto,
|
|
total_Desc,
|
|
sub_total,
|
|
pitbis,
|
|
x.itbi,
|
|
total_neto
|
|
|
|
LET total_nc = total_neto
|
|
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
END IF
|
|
|
|
{
|
|
ACTUALIZACION DE LA TABLA DE CUENTAS POR COBRAR
|
|
===============================================
|
|
|
|
VALOR NETO (total_nc) SE GUARDA EN EL CAMPO: valor,
|
|
ITBI (x.itbi) SE GUARDA EN EL CAMPO: valor_efectivo,
|
|
EL VALOR BRUTO (total_bruto) SE GUARDA EN EN CAMPO: valor_cheque,
|
|
MONTO DE DESCUENTO(total_desc) EN EL CAMPO: monto_desc
|
|
EL CAMPO NUM_CHEQUE SE UTILIZA PARA EL NUMERO DE DOCUMENTOS
|
|
DE INVENTARIO DEL MOVIMIENTO 12 DE PRODUCTO TERMINADOS}
|
|
|
|
IF reimpresion = "N" THEN
|
|
IF _chitbis = 'YES' THEN
|
|
LET _chitbis = 'SI'
|
|
ELSE
|
|
LET _chitbis = 'NO'
|
|
END IF
|
|
|
|
END IF
|
|
|
|
ON LAST ROW
|
|
|
|
END REPORT
|
|
{
|
|
FUNCTION integridad()
|
|
IF sqlca.sqlcode < 0 THEN
|
|
LET numero_msg = sqlca.sqlcode
|
|
CALL msg(numero_msg)
|
|
DISPLAY numero_msg AT 23,70
|
|
LET bandera = 1
|
|
LET status = 0
|
|
SLEEP 2
|
|
RETURN
|
|
END IF
|
|
|
|
RETURN
|
|
END FUNCTION
|
|
}
|
|
FUNCTION repetir1()
|
|
|
|
DEFINE ant_art RECORD
|
|
aplica_a INTEGER,
|
|
valor_pag INTEGER
|
|
END RECORD
|
|
|
|
LET ant_art.aplica_a = otros_mov.num_doc --CHEQUEAR SI ES FACTURA
|
|
LET ant_art.valor_pag = arr_recibo.valor_pag
|
|
|
|
--FOR idx = 1 to arr_count()
|
|
--IF idx != curr THEN
|
|
IF arr_recibo.aplica_a IS NOT NULL AND arr_recibo.valor_pag IS NOT NULL THEN
|
|
IF arr_recibo.aplica_a = ant_art.aplica_a
|
|
AND arr_recibo.valor_pag = ant_art.valor_pag THEN
|
|
--LET numero_msg = 21
|
|
--CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
ELSE
|
|
IF bandera != 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
END IF
|
|
--END IF
|
|
--END FOR
|
|
DISPLAY "REPITIENDO bandera", bandera
|
|
END FUNCTION
|
|
|
|
FUNCTION prod()
|
|
|
|
LET a_ano = YEAR(p_fechas)
|
|
LET mes_control = MONTH(TODAY)
|
|
LET mes_calc = mes_control
|
|
|
|
IF mes_calc = 01 THEN
|
|
LET mes_calc = 13
|
|
LET a_ano = YEAR(TODAY - 32)
|
|
END IF
|
|
|
|
--Aqui la funcion se posicionaba en dos meses
|
|
--para el control del documento
|
|
LET mes_calc = mes_calc - 2
|
|
|
|
IF mes_calc <= 0 THEN
|
|
LET mes_calc = 12
|
|
LET a_ano = YEAR(TODAY) - 1
|
|
END IF
|
|
|
|
LET c_ano = YEAR(TODAY)
|
|
|
|
SELECT MIN(fecha_corte)
|
|
INTO fecha_c
|
|
FROM prdtable
|
|
WHERE fecha_corte >= p_fechas
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 58
|
|
CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
END IF
|
|
|
|
SELECT MIN(dias_gracia) INTO dia FROM prdtable WHERE fecha_corte = fecha_c
|
|
|
|
IF dia IS NULL THEN
|
|
LET dia = 0
|
|
END IF
|
|
|
|
SELECT UNIQUE a.usuario FROM seg0003 a WHERE a.usuario = SUSER_SNAME()
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET fecha_c = fecha_c + dia
|
|
END IF
|
|
|
|
LET comp_fech = fecha_c
|
|
LET comp_fech1 = TODAY
|
|
|
|
IF comp_fech < comp_fech1 THEN
|
|
LET numero_msg = 57
|
|
CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION informacion()
|
|
CALL bodegas(1)
|
|
SELECT a.descripcion
|
|
INTO xbodega
|
|
FROM intb00009 a
|
|
WHERE a.cod_bodega = fact_gral.bodega
|
|
|
|
SELECT b.nombre,
|
|
a.calle || ' ' || a.casa_num || ' ' || a.urbanizacion || ' ' || a.barrio
|
|
INTO nom_cli, fact_gral.direccion
|
|
FROM vetb00004 b, vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente)
|
|
AND (b.sec_cliente = recibo.sec_cliente)
|
|
AND b.tipo_cliente = a.tipo_cliente
|
|
AND b.sec_cliente = a.sec_cliente
|
|
|
|
SELECT a.nom1_emp, a.apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = psec_vend
|
|
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3 CLIPPED
|
|
DISPLAY BY NAME recibo.*, nom_cli, nombre_emp, fact_gral.bodega
|
|
DISPLAY arr_recibo.cod_mov TO s_recibo[1].cod_mov
|
|
DISPLAY arr_recibo.aplica_a TO s_recibo[1].aplica_a
|
|
DISPLAY arr_recibo.valor_pag TO s_recibo[1].valor_pag
|
|
DISPLAY arr_recibo.valor_pag TO s_recibo[1].valor_pag
|
|
DISPLAY xdescuento TO s_recibo[1].val_desc
|
|
DISPLAY ptotalb TO s_recibo[1].valor_pen
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION existenciaMinima()
|
|
DEFINE
|
|
encabezado, cuerpo, aquienEmail, ccAquien STRING,
|
|
i INT
|
|
|
|
LET aquienEmail = "almacenplanta@marmotech.com.do"
|
|
|
|
LET ccAquien = "notificacion@marmotech.com.do"
|
|
|
|
LET encabezado = 'AVISO EXISTENCIA MINIMA ALMACENES PRODUCTOS TERMINADOS'
|
|
|
|
LET cuerpo =
|
|
"<style>",
|
|
" table, td, th {
|
|
border: 1px solid black;
|
|
}
|
|
</style>",
|
|
"<table align='right'>",
|
|
"<thead><tr><th colspan='3'>CON EL DOCUMENTO ",
|
|
otros_mov.num_doc USING "&&&&&&&&",
|
|
"PERTENECIENTE AL MOVIMIENTO (",
|
|
otros_mov.cod_mov USING "&&&",
|
|
")",
|
|
pdescripmov CLIPPED,
|
|
"</th></tr></thead>",
|
|
"<tr>",
|
|
"<th>PRODUCTOS</th>",
|
|
"<th>CANTIDAD TRANSACC</th>",
|
|
"<th>CANTIDAD MINIMA</th>",
|
|
"<th>EXISTENCIA</th></tr>",
|
|
"<tbody>"
|
|
|
|
LET cuerpo = cuerpo CLIPPED, "<tr>"
|
|
|
|
FOR i = 1 TO movi2.getLength()
|
|
# PROCEDIMIENTO ENVIO CORREO PARA LA EXISTENCIA MINIMA
|
|
LET existenciaact[i] = (existenciaact[i] - (movi2[i].cantidad_2 * -1))
|
|
IF existminima[i] > 0 THEN
|
|
LET porcientocontrol[i] = (existminima[i] / existenciaact[i]) * 100
|
|
DISPLAY "PORCIENTO ",
|
|
existminima[i],
|
|
" ",
|
|
existenciaact[i],
|
|
" ",
|
|
porcientocontrol[i],
|
|
" ",
|
|
status_m
|
|
|
|
END IF
|
|
LET enviaCorreo = "NO"
|
|
IF porcientocontrol[i] >= 75
|
|
AND status_m = 2
|
|
AND existminIma[i] > 0 THEN
|
|
|
|
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
|
|
LET enviaCorreo = "SI"
|
|
|
|
LET cuerpo =
|
|
cuerpo CLIPPED,
|
|
"<td>",
|
|
movi2[i].descrip_esp CLIPPED,
|
|
"</td>",
|
|
"<td>",
|
|
movi2[i].cantidad_2 USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existminima[i] USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existenciaact[i] USING "##,###.##",
|
|
"</td>",
|
|
"</tr>"
|
|
LET enviaEmailProd[i] = "SI"
|
|
END IF
|
|
IF porcientocontrol[i] <= 0 AND status_m = 2 AND existminIma[i] > 0 THEN
|
|
|
|
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
|
|
|
|
LET enviaCorreo = "SI"
|
|
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
"<td>",
|
|
movi2[i].descrip_esp CLIPPED,
|
|
"</td>",
|
|
"<td>",
|
|
movi2[i].cantidad_2 USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existminima[i] USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existenciaact[i] USING "##,###.##",
|
|
"</td>",
|
|
"</tr>"
|
|
LET enviaEmailProd[i] = "SI"
|
|
|
|
END IF
|
|
END FOR
|
|
IF enviaCorreo = "SI" THEN
|
|
LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
|
|
# CALL envia_correo(aquienEmail,ccAquien,cuerpo,
|
|
# encabezado, procedimiento )
|
|
END IF
|
|
|
|
END FUNCTION
|
|
FUNCTION toPDF()
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
|
|
CALL configureOutput("PDF") RETURNING HANDLER
|
|
|
|
START REPORT formu4 TO XML HANDLER handler
|
|
|
|
DECLARE buscapdf CURSOR FOR
|
|
SELECT a.area,
|
|
c.nombre_area,
|
|
a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.cantidad_1,
|
|
a.cantidad_2,
|
|
'0',
|
|
b.unidad_med,
|
|
b.descrip_esp
|
|
FROM iptb00006 a, iptb00002 b, prtb00016 c
|
|
WHERE a.num_doc = otros_mov.num_doc
|
|
AND a.cod_mov = otros_mov.cod_mov
|
|
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.bodega = otros_mov.bodega
|
|
AND a.fech_crea > '01/01/2009 08:00'
|
|
AND a.area = c.area_num
|
|
ORDER BY a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec
|
|
|
|
LET idx = 1
|
|
FOREACH buscapdf INTO movi2[idx].*
|
|
IF movi2[idx].cantidad_2 < 0 THEN
|
|
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
|
|
END IF
|
|
|
|
SELECT SUM(a.cantidad)
|
|
INTO cantidad_conduce
|
|
FROM prtb00013 a
|
|
WHERE a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
AND a.num_oc = ordenx
|
|
AND a.status_t IS NULL
|
|
|
|
LET cantidad_orden = 0
|
|
IF otros_mov.cod_mov = 30 AND otros_mov.cod_mov = 31
|
|
OR otros_mov.cod_mov = 55 THEN
|
|
SELECT SUM(a.cantidad_2 * - 1)
|
|
INTO cantidad_orden
|
|
FROM iptb00006 a
|
|
WHERE a.cod_n = movi2[idx].cod_n
|
|
AND a.cod_grupo = movi2[idx].cod_grupo
|
|
AND a.cod_tipo = movi2[idx].cod_tipo
|
|
AND a.cod_sec = movi2[idx].cod_sec
|
|
AND a.conduce_no = otros_mov.conduce_no
|
|
AND cod_mov IN (30, 31, 55)
|
|
AND a.status_t IS NULL
|
|
END IF
|
|
|
|
IF cantidad_orden IS NULL THEN
|
|
LET cantidad_orden = 0
|
|
END IF
|
|
|
|
IF cantidad_conduce IS NULL THEN
|
|
LET cantidad_conduce = 0
|
|
END IF
|
|
|
|
LET movi2[idx].cantidad_p = cantidad_conduce - cantidad_orden
|
|
|
|
OUTPUT TO REPORT formu4(otros_mov.*, movi2[idx].*)
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
FINISH REPORT formu4
|
|
|
|
END FUNCTION
|
|
FUNCTION adicionaArray()
|
|
DEFINE x1, current_length INT
|
|
|
|
LET current_length = movi10Dest.getLength()
|
|
|
|
FOR x1 = 1 TO movi10.getLength()
|
|
|
|
IF movi10[x1].cantidad2 IS NOT NULL THEN
|
|
LET current_length = current_length + 1
|
|
LET movi10Dest[current_length].* = movi10[x1].*
|
|
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
FUNCTION addDespiece()
|
|
DEFINE
|
|
x1, x2, current_length INT,
|
|
flag BOOLEAN
|
|
--LET current_length = despieceDest.getLength()
|
|
|
|
FOR x1 = 1 TO despiece.getLength()
|
|
--DISPLAY "DESPIECE: ", despiece[x1].*
|
|
|
|
LET flag = TRUE
|
|
|
|
IF despiece[x1].medida IS NOT NULL THEN
|
|
FOR x2 = 1 TO despieceDest.getLength()
|
|
IF despiece[x1].cod_n = despieceDest[x2].cod_n
|
|
AND despiece[x1].cod_grupo = despieceDest[x2].cod_grupo
|
|
AND despiece[x1].cod_tipo = despieceDest[x2].cod_tipo
|
|
AND despiece[x1].cod_sec = despieceDest[x2].cod_sec
|
|
AND despiece[x1].secuencia = despieceDest[x2].secuencia THEN
|
|
|
|
--DISPLAY "DESPIECEDEST: ", despieceDest[x2].*
|
|
LET despieceDest[x2].* = despiece[x1].*
|
|
LET flag = FALSE
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
IF flag THEN
|
|
LET current_length = despieceDest.getLength() + 1
|
|
LET despieceDest[current_length].* = despiece[x1].*
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION addUbicacion()
|
|
|
|
FOR x2 = 1 TO movi10Dest.getLength()
|
|
|
|
IF movi10Dest[x2].cantidad2 IS NOT NULL THEN
|
|
# IF movi10Dest[x2].id_seccion1 IS NOT NULL THEN
|
|
IF status_m = "2" THEN
|
|
IF movi10Dest[x2].cantidad2 > 0 THEN
|
|
LET movi10Dest[x2].cantidad2 = movi10Dest[x2].cantidad2 * -1
|
|
END IF
|
|
IF movi10Dest[x2].cantidad1 > 0 THEN
|
|
LET movi10Dest[x2].cantidad1 = movi10Dest[x2].cantidad1 * -1
|
|
END IF
|
|
END IF
|
|
TRY
|
|
|
|
DISPLAY otros_mov.num_doc
|
|
DISPLAY movi10Dest[x2].area
|
|
DISPLAY movi10Dest[x2].cod_n
|
|
DISPLAY movi10Dest[x2].cod_Grupo
|
|
DISPLAY movi10Dest[x2].cod_tipo
|
|
DISPLAY movi10Dest[x2].cod_sec
|
|
DISPLAY movi10Dest[x2].cod_mov
|
|
DISPLAY movi10Dest[x2].id_bodega
|
|
DISPLAY movi10Dest[x2].id_seccion1
|
|
DISPLAY movi10Dest[x2].id_tramo1
|
|
DISPLAY movi10Dest[x2].id_fila
|
|
DISPLAY movi10Dest[x2].id_pos
|
|
DISPLAY movi10Dest[x2].cantidad1
|
|
DISPLAY movi10Dest[x2].cantidad2
|
|
|
|
INSERT INTO iptb00062(
|
|
num_Doc,
|
|
cod_mov,
|
|
bodega,
|
|
fecha,
|
|
cod_seccion,
|
|
cod_tramo,
|
|
cod_fila,
|
|
cod_pos,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad,
|
|
cantidad2,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(otros_mov.num_doc,
|
|
otros_mov.cod_mov,
|
|
movi10Dest[x2].id_bodega,
|
|
otros_mov.fecha,
|
|
movi10Dest[x2].id_seccion1,
|
|
movi10Dest[x2].id_tramo1,
|
|
movi10Dest[x2].id_fila,
|
|
movi10Dest[x2].id_pos,
|
|
movi10Dest[x2].area,
|
|
movi10Dest[x2].cod_n,
|
|
movi10Dest[x2].cod_Grupo,
|
|
movi10Dest[x2].cod_tipo,
|
|
movi10Dest[x2].cod_sec,
|
|
movi10Dest[x2].cantidad1,
|
|
movi10Dest[x2].cantidad2,
|
|
usuarios,
|
|
getdate())
|
|
CATCH
|
|
|
|
LET numero_msg = 1663
|
|
DISPLAY "ROLLBACK addUbicacion"
|
|
EXIT FOR
|
|
END TRY
|
|
# END IF
|
|
END IF
|
|
END FOR
|
|
|
|
RETURN numero_msg
|
|
END FUNCTION
|
|
FUNCTION controlaDevolucion(
|
|
dcodn,
|
|
dcodgrupo,
|
|
dcodtipo,
|
|
dcodsec,
|
|
dfactura,
|
|
dcontrol_devolucion,
|
|
dcantidad)
|
|
DEFINE
|
|
dcodn, dcodgrupo, dcodtipo, dcodsec, dfactura INT,
|
|
dcantidad_factura, dcantidad_devuelta, dcantidad DEC(12, 5),
|
|
dcontrol_devolucion VARCHAR(2),
|
|
devolucion_correcta BOOLEAN
|
|
|
|
#CONTROL DEVOLUCION
|
|
IF dcontrol_devolucion = "SI" THEN
|
|
|
|
LET dcantidad_factura = 0
|
|
SELECT ISNULL(SUM(a.cantidad), 0)
|
|
INTO dcantidad_factura
|
|
FROM vetb00003 a
|
|
WHERE a.factura = dfactura
|
|
AND a.status_t IS NULL
|
|
AND a.fech_crea > '2009-01-01 08:00'
|
|
AND a.cod_n = dcodn
|
|
AND a.cod_grupo = dcodgrupo
|
|
AND a.cod_tipo = dcodtipo
|
|
AND a.cod_sec = dcodsec
|
|
AND a.status_t IS NULL
|
|
|
|
SELECT ISNULL(SUM(a.cantidad_2), 0)
|
|
INTO dcantidad_devuelta
|
|
FROM iptb00006 a
|
|
WHERE a.factura = dfactura
|
|
AND a.status_t IS NULL
|
|
AND a.fech_crea > '2009-01-01 08:00'
|
|
AND a.cod_n = dcodn
|
|
AND a.cod_grupo = dcodgrupo
|
|
AND a.cod_tipo = dcodtipo
|
|
AND a.cod_sec = dcodsec
|
|
AND a.cod_mov IN (12, 13)
|
|
|
|
DISPLAY "control dev: ",
|
|
dcantidad_devuelta,
|
|
" t ",
|
|
dcantidad,
|
|
" f ",
|
|
dcantidad_factura
|
|
IF dcantidad_devuelta + dcantidad > dcantidad_factura THEN
|
|
RETURN FALSE
|
|
|
|
END IF
|
|
END IF
|
|
RETURN TRUE
|
|
END FUNCTION
|
|
FUNCTION loadDespieceMemory(pcodn, pcodgrupo, pcodtipo, pcodsec)
|
|
|
|
DEFINE i, idx, pcodn, pcodgrupo, pcodtipo, pcodsec INT
|
|
|
|
LET idx = 1
|
|
|
|
FOR i = 1 TO despieceMem.getLength()
|
|
|
|
IF despieceMem[i].cod_n = pcodn
|
|
AND despieceMem[i].cod_grupo = pcodgrupo
|
|
AND despieceMem[i].cod_tipo = pcodtipo
|
|
AND despieceMem[i].cod_sec = pcodsec THEN
|
|
|
|
LET container[idx].* = despieceMem[i].*
|
|
LET idx = idx + 1
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
RETURN container
|
|
|
|
END FUNCTION
|
|
FUNCTION saveDespieceMemory(pcodn, pcodgrupo, pcodtipo, pcodsec)
|
|
|
|
DEFINE i, x, pcodn, pcodgrupo, pcodtipo, pcodsec INT
|
|
|
|
-- borrar registros anteriores del producto
|
|
|
|
FOR x = despieceMem.getLength() TO 1 STEP -1
|
|
|
|
IF despieceMem[x].cod_n = pcodn
|
|
AND despieceMem[x].cod_grupo = pcodgrupo
|
|
AND despieceMem[x].cod_tipo = pcodtipo
|
|
AND despieceMem[x].cod_sec = pcodsec THEN
|
|
|
|
CALL despieceMem.deleteElement(x)
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
-- guardar nuevos
|
|
|
|
FOR i = 1 TO despiece.getLength()
|
|
|
|
IF despiece[i].medida IS NOT NULL THEN
|
|
|
|
LET x = despieceMem.getLength() + 1
|
|
LET despieceMem[x].* = despiece[i].*
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
END FUNCTION
|