{-------------------------------------------------------------------------- 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_c,dias_factura INTEGER, hacerdocumento BOOLEAN, direccion_p VARCHAR(100), pdescripmov VARCHAR(80) DEFINE factor_conv DYNAMIC ARRAY OF DECIMAL(12,5), cantidad_factura,cantidad_devuelta,total_medida,cantidad_orden, cantidad_recibida,diferencia,cantidadRequisicion,Rcantidad_requisicion, cantidad_orden1,pcantidadConduce,transito,existencia,reservado DEC(12,5) DEFINE ac_cli,reimpresion,pcerrada CHAR(1), pnum_req,xcotizacion INTEGER, pcontrol_cliente CHAR(3), aplica_dev CHAR(2), pcontrol_despacho,pcontrol_transferencia,chconduce,control_devolucion,pcontrol_departamento CHAR(2), procedimiento , PCCEMAIL,TOemail 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 CHAR(10), pitbis,pdescuento,xporc_Desc DEC(12,2) DEFINE nombre_emp,nom_cli CHAR(30) DEFINE p_num_doc INTEGER DEFINE p_itbi,valor_fac,p_total DECIMAL(12,2) DEFINE salir,via CHAR(1), ptotalb,xdescuento DEC(12,2) DEFINE prtb09 RECORD LIKE prtb00009.* DEFINE busca_v RECORD sec_cliente INTEGER, nombre CHAR(30) END RECORD DEFINE despiece DYNAMIC ARRAY OF RECORD etiqueta CHAR(20), 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) END RECORD, cantidad_conduce DEC(12,5), psucid SMALLINT 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 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 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) CLEAR SCREEN 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 BOOLEAN DIALOG ATTRIBUTE(UNBUFFERED) INPUT BY NAME otros_mov.*,num_doc_ret,pnum_req, aplica_dev ATTRIBUTE( WITHOUT DEFAULTS) BEFORE INPUT LET pnum_req = NULL LET num_doc_ret = NULL INITIALIZE otros_mov.* TO NULL LET otros_mov.cod_cia = 1 SELECT a.bodega,a.sucid INTO otros_mov.bodega,psucid FROM seg0001 a WHERE a.usuario = usuarios LET k1 = '1' CALL bodegas(k1) DISPLAY BY NAME otros_mov.bodega CALL cmovimientos() LET otros_mov.cod_mov=30 DISPLAY BY NAME otros_mov.cod_mov #CALL piking(usuarios,clave,impresor,otros_mov.bodega,psucid) 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 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 fact_no LET otros_mov.cod_sp = null LET otros_mov.cod_sp_sec = null IF otros_mov.cod_mov = 12 or otros_mov.cod_mov = 13 THEN IF otros_mov.fact_no is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fact_no 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.fact_no 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.fact_no 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.fact_no 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 fact_no 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" 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 UPDATE iptb00043 SET num_doc = tmpnumero + 1 WHERE usuario = usuarios END IF LET tmpnumero = tmpnumero + 1 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 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 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 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 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 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 END IF { CHEQUEO DE PERMISOS PARA EL USUARIO SELECT * FROM iptb00005 where cod_mov = otros_mov.cod_mov and us_crea = user 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 fgl_winmessage("ERROR","USTED NO TIENE PERMISOS PARA UTILIZAR BODEGA","INFO") 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 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 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 otros_mov.cod_mov <> 12 AND otros_mov.cod_mov <> 13 AND otros_mov.cod_mov <> 71 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 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_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 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.fact_no is not null THEN SELECT sec_cliente FROM vetb00002 WHERE factura = otros_mov.fact_no 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 END IF AFTER INPUT IF INT_FLAG THEN CALL msg(2) LET INT_FLAG=FALSE RETURN END IF 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 IF otros_mov.bodega IS NULL THEN CALL msg(16) NEXT FIELD bodega END IF IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov=13 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 THEN CALL msg(16) NEXT FIELD bodega_destino 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 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 INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,pcerrada,xcotizacion,psec_vend FROM prtb00012 a WHERE a.num_oc = otros_mov.conduce_no AND a.status_t IS NULL 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 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) 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) 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 otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 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.fact_no IS NULL THEN CALL fgl_winmessage("ERROR","FACTURA ESTA EN BLANCO, FAVOR DE COLOCAR NUMERO DE FACTURA","INFO") NEXT FIELD fact_no 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.fact_no," 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 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 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 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() # DISPLAY movi2[p_act].cantidad_1 TO smovi1[scr_l].cantidad_1 NEXT FIELD cantidad_1 ON ACTION 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 INTO p_iptb02.descrip_esp,p_iptb02.unidad_med,p_iptb02.control_existencia 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 SELECT UNIQUE a.cod_n FROM iptb00025 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.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_Doc IF STATUS = NOTFOUND THEN LET numero_msg =398 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF LET movi2[p_act].cantidad_p = cantidad_conduce - cantidad_orden #CONTROL DEVOLUCION IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN 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 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 otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN LET cantidad_factura = 0 SELECT SUM(a.cantidad) INTO cantidad_factura FROM vetb00003 a WHERE a.factura = otros_mov.fact_no 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.fact_no = otros_mov.fact_no 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 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 #================================================================================ # 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 SELECT UNIQUE a.cod_n FROM iptb00025 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.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_Doc IF STATUS = NOTFOUND THEN LET numero_msg =398 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF SELECT UNIQUE a.num_doc FROM iptb00025 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.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_doc IF STATUS != NOTFOUND THEN SELECT SUM(a.medida) INTO total_medida FROM iptb00025 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.cod_mov = otros_mov.cod_mov AND a.area = movi2[p_act].area AND a.num_doc = otros_mov.num_doc IF total_medida <> movi2[p_act].cantidad_1 THEN LET numero_msg = 152 CALL msg(numero_msg) NEXT FIELD cantidad_1 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 END IF 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 = otros_mov.conduce_no 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.conduce_no = otros_mov.conduce_no 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) 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 IF pcontrol_cliente = "SI" THEN FOR idx = 1 TO movi2.getLength() IF movi2[idx].cod_sec IS NOT NULL THEN IF movi2[idx].area IS NULL THEN CALL msg(16) DISPLAY "ESTOY EN GUARDAR " 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 BEGIN WORK # 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 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 UPDATE iptb00025 SET num_doc = otros_mov.num_doc WHERE num_doc = tmpnueroExistencia AND cod_mov = otros_mov.cod_mov DISPLAY BY NAME otros_mov.num_doc ATTRIBUTE (BLUE) UPDATE iptb00025 SET num_doc = otros_mov.num_doc WHERE num_doc = tmpnumero AND cod_mov = otros_mov.cod_mov # 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 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 not null THEN 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 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) RETURNING estado_req IF NOT estado_req THEN ROLLBACK WORK CALL fgl_winmessage("ERROR","CANTIDAD MAYOR A CANTIDAD REQUISICION","INFO") 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 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) 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) IF pcontrol_transferencia="SI" AND status_m = 2 THEN #condicion status_m=3 INSERT INTO iptb00033 VALUES (otros_mov.cod_cia,otros_mov.num_doc,otros_mov.fecha, otros_mov.fact_no,psec_vend,null,null,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',null,otros_mov.bodega,otros_mov.bodega_destino,null,'0',usuarios,GETDATE(),null,null) 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_produccion = '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 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 "<<<,<<<.####",'; ' 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 COMMIT WORK # ACTUALIZA EL ESTADO DE LA 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 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 UPDATE cctb00025 set estado_despacho = 'DESPACHADA', us_mod = usuarios, fech_mod = getdate() WHERE num_req = pnum_req ELSE UPDATE cctb00025 set estado_despacho = 'DESPACHO PARCIAL', us_mod = usuarios, fech_mod = getdate() WHERE num_req = pnum_req END IF # CIERRE ORDENES LET diferencia = 0 SELECT SUM(cantidad) INTO cantidad_orden FROM prtb00013 a WHERE a.num_oc = otros_mov.conduce_no #AND #a.fech_Crea > datetime (2007-01-01 08:00) year to minute IF cantidad_orden IS NULL THEN LET cantidad_orden = 0 END IF 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 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 UPDATE cctb00025 set estado_despacho = 'DESPACHO PARCIAL', us_mod = usuarios,fech_mod = getdate() WHERE num_req =pnum_req AND status_t IS NULL IF cantidad_devuelta > cantidad_orden THEN UPDATE prtb00012 SET estado_devolucion ='DEVOLUCION COMPLETA',us_mod = usuarios,fech_mod = getdate() WHERE num_oc = otros_mov.conduce_no ELSE UPDATE prtb00012 SET estado_devolucion ='DEVOLUCION PARCIAL',us_mod = usuarios,fech_mod = getdate() WHERE num_oc = otros_mov.conduce_no END IF END IF SELECT a.descrip_mov INTO pdescripmov FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov #-> Actualiza la tabla de monitoreo de las ordenes de corte vg. Saturday, 03 March, 2001 10:51:42 AM IF otros_mov.conduce_no IS NOT NULL THEN LET prtb09.detalle =pdescripmov CLIPPED, " CON EL NUMERO DE DOCUMENTO: ",otros_mov.num_doc USING "<<<<<<<", " DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy" INSERT INTO prtb00009 VALUES (ordenx,otros_mov.fecha,NULL,"S",prtb09.detalle,NULL,USER,getdate(),NULL,NULL) END IF # PROCEDIMIENTO ENVIO CORREO IF chconduce = 'S' OR pcontrol_departamento = "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 = otros_mov.conduce_no,pdescripmov CLIPPED IF TOEmail IS NULL THEN LET TOEmail = "jsoto@marmotech.com.do" ELSE LET toemail=toemail CLIPPED,";soporteclientes@marmotech.com.do" 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 = "soporteclienteclientes@marmotech.com.do" END IF LET cuerpo_correo = 'CLIENTE: ',otros_mov.descrip4 CLIPPED,", ", otros_mov.detalle CLIPPED LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED 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.fact_no 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 otros_mov.cod_mov = 12 OR otros_mov.cod_mov=13 THEN IF aplica_dev == 1 THEN CALL insertaData() END IF 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 CANCEL 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(40), #LIKE intb00005.descrip_mov, bodega LIKE iptb00006.bodega, bodega_destino SMALLINT, detalle LIKE iptb00006.detalle, 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) 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 (pdescripmov)) / 2 PRINT COLUMN l-2, doble,negras,"(",x.cod_mov using "&&",") ",pdescripmov,doble_of PRINT negras_off IF x.cod_mov = 12 THEN PRINT COLUMN 1, "Factura No: ",x.fact_no 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 : ",almacen_origen PRINT COLUMN 1, "ALMACEN DESTINO : ",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 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 CAST(a.etiqueta AS SMALLINT)= 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 SKIP 1 LINE PRINT COLUMN 1, "OBSERVACIONES: ", UPSHIFT(x.detalle) SKIP 1 LINE PRINT COLUMN 1, "TRANSPORTISTA: ",descrip2 PRINT COLUMN 1, "PLACA : ",x.placa SKIP 4 LINES PRINT COLUMN 1, "------------------", COLUMN 32, "------------------", COLUMN 55, "------------------" PRINT COLUMN 5, "Entregado Por", COLUMN 34, "Recibido Por", COLUMN 58, "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() 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 UNION 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_mov AND a.num_doc = tmpnumero 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 SELECT UNIQUE a.cod_n FROM iptb00025 a WHERE a.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_doc 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 DECLARE busca_despiece 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 prtb00022 a WHERE a.num_oc =ordenx 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_despiece INTO despiece[idx].* LET idx = idx + 1 END FOREACH ELSE 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 CAST(a.etiqueta AS SMALLINT) = 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 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 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() LET despiece[curr1].cod_n = movi2[p_act].cod_n LET despiece[curr1].cod_grupo = movi2[p_act].cod_grupo LET despiece[curr1].cod_tipo = movi2[p_act].cod_tipo LET despiece[curr1].cod_sec = movi2[p_act].cod_sec IF curr1 > 1 THEN IF despiece[curr1].etiqueta IS NULL THEN LET despiece[curr1].etiqueta = despiece[curr1-1].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 arr_count() 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 iptb00025 WHERE num_doc = otros_mov.num_doc AND cod_mov = otros_mov.cod_mov 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 AND area = movi2[p_act].area LET total_medida = 0 FOR idx = 1 TO arr_count() IF despiece[idx].medida IS NOT NULL THEN INSERT INTO iptb00025 (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) VALUES (despiece[idx].etiqueta,otros_mov.cod_mov,otros_mov.num_doc, movi2[p_act].area,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,usuarios,getdate()) LET total_medida = total_medida + despiece[idx].medida END IF END FOR LET movi2[p_act].cantidad_1 = total_medida CLOSE WINDOW wdespiece END FUNCTION FUNCTION consulta() CONSTRUCT CRITERIO ON iptb00006.num_Doc,iptb00006.cod_mov,iptb00006.fecha,iptb00006.conduce_no, iptb00006.cod_sp,iptb00006.cod_sp_Sec,iptb00006.bodega FROM num_doc,cod_mov,fecha,conduce_no,cod_sp,cod_sp_sec,bodega 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 iptb00006.num_doc, iptb00006.cod_cia , iptb00006.cod_mov , iptb00006.fact_no, iptb00006.cod_transp, ", "iptb00006.sec_transp, iptb00006.cod_tarifa , iptb00006.placa, iptb00006.fecha, iptb00006.conduce_no,", " iptb00006.bodega , iptb00006.bodega_d, iptb00006.detalle, iptb00006.cod_sp, ", "iptb00006.cod_sp_sec, iptb00026.departamento, adtb00001.nom_dpto, iptb00028.cod_mov1,iptb00028.entrada, ", " ' ',' ',iptb00006.num_req,iptb00006.sec_vend ", " FROM adtb00001 INNER JOIN ", " iptb00026 ON adtb00001.departamento = iptb00026.departamento RIGHT OUTER JOIN ", " iptb00006 INNER JOIN ", " iptb00048 ON iptb00006.bodega = iptb00048.bodega AND iptb00048.usuario ='",usuarios,"'", " INNER JOIN iptb00005 ON iptb00006.cod_mov = iptb00005.cod_mov ON ", " iptb00026.num_doc = iptb00006.num_doc AND ", " iptb00026.cod_mov = iptb00006.cod_mov LEFT OUTER JOIN ", " iptb00028 ON iptb00006.num_doc = iptb00028.num_doc AND iptb00006.cod_mov = iptb00028.cod_mov ", "WHERE ", criterio CLIPPED, " and IPTB00006.status_t IS NULL and iptb00006.fecha > '01/01/2009'" PREPARE comando FROM selec DECLARE busca4 SCROLL CURSOR WITH HOLD FOR comando OPEN busca4 FETCH FIRST busca4 INTO otros_mov.*,pnum_req,psec_vend IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL busca_info() DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend MENU "Busqueda " COMMAND "Siguiete " "Sieguiente Registro Cumpla Condicion" FETCH NEXT busca4 INTO otros_mov.*,pnum_req,psec_vend IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF CALL busca_info() DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS busca4 INTO otros_mov.*,pnum_req,psec_vend IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF CALL busca_info() DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST busca4 INTO otros_mov.*,pnum_req,psec_vend LET numero_msg = 5 CALL msg(numero_msg) CALL busca_info() DISPLAY BY NAME otros_mov.*,psec_vend COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST busca4 INTO otros_mov.*,pnum_req,psec_vend LET numero_msg = 4 CALL msg(numero_msg) CALL busca_info() DISPLAY BY NAME otros_mov.*,pnum_req,psec_vend 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 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 = otros_mov.conduce_no 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 #LET archivo = FGL_GETENV("FGLSPOOL"),"\\ipmt44" #START REPORT formu4 TO archivo {START REPORT formu4 TO "C:\\archivo"} 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.descrip_mov INTO otros_mov.descrip_mov1 FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov1 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 = otros_mov.conduce_no 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 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 IF pexistencia < 0 THEN RETURN TRUE END IF IF cantidad > pexistencia THEN RETURN TRUE END IF RETURN verdad 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) DEFINE cantidad_Trx 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 IF Rcantidad_requisicion+cantidad_Trx > cantidadRequisicion+.03 THEN 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.fact_no 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 = CAST(a.fact_no AS INT)) AND (b.factura = a.fact_no) 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 (b.factura = a.fact_no) 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 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 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.fact_no ,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 CALL defecto(usuarios,clave,impresor1) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia SET CONNECTION "SQL_E" SELECT a.factura INTO fact_gral.factura FROM vetb00002 a WHERE a.factura_c =otros_mov.fact_no 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.fact_no ,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 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 : ",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 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 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 VARCHAR(10), ult_ncf,num_ncf INT, descripcion_ncf VARCHAR(100) 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 #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 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 : ",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 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