6703 lines
261 KiB
Plaintext
6703 lines
261 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 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 documento_Detalle DYNAMIC ARRAY OF RECORD
|
|
indicadorFacturacion,nombreItem,indicadorBienoServicio,cantidadItem,precioUnitarioItem,
|
|
montoItem STRING,
|
|
DescripcionItem VARCHAR(1000),
|
|
NumeroLinea int
|
|
END RECORD
|
|
|
|
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 out_result, cod_mensaje INT, out_msg VARCHAR(200)
|
|
|
|
|
|
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 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,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 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,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 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
|
|
|
|
|
|
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
|
|
|
|
LET selec = "SELECT ISNULL(a.material+a.labor+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.*
|
|
DISPLAY "numero " || data.rnumeroDoc
|
|
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
|
|
INTO status_m,pcontrol_cliente,pcontrol_despacho,control_devolucion,
|
|
Pcontrol_transferencia,pcontrol_departamento,otros_mov.descrip_mov,prequisiciones
|
|
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 * FROM iptb00023
|
|
where cod_mov = otros_mov.cod_mov AND
|
|
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.conduce_no = otros_mov.conduce_no) 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
|
|
{
|
|
LET cantidad_entrada = 0
|
|
SELECT SUM(a.cantidad_2) INTO cantidad_entrada
|
|
FROM iptb00006 a
|
|
WHERE a.num_doc = otros_mov.placa AND
|
|
a.cod_mov IN(70,71,72) AND
|
|
a.status_t IS NULL
|
|
|
|
IF cantidad_entrada IS NULL THEN
|
|
LET cantidad_entrada = 0
|
|
END IF
|
|
|
|
LET cantidad_conduce = 0
|
|
SELECT SUM(a.cantidad_2) INTO cantidad_conduce
|
|
FROM iptb00006 a,iptb00028 b
|
|
WHERE b.entrada = otros_mov.entrada AND
|
|
a.num_doc = b.num_doc and
|
|
a.cod_mov = b.cod_mov AND
|
|
a.status_t IS NULL
|
|
|
|
IF cantidad_conduce IS NULL THEN
|
|
LET cantidad_conduce = 0
|
|
END IF
|
|
LET pendiente = cantidad_entrada + cantidad_conduce
|
|
DISPLAY "CANTIDAD E ",cantidad_entrada," c salida ",cantidad_conduce
|
|
IF pendiente <= 0 THEN
|
|
LET numero_msg =46
|
|
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'
|
|
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
|
|
|
|
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()
|
|
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
|
|
# CALL busca_Despiece( movi2[p_act].cod_n, movi2[p_act].cod_grupo, movi2[p_act].cod_tipo,
|
|
# movi2[p_act].cod_sec) RETURNING siDespiece,movi2[p_act].cantidad_1
|
|
# IF NOT siDespiece THEN
|
|
CALL despiece()
|
|
CALL adddespiece()
|
|
# END IF
|
|
|
|
|
|
DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
|
|
DISPLAY "en despiece: ",movi2[p_act].cantidad_1
|
|
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()
|
|
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
|
|
|
|
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
|
|
CALL busca_Despiece( movi2[p_act].cod_n, movi2[p_act].cod_grupo, movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec) RETURNING siDespiece,movi2[p_act].cantidad_1
|
|
IF NOT siDespiece THEN
|
|
CALL despiece()
|
|
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 SUM(a.cantidad) 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
|
|
|
|
IF cantidad_conduce IS NULL THEN
|
|
LET cantidad_conduce = 0
|
|
END IF
|
|
|
|
LET cantidad_recibida = 0
|
|
SELECT SUM(a.cantidad_2) 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
|
|
|
|
IF cantidad_Recibida IS NULL THEN
|
|
LET cantidad_Recibida = 0
|
|
END IF
|
|
LET hacerdocumento=TRUE
|
|
|
|
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
|
|
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 REQUISICION
|
|
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,a.numero_cta_cliente
|
|
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 cantidad_1
|
|
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
|
|
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
|
|
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
|
|
|
|
BEGIN WORK
|
|
UPDATE iptb00007 set num_doc = otros_mov.num_doc,
|
|
us_crea = usuarios,
|
|
fech_crea = getdate()
|
|
WHERE cod_mov = otros_mov.cod_mov AND bodega = otros_mov.bodega
|
|
DISPLAY BY NAME otros_mov.num_doc ATTRIBUTE (BLUE)
|
|
# ACTUALIZA EL TRANSPORTISTA Y NUMERO DE CONDUCE EN LA TABLA DE LOS BULTOS
|
|
UPDATE iptb00056 SET cod_transp = otros_mov.cod_transp , sec_transp = otros_mov.sec_transp,
|
|
cod_mov = otros_mov.cod_mov,num_doc = otros_mov.num_doc,bodega = otros_mov.bodega
|
|
WHERE num_oc = ordenx
|
|
|
|
# INSERTA REGISTROS DE ENTRADAS CON LOS CONDUCES
|
|
IF otros_mov.cod_mov1 IS NOT NULL THEN
|
|
|
|
INSERT INTO iptb00028 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.cod_mov1,
|
|
otros_mov.entrada,otros_mov.bodega)
|
|
END IF
|
|
# INFORMACIONES CUANDO EL MOVIMIENTO ES DE PRODUCCION
|
|
IF pcontrol_departamento = "SI" THEN
|
|
IF otros_mov.departamento IS NOT NULL THEN
|
|
INSERT INTO iptb00026 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.departamento,otros_mov.bodega)
|
|
END IF
|
|
END IF
|
|
|
|
#ACTUALIZA CRMinDATA cantidad pendiente ordenes
|
|
LET selec = 'UPDATE CRMinDATA.dbo.ordenes_detalle set pendiente = ?,us_mod = suser_sname(),fech_mod = getdate()
|
|
WHERE num_oc = ? AND cod_n = ? and cod_grupo = ? and cod_tipo = ? and cod_sec = ? AND area = ?
|
|
'
|
|
PREPARE actorden FROM selec
|
|
|
|
|
|
LET cuerpo_correo = "<table>"
|
|
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)
|
|
##NEXT FIELD 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)
|
|
##NEXT FIELD cantidad_1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
IF movi2[idx].cantidad_2 = 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
##NEXT FIELD cantidad_1
|
|
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)
|
|
##NEXT FIELD cantidad_1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
#CONTROL DEVOLUCION
|
|
IF NOT controlaDevolucion(movi2[idx].cod_n,movi2[idx].cod_grupo,movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec,otros_mov.factura,control_devolucion,movi2[idx].cantidad_2)
|
|
THEN
|
|
ROLLBACK WORK
|
|
|
|
LET numero_msg =238
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_Sec
|
|
END IF
|
|
# CONTROL DESPIECE
|
|
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
|
|
# DISPLAY "antes busca D: ",movi2[idx].cod_n,"-", movi2[idx].cod_grupo,"-",
|
|
# movi2[idx].cod_tipo,"-",
|
|
# movi2[idx].cod_sec
|
|
CALL busca_Despiece( movi2[idx].cod_n, movi2[idx].cod_grupo, movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec) RETURNING siDespiece,movi2[idx].cantidad_2
|
|
IF NOT siDespiece THEN
|
|
ROLLBACK WORK
|
|
LET numero_msg =398
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
END IF
|
|
|
|
|
|
{ IF movi2[idx].cantidad_2 > 0 THEN
|
|
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
|
|
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 control_devolucion <> "SI" THEN
|
|
#=============================================================================
|
|
# CONTROL REQUISICION DESPACHO
|
|
#======================================================================
|
|
|
|
CALL 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])
|
|
RETURNING estado_req
|
|
|
|
IF NOT estado_req THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1019)
|
|
DISPLAY movi2[idx].cantidad_1 TO s_movi1[idx].cantidad_1 ATTRIBUTE(RED)
|
|
NEXT FIELD cod_Sec
|
|
END IF
|
|
END IF
|
|
}
|
|
IF ordenx IS NULL OR ordenx = 0 THEN
|
|
LET ordenx = otros_mov.conduce_no
|
|
END IF
|
|
|
|
EXECUTE inst1 USING otros_mov.num_doc,tmpnumero,otros_mov.cod_mov, usuarios,
|
|
movi2[idx].cod_n, movi2[idx].cod_grupo, movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec
|
|
|
|
|
|
EXECUTE inst2 USING otros_mov.num_doc,
|
|
tmpnumero, otros_mov.cod_mov, usuarios,movi2[idx].cod_n,movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo, movi2[idx].cod_sec
|
|
|
|
|
|
|
|
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 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
|
|
{INSERT INTO iptb00006 (cod_cia,num_doc,fecha,
|
|
fact_no,conduce_no,cod_sp,
|
|
cod_sp_sec,cod_transp,sec_transp,
|
|
placa,cod_tarifa,
|
|
cod_mov,detalle,area,
|
|
cod_n,cod_grupo,cod_tipo,
|
|
cod_sec,cantidad_1,cantidad_2,
|
|
bodega,us_crea,fech_crea,
|
|
num_req,codigo_bloque,sec_vend,
|
|
direccion,num_oc,bodega_d,num_Doc_retrabajo,cond_recep,departamento,factura,
|
|
numero_doc,costo)
|
|
VALUES
|
|
(otros_mov.cod_cia,otros_mov.num_doc,otros_mov.fecha,
|
|
otros_mov.fact_no,otros_mov.conduce_no,otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,otros_mov.cod_transp,otros_mov.sec_transp,
|
|
otros_mov.placa,otros_mov.cod_tarifa,otros_mov.cod_mov,
|
|
otros_mov.detalle,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,otros_mov.bodega,
|
|
usuarios,getdate(),pnum_req,
|
|
movi2[idx].codigo_bloque,psec_vend,direccion_p,
|
|
ordenx,otros_mov.bodega_destino,num_doc_ret,aplica_dev,otros_mov.departamento,otros_mov.factura,
|
|
pnumero_doc,costoItem)}
|
|
|
|
INITIALIZE out_result TO NULL
|
|
|
|
LET procedimiento =
|
|
"EXEC sp_insert_inventario ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?"
|
|
|
|
PREPARE smt FROM procedimiento
|
|
|
|
EXECUTE smt USING
|
|
ordenx 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,
|
|
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,
|
|
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,
|
|
otros_mov.factura IN,
|
|
pnumero_doc IN,
|
|
costoItem IN,
|
|
out_result OUT,
|
|
cod_mensaje OUT,
|
|
out_msg OUT
|
|
|
|
DISPLAY "out_result: ", out_msg," - ",out_result," - ",cod_mensaje
|
|
|
|
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)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF ordenx IS NOT NULL THEN
|
|
CALL ordenpendiente(ordenx,
|
|
movi2[idx].cod_n,
|
|
movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec,
|
|
movi2[idx].area)
|
|
RETURNING diferencia
|
|
|
|
EXECUTE actorden USING diferencia,ordenx,movi2[idx].cod_n,
|
|
movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,movi2[idx].cod_sec,movi2[idx].area
|
|
END IF
|
|
|
|
# CONTROL REQUISICION
|
|
# IF control_devolucion <>"SI" THEN
|
|
# IF pnum_req 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
|
|
# ROLLBACK WORK
|
|
# CALL fgl_Winmessage("ERROR","CANTIDAD EXCEDE A CANTIDAD EN REQUISICION","INFO")
|
|
# NEXT FIELD cantidad_1
|
|
# END IF
|
|
# END IF
|
|
#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
|
|
#ACTUALIZACION DISPONIBLE TIENDA ONLINE
|
|
CALL disponibles(movi2[idx].cod_n,movi2[idx].cod_grupo,movi2[idx].cod_tipo,movi2[idx].cod_sec,TODAY)
|
|
RETURNING cantidad_orden1,pcantidadConduce,transito,existencia,reservado,
|
|
valororden
|
|
|
|
|
|
LET cantidad_orden1 =existencia - cantidad_orden1+pcantidadConduce
|
|
|
|
UPDATE iptb00016 SET disponible = cantidad_orden1,fech_mod = getdate(),us_mod = usuarios
|
|
WHERE cod_n = movi2[idx].cod_n AND cod_grupo = movi2[idx].cod_grupo AND
|
|
cod_tipo = movi2[idx].cod_tipo AND cod_sec = movi2[idx].cod_sec
|
|
|
|
LET diferencia = 0
|
|
IF pcontrol_transferencia="SI" AND status_m = 2 THEN #condicion status_m=3
|
|
|
|
INSERT INTO iptb00033(cod_cia,num_doc,fecha,fact_no,sec_vend,cod_sp,cod_Sp_sec,
|
|
cod_transp,sec_transp,placa,cod_tarifa,cod_mov,detalle,cod_n,cod_grupo,cod_tipo,
|
|
cod_Sec,cantidad_1,cantidad_2,cond_recep,bodega,bodega_d,us_crea,
|
|
fech_crea,num_oc)
|
|
VALUES
|
|
(otros_mov.cod_cia,otros_mov.num_doc,otros_mov.fecha,
|
|
otros_mov.fact_no,psec_vend,otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,otros_mov.cod_transp,
|
|
otros_mov.sec_transp,otros_mov.placa,otros_mov.cod_tarifa,
|
|
otros_mov.cod_mov,otros_mov.detalle,movi2[idx].cod_n,
|
|
movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,movi2[idx].cod_sec,
|
|
movi2[idx].cantidad_1,movi2[idx].cantidad_2,
|
|
'N',otros_mov.bodega,otros_mov.bodega_destino,usuarios,GETDATE(),
|
|
ordenx)
|
|
END IF
|
|
#fin condicion status_mo=3
|
|
|
|
# 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
|
|
|
|
UPDATE prtb00013 SET estado_producto = 'LISTA PARA DESPACHO',
|
|
# fecha_compromiso = otros_mov.fecha,
|
|
observacion = otros_mov.detalle,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_oc = ordenx AND
|
|
cod_n = movi2[idx].cod_n AND
|
|
cod_Grupo = movi2[idx].cod_grupo AND
|
|
cod_tipo = movi2[idx].cod_tipo AND
|
|
cod_Sec = movi2[idx].cod_sec
|
|
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 "
|
|
INSERT INTO prordenstatus(fecha_trx,num_oc,cerrada,observacion,fecha_compromiso,usuario,
|
|
cod_n,cod_grupo,cod_tipo,cod_sec)
|
|
VALUES (GETDATE(),ordenx,pcerrada,
|
|
estadoordenes,otros_mov.fecha,usuarios,
|
|
movi2[idx].cod_n,movi2[idx].cod_grupo,movi2[idx].cod_tipo,
|
|
movi2[idx].cod_sec)
|
|
|
|
ELSE
|
|
|
|
UPDATE prtb00013 SET estado_produccion = 'PRODUCCION PARCIAL',
|
|
# fecha_compromiso = otros_mov.fecha,
|
|
observacion = otros_mov.detalle,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_oc = ordenx AND
|
|
cod_n = movi2[idx].cod_n AND
|
|
cod_Grupo = movi2[idx].cod_grupo AND
|
|
cod_tipo = movi2[idx].cod_tipo AND
|
|
cod_Sec = movi2[idx].cod_sec
|
|
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
|
|
# INSERT INTO prordenlog VALUES (otros_mov.conduce_no,otros_mov.num_doc,movi2[idx].cod_n,
|
|
# movi2[idx].cod_grupo,
|
|
# movi2[idx].cod_tipo,movi2[idx].cod_sec,
|
|
# movi2[idx].cantidad_2,getdate(),otros_mov.cod_mov,movi2[idx].cantidad_1,diferencia)
|
|
|
|
|
|
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
|
|
|
|
CALL addUbicacion() RETURNING numero_msg
|
|
CALL msg(numero_msg)
|
|
# IF numero_msg = 1663 THEN
|
|
# ROLLBACK WORK
|
|
# DISPLAY "ROLLBACK addubicacion FAILED"
|
|
# NEXT FIELD cod_sec
|
|
# END IF
|
|
COMMIT WORK
|
|
|
|
# ADICION CXC CUANDO ES DEVOLCUION
|
|
{
|
|
INSERT INTO log_devoluciones
|
|
( num_doc
|
|
, cod_mov
|
|
, fecha
|
|
, tipo_cliente
|
|
, sec_cliente
|
|
, num_oc
|
|
, cotizacion_no
|
|
, factura
|
|
, observacion
|
|
,fecha_trx)
|
|
VALUES
|
|
( otros_mov.num_doc,
|
|
otros_mov.cod_mov
|
|
, otros_mov.fecha
|
|
, otros_mov.cod_sp
|
|
, otros_mov.cod_sp_sec
|
|
, ordenx
|
|
, xcotizacion
|
|
,otros_mov.factura
|
|
,'AANTES DE ENTRAR AL PROCESO'
|
|
,getdate())
|
|
|
|
}
|
|
|
|
IF control_devolucion="SI" THEN
|
|
|
|
CALL insertaData()
|
|
|
|
END IF
|
|
#-----------------------------------------------------------------------------------------
|
|
#DESPIECE
|
|
BEGIN WORK
|
|
IF despiece.getLength() > 0 THEN
|
|
FOR idx=1 TO despiecedest.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 (despiecedest[idx].id_etiqueta,otros_mov.cod_mov,otros_mov.num_doc,
|
|
despiecedest[idx].cod_n,despiecedest[idx].cod_grupo,despiecedest[idx].cod_tipo,
|
|
despiecedest[idx].cod_sec,despiecedest[idx].lado_1,despiecedest[idx].lado_2,
|
|
despiecedest[idx].lado_3,despiecedest[idx].cantidad,
|
|
despiecedest[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
|
|
|
|
# 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()
|
|
DEFINE cetiqueta VARCHAR(20),
|
|
total_cantidad FLOAT, i INT,
|
|
xfactor DEC(12,5)
|
|
|
|
DEFINE container 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,id_despiece INT,
|
|
bodega SMALLINT
|
|
END RECORD
|
|
|
|
OPEN WINDOW wdespiece AT 5,3 WITH FORM "ipfmwd010" ATTRIBUTE (BORDER,FORM LINE
|
|
FIRST + 1,PROMPT LINE LAST)
|
|
|
|
DISPLAY BY NAME movi2[p_act].descrip_esp,movi2[p_act].unidad_med
|
|
CALL despiece.clear()
|
|
LET despiece[1].cod_n = movi2[p_act].cod_n
|
|
LET despiece[1].cod_grupo = movi2[p_act].cod_grupo
|
|
LET despiece[1].cod_tipo = movi2[p_act].cod_tipo
|
|
LET despiece[1].cod_sec = movi2[p_act].cod_sec
|
|
|
|
#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 = 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 xfactor <> 1 THEN
|
|
CALL msg(1021)
|
|
CLOSE WINDOW wdespiece
|
|
RETURN
|
|
END IF
|
|
DECLARE busca_despiece CURSOR FOR
|
|
SELECT b.codid,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
|
|
FROM tmpdespiece a,vetb00026 b
|
|
WHERE a.id_despiece = tmpnumero AND
|
|
a.id_etiqueta = b.codid 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
|
|
|
|
LET total_cantidad = 0
|
|
LET idx = 1
|
|
FOREACH busca_despiece INTO despiece[idx].id_etiqueta,despiece[idx].lado_1,
|
|
despiece[idx].lado_2,despiece[idx].lado_3,despiece[idx].cantidad,
|
|
despiece[idx].medida
|
|
|
|
LET despiece[idx].cod_n = movi2[p_act].cod_n
|
|
LET despiece[idx].cod_grupo = movi2[p_act].cod_grupo
|
|
LET despiece[idx].cod_tipo = movi2[p_act].cod_tipo
|
|
LET despiece[idx].cod_sec = movi2[p_act].cod_sec
|
|
LET despiece[idx].secuencia = idx
|
|
|
|
|
|
|
|
LET total_cantidad = total_cantidad + despiece[idx].cantidad
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
IF otros_mov.entrada IS NOT NULL THEN
|
|
|
|
DECLARE busca_ent CURSOR FOR
|
|
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
|
|
FROM iptb00025 a
|
|
WHERE a.cod_mov = otros_mov.cod_mov1 AND
|
|
a.num_doc = otros_mov.entrada 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
|
|
|
|
LET idx = 1
|
|
FOREACH busca_ent INTO despiece[idx].*
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
ELSE
|
|
# CALL verificadespiece(movi2[p_act].cod_n,movi2[p_act].cod_grupo,movi2[p_act].cod_tipo,movi2[p_act].cod_sec)
|
|
# RETURNING tienedespiece
|
|
|
|
IF pcontrol_despacho <> "SI" THEN
|
|
DECLARE busca_despiece1 CURSOR FOR
|
|
SELECT b.descripcion,a.cod_n,a.cod_grupo,a.cod_tipo,
|
|
a.cod_sec,a.lado_1,a.lado_2,a.lado_3, a.cantidad,a.medida
|
|
FROM prtb00022 a,vetb00026 b
|
|
WHERE a.num_oc = otros_mov.conduce_no AND
|
|
a.area = movi2[p_act].area 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.id_etiqueta = b.codid
|
|
LET idx = 1
|
|
FOREACH busca_despiece1 INTO despiece[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
ELSE
|
|
DECLARE busca_despiece12 CURSOR FOR
|
|
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,
|
|
a.cod_sec,a.lado_1,a.lado_2,a.lado_3,
|
|
c.cantidad_r,c.medida_r
|
|
FROM prtb00022 a, cctb00027 c
|
|
WHERE a.num_oc = ordenx AND
|
|
a.area = c.area AND
|
|
a.area = movi2[p_act].area 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.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
|
|
c.num_req = pnum_req
|
|
|
|
LET idx = 1
|
|
LET total_cantidad = 0
|
|
FOREACH busca_despiece12 INTO despiece[idx].*
|
|
LET total_cantidad = total_cantidad + despiece[idx].cantidad
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
|
|
END IF
|
|
# END IF
|
|
|
|
DISPLAY BY NAME total_cantidad
|
|
CALL set_count(idx-1)
|
|
INPUT ARRAY despiece WITHOUT DEFAULTS FROM sdespiece.*
|
|
|
|
ON ACTION DELETE
|
|
FOR x2 = 1 TO despieceDest.getLength()
|
|
IF despiece[arr_curr()].cod_n = despieceDest[x2].cod_n AND
|
|
despiece[arr_curr()].cod_grupo = despieceDest[x2].cod_grupo AND
|
|
despiece[arr_curr()].cod_tipo = despieceDest[x2].cod_tipo AND
|
|
despiece[arr_curr()].cod_sec = despieceDest[x2].cod_sec AND
|
|
despiece[arr_curr()].secuencia = despieceDest[x2].secuencia THEN
|
|
|
|
CALL despieceDest.deleteElement(x2)
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
CALL despiece.deleteElement(arr_curr())
|
|
|
|
ON ACTION DELETE_ALL ATTRIBUTES(TEXT = "Borrar todo")
|
|
LET container.* = despiece[arr_curr()].*
|
|
CALL despiece.clear()
|
|
LET despiece[1].* = container.*
|
|
|
|
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 = movi2[p_act].cod_n
|
|
LET despiece[curr1].cod_grupo = movi2[p_act].cod_grupo
|
|
LET despiece[curr1].cod_tipo = movi2[p_act].cod_tipo
|
|
LET despiece[curr1].cod_sec = movi2[p_act].cod_sec
|
|
|
|
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 movi2[p_act].cod_n TO sdespiece[fila].cod_n
|
|
DISPLAY movi2[p_act].cod_grupo TO sdespiece[fila].cod_grupo
|
|
DISPLAY movi2[p_act].cod_tipo TO sdespiece[fila].cod_tipo
|
|
DISPLAY movi2[p_act].cod_sec 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 = movi2[p_act].cod_n
|
|
LET despiece[i].cod_grupo = movi2[p_act].cod_grupo
|
|
LET despiece[i].cod_tipo = movi2[p_act].cod_tipo
|
|
LET despiece[i].cod_sec = movi2[p_act].cod_sec
|
|
END FOR
|
|
|
|
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
CLOSE WINDOW wdespiece
|
|
RETURN
|
|
END IF
|
|
|
|
|
|
DELETE FROM tmpdespiece WHERE id_despiece = tmpnumero AND
|
|
cod_n = movi2[p_act].cod_n AND
|
|
cod_grupo= movi2[p_act].cod_grupo AND
|
|
cod_tipo = movi2[p_act].cod_tipo AND
|
|
cod_sec = movi2[p_act].cod_sec
|
|
|
|
LET total_medida = 0
|
|
LET total_cantidad =0
|
|
FOR idx = 1 TO despiece.getLength()
|
|
|
|
IF despiece[idx].medida IS NOT NULL THEN
|
|
INSERT INTO tmpdespiece (id_etiqueta,id_despiece,cod_n,cod_grupo,cod_tipo,cod_sec,lado_1,lado_2,lado_3,
|
|
cantidad,medida,secuencia,bodega)
|
|
VALUES (despiece[idx].id_etiqueta, tmpnumero,movi2[p_act].cod_n,movi2[p_act].cod_grupo,movi2[p_act].cod_tipo,
|
|
movi2[p_act].cod_sec,despiece[idx].lado_1,despiece[idx].lado_2,despiece[idx].lado_3,
|
|
despiece[idx].cantidad,despiece[idx].medida,despiece[idx].secuencia,otros_mov.bodega)
|
|
|
|
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
|
|
|
|
# CALL verificadespiece(movi2[p_act].cod_n,movi2[p_act].cod_grupo,movi2[p_act].cod_tipo,movi2[p_act].cod_sec)
|
|
# RETURNING tienedespiece
|
|
|
|
|
|
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
|
|
|
|
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 busca_despiece(pcodn,pcodgrupo,pcodtipo,pcodsec)
|
|
DEFINE i,pcodn,pcodgrupo,pcodtipo,pcodsec INT,
|
|
tieneDespiece BOOLEAN,
|
|
cantidadTotal DEC(12,5)
|
|
|
|
LET tieneDespiece = FALSE
|
|
|
|
LET cantidadTotal = 0
|
|
FOR i = 1 TO despiecedest.getLength()
|
|
DISPLAY "en busca D: ",despiecedest[i].cod_n,"-", despiecedest[i].cod_grupo,"-",
|
|
despiecedest[i].cod_tipo,"-",
|
|
despiecedest[i].cod_sec
|
|
IF despiecedest[i].cod_sec IS NOT NULL THEN
|
|
|
|
IF despiecedest[i].id_etiqueta IS NOT NULL THEN
|
|
IF despiecedest[i].cod_n = pcodn AND despiecedest[i].cod_grupo = pcodgrupo AND
|
|
despiecedest[i].cod_tipo = pcodtipo AND despiecedest[i].cod_sec = pcodsec THEN
|
|
IF despiecedest[i].medida IS NULL THEN
|
|
LET despiecedest[i].medida =0
|
|
END IF
|
|
LET cantidadTotal = cantidadTotal + despiecedest[i].medida
|
|
LET tieneDespiece = TRUE
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
RETURN tieneDespiece,cantidadTotal
|
|
END FUNCTION
|
|
FUNCTION verificadespiece(pcodn,pcodgrupo,pcodtipo,pcodsec)
|
|
DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,k1,k2,k3,K4 INT,
|
|
tiene STRING
|
|
LET tiene = 'N'
|
|
DISPLAY "CODIGO DIGITADO ",pcodn,pcodgrupo,pcodtipo,pcodsec
|
|
LET k2 = 1
|
|
|
|
|
|
|
|
FOR k1 = 1 TO despiece_act.getLength()
|
|
|
|
IF despiece_act[k1].cod_n = pcodn AND
|
|
despiece_act[k1].cod_grupo = pcodgrupo AND
|
|
despiece_act[k1].cod_tipo = pcodtipo AND
|
|
despiece_act[k1].cod_sec = pcodsec THEN
|
|
LET tiene = 'S'
|
|
LET despiece[k1].id_etiqueta = despiece_act[k2].id_etiqueta
|
|
LET despiece[k1].cantidad = despiece_act[k2].cantidad
|
|
LET despiece[k1].cod_grupo = despiece_act[k2].cod_grupo
|
|
LET despiece[k1].cod_tipo = despiece_act[k2].cod_tipo
|
|
LET despiece[k1].cod_sec = despiece_act[k2].cod_sec
|
|
LET despiece[k1].cod_n = despiece_act[k2].cod_n
|
|
LET despiece[k1].lado_1 = despiece_act[k2].lado_1
|
|
LET despiece[k1].lado_2 = despiece_act[k2].lado_2
|
|
LET despiece[k1].lado_3 = despiece_act[k2].lado_3
|
|
LET despiece[k1].medida = despiece_act[k2].medida
|
|
LET tiene='S'
|
|
LET k2 = k2 + 1
|
|
DISPLAY "verificacion modificacion ",pcodsec," ",pcodgrupo
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
IF tiene = "N" THEN
|
|
|
|
LET k3 = despiece_act.getLength()
|
|
IF k3 IS NULL OR k3 = 0 THEN
|
|
LET K3 = 1
|
|
|
|
ELSE
|
|
LET k3 =k3 + 1
|
|
|
|
END IF
|
|
|
|
FOR k2 = k3 TO despiece.getLength()
|
|
CALL despiece_act.appendElement()
|
|
LET despiece_act[k2].id_etiqueta = despiece[k2].id_etiqueta
|
|
LET despiece_act[k2].cantidad = despiece[k2].cantidad
|
|
LET despiece_act[k2].cod_grupo = pcodgrupo
|
|
LET despiece_act[k2].cod_tipo = pcodtipo
|
|
LET despiece_act[k2].cod_sec = pcodsec
|
|
LET despiece_act[k2].cod_n = pcodn
|
|
LET despiece_act[k2].lado_1 = despiece[k2].lado_1
|
|
LET despiece_act[k2].lado_2 = despiece[k2].lado_2
|
|
LET despiece_act[k2].lado_3 = despiece[k2].lado_3
|
|
LET despiece_act[k2].medida = despiece[k2].medida
|
|
|
|
DISPLAY "verificacion adicion ",pcodn," ",pcodgrupo," ",pcodtipo," ",pcodsec
|
|
END FOR
|
|
CALL despiece.clear()
|
|
END IF
|
|
|
|
FOR k1 = 1 TO despiece_act.getLength()
|
|
DISPLAY "DATOS despiece ACT ",despiece_Act[k1].*," ",tiene
|
|
END FOR
|
|
RETURN tiene
|
|
|
|
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
|
|
DISPLAY "Try block 1: ", sqlca.sqlcode
|
|
ROLLBACK WORK
|
|
LET numero_msg=1663
|
|
DISPLAY "ROLLBACK addUbicacion"
|
|
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 |