{-------------------------------------------------------------------------- PROGRAMA : IPPRMT044 OBJETIVO : Programa Captura Documento Otros Movimientos de Inventario de Producto Terminados. PROGRAMADOR : Juan Soto. FECHA REALIZACION : AGOSTO 1997. --------------------------------------------------------------------------} GLOBALS "ipprgb000.4gl" # # DEFINE num_cr_e,num_doc_e,factura_e,xconduce_no,num_doc_ret,ordenx,tmpnumero,tmpnueroExistencia, xnum_doc_transferencia,xnum_doc_c,dias_factura,pnumero_doc INTEGER, hacerdocumento BOOLEAN, direccion_p VARCHAR(100), pdescripmov VARCHAR(80), xtipo_orden 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), 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 DEFINE factor_conv DYNAMIC ARRAY OF DECIMAL(12,5), cantidad_factura,cantidad_devuelta,total_medida,cantidad_orden, cantidad_recibida,diferencia,cantidadRequisicion,Rcantidad_requisicion, cantidad_orden1,pcantidadConduce,transito,existencia,reservado DEC(12,5) DEFINE ac_cli,reimpresion,pcerrada,tienedespiece 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,TOemail,retorne VARCHAR(150), cuerpo_correo VARCHAR(230), CCEmail,subject VARCHAR(100), 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,trpendiente 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 DEC(12,5), psucid SMALLINT 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, cantidadBultos INT 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 --CONNECT to "smarmotech" USER usuarios USING clave 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 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) DEFINE datos RECORD cod_cia SMALLINT, num_doc INT, fecha DATE, fact_no char(10), conduce_no char(10), cod_sp SMALLINT, cod_sp_sec SMALLINT, cod_transp SMALLINT, sec_transp SMALLINT, placa char(10), cod_tarifa SMALLINT, cod_mov SMALLINT, detalle varchar(255), area SMALLINT, cod_n INT, cod_grupo INT, cod_tipo INT, cod_sec INT, cantidad_1 decimal(12, 5), cantidad_2 decimal(12, 5), bodega SMALLINT, us_crea char(50), fech_crea date, num_req INT, codigo_bloque char(25), sec_vend SMALLINT, direccion char(500), num_oc INT, bodega_d SMALLINT, num_Doc_retrabajo INT, departamento INT, factura INT, cotizacion_no INT END RECORD 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 " Adiciona Registro" AT 3,2 ATTRIBUTE (BLUE,REVERSE) DISPLAY " Cancela Operacion" AT 3,54 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,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, aplica_dev 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 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 KEY (F2) 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 KEY(CONTROL-W) 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 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,b.num_req INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.conduce_no,pnum_req 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) AND a.status_t is null AND b.num_req IS NOT NULL AND CONVERT(CHAR(10),fecha_factura,101) >= '01/01/2007' 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 ` 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 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 CALL visualizacion_despacho() RETURNING otros_mov.conduce_no, otros_mov.cod_sp, otros_mov.cod_sp_sec, pnum_req 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 nombre INTO otros_mov.descrip4 FROM vetb00004 WHERE tipo_cliente = otros_mov.cod_sp and 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 nombre INTO otros_mov.descrip4 FROM vetb00004 WHERE tipo_cliente = otros_mov.cod_sp and 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) 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) 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 IF prequisiciones = "SI" AND (pnumero_doc IS NULL OR pnumero_doc=0) THEN CALL msg(203) NEXT FIELD pnumero_Doc END IF IF pcontrol_departamento = "SI" THEN IF otros_mov.departamento IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) 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) 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 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 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 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 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,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,a.cantidad_1,'' FROM iptb00058 a WHERE a.numero_doc = pnumero_doc 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,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 WHERE a.num_oc =ordenx 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,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 WHERE a.conduce_no =ordenx 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,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 WHERE a.conduce_no = ordenx and a.status_t IS NULL AND a.num_Doc = otros_mov.entrada 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,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 WHERE a.num_oc = ordenx 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() # BUSCA LA EXISTENCIA LET p_act=arr_curr() 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 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 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 INTO p_iptb02.descrip_esp,p_iptb02.unidad_med,p_iptb02.control_existencia, existminima[p_act] 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 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 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 IF NOT siDespiece THEN CALL despiece() END IF END IF LET movi2[p_act].cantidad_p = cantidad_conduce - cantidad_orden #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 end if DISPLAY movi2[p_Act].cantidad_2 TO s_movi1[scr_l].cantidad_2 END IF END IF # CONTROL CODIGO EN BLANCO 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 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 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 #CONTROL DEVOLUCION IF control_devolucion="SI" THEN LET cantidad_factura = 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' 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.status_t is null 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_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_mov in (12,13) IF cantidad_devuelta+movi2[p_act].cantidad_2 > cantidad_factura THEN LET hacerdocumento = FALSE LET numero_msg =238 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF END IF # 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 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 IF NOT siDespiece THEN CALL despiece() END IF END IF END IF 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 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 END IF END IF END IF # CONTROL DEVOLUCION # CONTROL REQUISICION IF control_devolucion <>"SI" THEN IF pnum_req IS NOT NULL THEN CALL 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]) RETURNING hacerdocumento IF NOT hacerdocumento 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") 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 tipo_cliente,sec_cliente,orden INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.conduce_no FROM vetb00002 WHERE factura=otros_mov.factura and status_t is null AND CONVERT(CHAR(10),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 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 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 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 = ? ' PREPARE actorden FROM selec LET cuerpo_correo = "" 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 IF movi2[idx].cantidad_2 IS NULL THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cantidad_1 END IF IF movi2[idx].cantidad_2 is not null THEN IF movi2[idx].cantidad_1 = 0 THEN ROLLBACK WORK CALL msg(16) NEXT FIELD cantidad_1 END IF IF status_m = "2" 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 IF p_iptb02.control_existencia = "SI" THEN LET vexistencia = FALSE 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 ROLLBACK WORK CALL fgl_winmessage("ERROR","CANTIDAD EXCEDE EXISTENCIA","STOP") NEXT FIELD cod_sec END IF IF control_devolucion <> "SI" THEN IF pcontrol_despacho="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 END IF END IF # CONTROL ORDENS IF movi2[idx].cantidad_2 > 0 THEN LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1 END IF 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 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) END IF END IF IF ordenx IS NULL OR ordenx = 0 THEN LET ordenx = otros_mov.conduce_no 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) 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) 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) RETURNING diferencia EXECUTE actorden USING diferencia,ordenx,movi2[idx].cod_n, movi2[idx].cod_grupo, movi2[idx].cod_tipo,movi2[idx].cod_sec END IF # CUERPO TRANSFERENCIA IF pcontrol_transferencia = "SI" THEN LET cuerpo_correo = cuerpo_correo CLIPPED, "", "", "" 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 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 #DESPIECE IF despiece.getLength() > 0 THEN LET selec = " INSERT INTO iptb00025 (id_etiqueta ,cod_mov ,num_doc ,area ,cod_n ,cod_grupo ,cod_tipo ,cod_sec ,lado_1 ,lado_2 ,lado_3 ,cantidad ,medida ,us_crea,fech_crea,bodega) SELECT id_etiqueta,?,?,?,cod_n,cod_grupo,cod_tipo,cod_sec,lado_1,lado_2,lado_3,cantidad,medida,?,getdate(),bodega ", " FROM tmpdespiece WHERE id_despiece = ?" PREPARE insertadespiece FROM selec EXECUTE insertadespiece USING otros_mov.cod_mov,otros_mov.num_doc, movi2[p_act].area,usuarios,tmpnumero END IF # CALL autoFacturacion(datos.*,usuarios) COMMIT WORK #ACTUALIZA LA REQUISICION TRANSACCIONES IF pnumero_Doc > 0 THEN DISPLAY "numero ip ",pnumero_doc 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 ERROR "ENVIA EMAIL EXISTENCIA MINIMA...." CALL existenciaMinima() # ACTUALIZA EL ESTADO DE LA REQUISICION DESPACHO ERROR "BUSCA CANTIDAD REQUISICION DESPACHO...." SELECT SUM(a.cantidad) INTO cantidadRequisicion FROM cctb00026 a WHERE (a.num_oc = ordenx) AND a.status_t IS NULL IF cantidadRequisicion IS NULL THEN LET cantidadrequisicion = 0 END IF ERROR "BUSCA CANTIDAD REQUISICION DESPACHO EN IPTB06...." SELECT SUM(a.cantidad_2*-1) INTO rcantidad_requisicion FROM iptb00006 a WHERE (a.num_req = pnum_req) AND a.status_t IS NULL IF rcantidad_requisicion IS NULL THEN LET rcantidad_requisicion = 0 END IF LET diferencia = cantidadRequisicion - rcantidad_Requisicion IF diferencia < .05 THEN ERROR "ACTUALIZA REQUISICION DESP DESPACHADA...." UPDATE cctb00025 set estado_despacho = 'DESPACHADA', us_mod = usuarios, fech_mod = getdate() WHERE num_req = pnum_req ELSE ERROR "ACTUALIZA REQUISICION DESP DESPACHADA PARCIAL...." UPDATE cctb00025 set estado_despacho = 'DESPACHO PARCIAL', us_mod = usuarios, fech_mod = getdate() WHERE (num_req = pnum_req) END IF # CIERRE ORDENES ERROR "BUSCANDO CANTIDAD ORDENES...." LET diferencia = 0 SELECT SUM(cantidad) INTO cantidad_orden FROM prtb00013 a WHERE (a.num_oc = ordenx) IF cantidad_orden IS NULL THEN LET cantidad_orden = 0 END IF ERROR "BUSCANDO CANTIDAD EN CONDUCES...." SELECT SUM(cantidad_2*-1) 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 IF cantidad_conduce IS NULL THEN LET cantidad_conduce = 0 END IF 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 ERROR "ACTUALIZANDO IPTB12 CERRANDO Y ESTADO DESPACHADA..." 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 END IF END IF IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN ERROR "ACTUALIZANDO CCTB25 ESTADO DESPACHO PARCIAL...." 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 ERROR "ACTUALIZANDO PRTB12 ESTADO DEVOLUCION COMPLETA...." UPDATE prtb00012 SET estado_devolucion ='DEVOLUCION COMPLETA',us_mod = usuarios,fech_mod = getdate() WHERE num_oc = otros_mov.conduce_no ELSE ERROR "ACTUALIZANDO PRTB12 ESTADO DEVOLUCION PARCIAL...." UPDATE prtb00012 SET estado_devolucion ='DEVOLUCION PARCIAL',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" ERROR "INSERTANDO EN LA TABLA PRTB09...." INSERT INTO prtb00009 VALUES (ordenx,otros_mov.fecha,NULL,"S",prtb09.detalle,NULL,USER,getdate(),NULL,NULL) END IF # PROCEDIMIENTO ENVIO CORREO IF chconduce = 'S' OR pcontrol_departamento = "SI" OR pcontrol_transferencia="SI" THEN LET TOEmail = NULL IF psec_vend IS NOT NULL THEN SELECT UNIQUE a.email INTO TOEmail FROM seg0000 a WHERE a.sec_vend = psec_vend END IF # INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES LET subject = 'DOCUMENTO ',otros_mov.num_doc USING "&&&&&&&&", " CODIGO MOV ",otros_mov.cod_mov USING "&&&"," ",pdescripmov CLIPPED, "ORDEN: ",ordenx USING "<<<<<<<" IF TOEmail IS NULL THEN LET TOEmail = "jsoto@marmotech.com.do" ELSE LET toemail=toemail CLIPPED END IF DECLARE buscaCorreos CURSOR FOR SELECT 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 = 'jsoto@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 = "jsoto@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,"
",movi2[idx].descrip_esp CLIPPED,"",movi2[idx].cantidad_2 USING "##,###.##","
" DISPLAY "ccmail ",ccemail," to ",Toemail LET TOemail = toemail CLIPPED,",",ccemail CLIPPED LET xusername ='notificacion@marmotech.com.do' LET xsmtphost ='smtp.office365.com' LET xsmtpport = '587' LET xpassword = 'Lmmjvsd2020' IF ordenx >0 THEN CALL enviaemail(Toemail,subject,cuerpo_correo,NULL,xusername,xsmtphost,xsmtpport,xpassword) # RETURNING retorne LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED END IF # 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 START REPORT formu4 TO archivo 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 RUN imprime END IF ######### ADICION A SQL_E CUANDO ES DEVOLUCION MERCANCIA IF control_devolucion = "SI" THEN 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) INTO factura_e,psucid 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 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) 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) END IF END IF END FOR UPDATE iptb00007 SET num_doc = num_doc_e WHERE cod_mov = otros_mov.cod_mov IF control_devolucion="SI" THEN IF aplica_dev == 1 THEN IF otros_mov.factura IS NOT NULL THEN CALL insertaData() END IF END IF LET aplica_dev = 0 END IF END IF END IF SET CONNECTION "SQL_C" LET numero_msg = 1 CALL msg(numero_msg) CALL movi2.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) 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, 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 LIKE iptb00006.cantidad_1, cantidad_2 LIKE iptb00006.cantidad_2, 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) 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, 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 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 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 a.status_t IS NULL AND ",criterio CLIPPED," 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 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 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.* 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 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 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 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].medida IS NOT NULL THEN 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 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 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_medida = total_medida + despiece[idx].medida END IF END FOR LET movi2[p_act].cantidad_1 = 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 FOR SELECT a.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 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' ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec 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 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 START REPORT formu4 TO archivo 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 RUN imprime END IF END IF CALL movi2.clear() COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM 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) 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) DEFINE cantidad_Trx,fconv DEC(12,5), totalcantidad DEC(12,5), xcodn,xcodgrupo,xcodtipo,xcodsec SMALLINT, xkit INT SELECT SUM(a.cantidad) 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.num_req = pnum_req AND a.status_t IS NULL IF cantidadrequisicion IS NULL THEN LET cantidadrequisicion = 0 END IF SELECT SUM(a.cantidad_2) 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.cod_mov IN (30,31,55,12,13) and (a.num_req = pnum_req) AND a.status_t IS NULL IF Rcantidad_requisicion IS NULL THEN LET Rcantidad_requisicion=0 END IF 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 IF totalcantidad > cantidadRequisicion THEN # DISPLAY "SUMATORIA ",totalcantidad," cantidad req ",cantidadrequisicion RETURN FALSE ELSE RETURN true 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 --DISPLAY "recibo.fecha_orig ", recibo.fecha_orig # 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 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 LET dias_factura = TODAY - fact_gral.fecha_despacho {DISPLAY "fact_gral.fecha_despacho ", fact_gral.fecha_despacho DISPLAY "chitbis", chitbis} 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 = 0 FOR idx = 1 TO arr_count() IF arr_recibo.valor_pag IS NOT NULL THEN LET p_total = p_total + arr_recibo.valor_pag ELSE LET arr_recibo.valor_pag = 0 END IF END FOR } 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 SET CONNECTION "SQL_E" 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 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 END IF 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,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, 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) 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) 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, factura_ncf INT, xtipo_doc CHAR(2), codigodgii,codigodgii_m VARCHAR(10), ult_ncf,num_ncf,num_ncf_m INT, descripcion_ncf VARCHAR(100) 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 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 #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,num_ncf_m USING "&&&&&&&&" 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 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,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 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' 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 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 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 cctb00010 (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 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 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_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 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_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 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 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 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 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) 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) 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 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 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 ) 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,psucid,psucid,ordenx, xcotizacion,num_cr_e) UPDATE cctb00003 SET ult_recibo = x.num_doc WHERE tipo_Doc = 'NC' IF ult_ncf IS NULL THEN ROLLBACK WORK ELSE COMMIT WORK 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 { 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 = "jsoto@marmotech.com.do" LET encabezado = 'AVISO EXISTENCIA MINIMA ALMACENES PRODUCTOS TERMINADOS' LET cuerpo ="", "", "", "", "", "", "", "", "" LET cuerpo = cuerpo CLIPPED, "" 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, "", "", "", "", "" 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, "", "", "", "", "" 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 LET tieneDespiece = FALSE FOR i = 1 TO despiece.getLength() IF despiece[i].cod_sec IS NOT NULL THEN IF despiece[i].medida IS NOT NULL THEN IF despiece[i].cod_n = pcodn AND despiece[i].cod_grupo = pcodgrupo AND despiece[i].cod_tipo = pcodtipo AND despiece[i].cod_sec = pcodsec THEN LET tieneDespiece = TRUE END IF END IF END IF END FOR RETURN tieneDespiece 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,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 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' 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
CON EL DOCUMENTO ",otros_mov.num_doc USING "&&&&&&&&", "PERTENECIENTE AL MOVIMIENTO (", otros_mov.cod_mov USING "&&&",")", pdescripmov CLIPPED, "
PRODUCTOSCANTIDAD TRANSACCCANTIDAD MINIMAEXISTENCIA
",movi2[i].descrip_esp CLIPPED,"",movi2[i].cantidad_2 USING "##,###.##","",existminima[i] USING "##,###.##","",existenciaact[i] USING "##,###.##","
", movi2[i].descrip_esp CLIPPED,"",movi2[i].cantidad_2 USING "##,###.##","",existminima[i] USING "##,###.##","",existenciaact[i] USING "##,###.##","