{ ----------------------------------------------------------------------------- PROGRAMA : CCPRMT003 OBJETIVO : Generacion de Notas de Credito Por Avance a Orden. REALIZADO POR : Tadeo A. Ferreras FECHA : Enero 26, 1993 ----------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE xvalorck, xvalorCr, xvalorEfectivo, xvalorComision, xvalorLink, link_pesos,efectivo_pesos,tarjeta_pesos,ck_pesos,tasa,monto_av, cr_pesos, xefectivo_pesos, xck_pesos, xlink_pesos, xcr_pesos DEC(12, 2) ,ventas int DEFINE decenas DYNAMIC ARRAY OF CHAR(20) DEFINE centenas DYNAMIC ARRAY OF CHAR(20) DEFINE unidades1 DYNAMIC ARRAY OF CHAR(20), soporteVentas VARCHAR(100), tieneorden BOOLEAN, xestado VARCHAR(20), ptasa, diferencia, remanente, xmontoDeposito, p_comision, v_comision DEC(12, 2), pventas CHAR(1), tipoimprime VARCHAR(2), xventas CHAR(1), email_cliente, vendedorEmail, xusername, xsmtphost, xsmtpport, xpassword, estado_req VARCHAR(100), entradaDiario VARCHAR(25), i, plataforma SMALLINT, deposito, rdeposito,tipo_cuenta INT, monto_link DECIMAL(12, 2) DEFINE otro_num, recibo_cons, recibo_Ext, psecvend1, XidEntrada INT, psimbolo CHAR(10), pmoneda CHAR(20), ch_itbis CHAR(2), ppaga_itbis CHAR(1), fecha_vence DATE DEFINE registroEntrada DYNAMIC ARRAY OF RECORD referenciaEntrada VARCHAR(25), fecha DATE, tipo CHAR(1), cuenta_no VARCHAR(8), departamento INT, detalle VARCHAR(100), debito, credito DEC(12, 2) END RECORD DEFINE valor_orig, montos_avance DECIMAL(12, 2), valor_letras CHAR(240) DEFINE nombre1, nombre2, apell CHAR(15) DEFINE nombre_ven, nombre_cli STRING DEFINE tipo_p CHAR(1) DEFINE recibo_nc RECORD num_doc INTEGER, num_orden INTEGER, tipo_cliente INTEGER, sec_cliente INTEGER, cod_emp_sec INTEGER, cuenta_no CHAR(8), fecha DATE, avance DECIMAL(12, 2) END RECORD, pcondpago SMALLINT, psecvend INT, valor_cotizado DEC(12, 2), codigodgii VARCHAR(10), comprobante VARCHAR(100) ####### Funcion para agregar un recibo de pago Por Avance MAIN DEFER INTERRUPT CALL STARTLOG("ccprmt03.log") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave SELECT a.nombre, a.rnc, a.direccion, a.telefono, a.fax INTO p_companias.nombre, p_companias.rnc, p_companias.direccion, p_companias.telefono, p_companias.fax FROM companias a SELECT UNIQUE a.sucid, a.sucnombre INTO codigo_sucursal, nombre_sucursal FROM sucursales a, seg0001 b WHERE b.usuario = usuarios AND b.sucid = a.sucid IF STATUS = NOTFOUND THEN CALL fgl_winmessage( "ERROR", "USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS", "STOP") EXIT PROGRAM END IF CALL ccprmt003() END MAIN FUNCTION ccprmt003() OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22, PROMPT LINE 23 #CALL pantalla() OPEN FORM ccfmmt003 FROM "ccfmmt003" DISPLAY FORM ccfmmt003 DISPLAY "ccprmt003" AT 4, 3 DISPLAY "Generacion Nota de Credito Por Avance Orden" AT 6, 18 DISPLAY nombre_sucursal TO localidad MENU ON ACTION nuevo LET tipo_p = "A" CLEAR FORM INITIALIZE recibo_nc.* TO NULL LET recibo_nc.fecha = TODAY CALL ccpcad003() ON ACTION buscar LET tipo_p = "C" INITIALIZE recibo_nc.* TO NULL SET CONNECTION "IFMX" CALL ccpcmf003() ON ACTION salir EXIT MENU END MENU END FUNCTION FUNCTION ccpcad003() DEFINE hoy DATE, generaE BOOLEAN LET hoy = NULL LABEL volver: INPUT BY NAME recibo_nc.*, tipoimprime, monto_efectivo, monto_ck, monto_cr, monto_link, recibo.comentario, ch_itbis, plataforma,tasa WITHOUT DEFAULTS ## AQUI SE PREPARA PARA LA CAPTURA DE INFORMACION BEFORE INPUT LET monto_efectivo = 0 LET monto_ck = 0 LET monto_cr = 0 LET monto_link = 0 LET efectivo_pesos=0 LET ck_pesos=0 LET tarjeta_pesos=0 LET link_pesos=0 # Limpia en pantalla los valores en pesos para que no quede el de un recibo anterior DISPLAY BY NAME efectivo_pesos, ck_pesos, tarjeta_pesos, link_pesos LET tipoimprime = 'MT' DISPLAY BY NAME tipoimprime LET ch_itbis = 'SI' DISPLAY BY NAME ch_itbis CALL plataformapago() CALL cuenta() NEXT FIELD Num_orden SELECT UNIQUE a.sucid, a.sucnombre INTO codigo_sucursal, nombre_sucursal FROM sucursales a, seg0001 b WHERE b.usuario = usuarios AND b.sucid = a.sucid IF STATUS = NOTFOUND THEN CALL fgl_winmessage( "ERROR", "USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS", "STOP") EXIT PROGRAM END IF AFTER FIELD cod_emp_Sec SELECT a.nom1_emp || " " || a.apell1_Emp INTO nombre_ven FROM adtb00003 a WHERE a.num_emp = recibo_nc.cod_Emp_sec IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD cod_emp_sec END IF DISPLAY BY NAME nombre_ven AFTER FIELD num_orden LET monto_efectivo = 0 LET monto_ck = 0 LET monto_cr = 0 LET monto_link = 0 IF recibo_nc.num_orden IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_orden END IF LET nombre_cli = NULL {SELECT UNIQUE a.tipo_cliente,a.sec_cliente,b.nombre,CONVERT(char(10),a.fecha_oc,103) INTO recibo_nc.tipo_cliente,recibo_nc.sec_cliente,nombre_cli, recibo_nc.fecha FROM prtb00012 a, b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.num_oc = recibo_nc.num_orden } IF tipo_p = 'A' THEN LET xnombre_proyecto = NULL LET xnombre_provincia = NULL LET xdireccion = NULL LET nombre_cli = NULL LET recibo_nc.avance = 0 LET psecvend1 = NULL LET condicionPago = NULL SET CONNECTION "MSSQL" SELECT UNIQUE a.tipo_cliente, a.sec_cliente, a.nombre_cliente, a.nombre_proyecto, c.nombre_provincia, a.direccion_cliente, a.cond_pago, a.sec_vend, a.total_neto, a.codigo_dgii, ISNULL(a.sec_vend_aux, 0), a.ventas, d.descrip, b.patente, a.ventas INTO recibo_nc.tipo_cliente, recibo_nc.sec_cliente, nombre_cli, xnombre_proyecto, xnombre_provincia, xdireccion, pcondpago, psecvend, valor_cotizado, codigodgii, psecvend1, pventas, condicionPago, email_cliente, opcion FROM vetb00050 a, vetb00004 b, vetb00020 c, vetb00012 d WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.cotizacion_no = recibo_nc.num_orden AND b.cod_provincia = c.cod_provincia AND a.cond_pago = d.cond_pago IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_orden END IF # LET nombre_cli = nombre_cli CLIPPED," ",recibo_nc.tipo_cliente USING "<<","-",recibo_nc.sec_cliente USING "<<<<<<<" IF psecvend1 = 0 THEN LET recibo_nc.cod_emp_sec = psecvend ELSE LET recibo_nc.cod_emp_sec = psecvend1 END IF # BUSCA DESCRIPCION COMPROBANTE SELECT a.tipo_ncf, a.fecha_vencimiento INTO comprobante, fecha_vence FROM vetb00071 a WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S' DISPLAY BY NAME valor_cotizado, comprobante, codigodgii, condicionPago #BUSCA LA TASA SELECT ISNULL(a.prima, 0) INTO ptasa FROM vetb00019 a WHERE a.disponible = 'S' CALL procesaCliente(recibo_nc.tipo_cliente) RETURNING verdad SELECT a.paga_itbis, a.ventas, a.idEntrada INTO ppaga_itbis, xventas, XidEntrada FROM vetb00060 a WHERE a.tipo_cliente = recibo_nc.tipo_cliente IF ppaga_itbis = 'N' THEN LET ch_itbis = 'NO' ELSE LET ch_itbis = "SI" END IF IF pventas = '1' THEN LET diferencia = 100 ELSE LET diferencia = 100 / ptasa END IF # LET monto_cr=valor_cotizado DISPLAY BY NAME monto_cr, email_cliente #SUMA AVANCES LET montos_avance = 0 SELECT ISNULL(SUM(a.valor), 0) INTO montos_avance FROM cctb00001 a WHERE a.documento_ref = recibo_nc.num_orden AND a.tipo_Doc = 'AV' AND a.num_doc = a.aplica_a AND a.tipo_cliente = recibo_nc.tipo_cliente AND a.sec_cliente = recibo_nc.sec_cliente AND a.status_t IS NULL DISPLAY BY NAME montos_avance LET remanente = valor_cotizado - montos_avance DISPLAY BY NAME remanente END IF IF tipo_p = 'C' THEN LET condicionPago = NULL SELECT UNIQUE a.tipo_cliente, a.sec_cliente, a.nombre_cliente, d.descrip, a.ventas INTO recibo_nc.tipo_cliente, recibo_nc.sec_cliente, nombre_cli, condicionPago, opcion FROM vetb00050 a, vetb00004 b, vetb00012 d WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.cotizacion_no = recibo_nc.num_orden AND a.cond_pago = d.cond_pago IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_orden END IF CALL procesaCliente(recibo_nc.tipo_cliente) RETURNING verdad END IF LET nombre_cli = nombre_cli CLIPPED, " ", recibo_nc.tipo_cliente USING "<<", "-", recibo_nc.sec_cliente USING "<<<<<<<" # SELECT UNIQUE a.sec_vend INTO recibo_nc.cod_emp_sec FROM vetb00028 a # WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND # a.sec_cliente = recibo_nc.sec_cliente LET nombre_ven = NULL LET nombre1 = NULL LET nombre2 = NULL LET apell = NULL SELECT UNIQUE a.nom1_emp, a.nom2_emp, a.apell1_emp INTO nombre1, nombre2, apell FROM adtb00003 a WHERE a.num_emp = recibo_nc.cod_emp_sec LET nombre_ven = nombre1 CLIPPED, " ", nombre2 CLIPPED, " ", apell CLIPPED DISPLAY BY NAME recibo_nc.tipo_cliente, recibo_nc.sec_cliente, nombre_cli, recibo_nc.cod_emp_sec, nombre_ven, valor_cotizado ATTRIBUTE(REVERSE) DISPLAY BY NAME recibo_nc.fecha ATTRIBUTE(BLUE) AFTER FIELD fecha IF recibo_nc.fecha IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha END IF LET p_fechas = recibo_nc.fecha CALL prd(p_fechas, usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF AFTER FIELD monto_efectivo LET recibo_nc.avance = 0 LET efectivo_pesos=0 LET recibo_nc.avance = monto_ck + monto_efectivo + monto_cr + monto_link LET efectivo_pesos=monto_efectivo*tasa DISPLAY BY NAME recibo_nc.avance,efectivo_pesos AFTER FIELD monto_ck LET recibo_nc.avance = 0 LET ck_pesos=0 LET recibo_nc.avance = monto_ck + monto_efectivo + monto_cr + monto_link LET ck_pesos=monto_ck*tasa DISPLAY BY NAME recibo_nc.avance,ck_pesos AFTER FIELD monto_cr LET recibo_nc.avance = 0 LET tarjeta_pesos=0 LET recibo_nc.avance = monto_ck + monto_efectivo + monto_cr + monto_link LET tarjeta_pesos=monto_cr*tasa DISPLAY BY NAME recibo_nc.avance,tarjeta_pesos AFTER FIELD monto_link LET recibo_nc.avance = 0 LET link_pesos=0 LET recibo_nc.avance = monto_ck + monto_efectivo + monto_cr + monto_link LET link_pesos=monto_link*tasa DISPLAY BY NAME recibo_nc.avance,link_pesos AFTER FIELD tasa IF opcion !=1 AND ventas !=1 THEN IF tipo_cuenta = 1 THEN # Cuenta en pesos y cliente en dolares: la tasa es obligatoria y no puede ser 1 IF tasa IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tasa ELSE IF tasa <= 1 THEN CALL fgl_winmessage( "TASA NO PERMITIDA", "EL CLIENTE ES EN DOLARES Y LA CUENTA DE DEPOSITO ESTA EN PESOS.\n\nDEBE REGISTRAR LA TASA DE CAMBIO (MAYOR QUE 1). NO SE PERMITE DEJARLA EN 1.", "STOP") NEXT FIELD tasa END IF END IF ELSE IF tasa IS NULL OR tasa=0 THEN LET tasa=1 END IF END IF END IF IF opcion !=1 AND ventas=1 THEN IF tasa IS NULL or tasa=0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tasa END IF END IF LET link_pesos=0 LET tarjeta_pesos=0 LET ck_pesos=0 LET efectivo_pesos=0 LET link_pesos=monto_link*tasa LET tarjeta_pesos=monto_cr*tasa LET ck_pesos=monto_ck*tasa LET efectivo_pesos=monto_efectivo*tasa DISPLAY BY NAME link_pesos,efectivo_pesos,tarjeta_pesos,ck_pesos AFTER FIELD plataforma IF monto_cr != 0 THEN SELECT a.comisiones INTO p_comision FROM cctb00009 a WHERE a.id = plataforma LET v_comision = monto_cr * (p_comision / 100) DISPLAY BY NAME v_comision, p_comision IF plataforma IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD plataforma END IF END IF BEFORE FIELD avance IF monto_ck IS NULL THEN LET monto_ck = 0 END IF IF monto_efectivo IS NULL THEN LET monto_efectivo = 0 END IF IF monto_cr IS NULL THEN LET monto_cr = 0 END IF IF monto_link IS NULL THEN LET monto_link = 0 END IF DISPLAY BY NAME recibo_nc.avance AFTER FIELD cuenta_no SELECT a.ventas INTO tipo_cuenta FROM cgtb00012 a WHERE a.cuenta_no=recibo_nc.cuenta_no NEXT FIELD tasa # AFTER FIELD avance # IF recibo_nc.avance IS NULL OR recibo_nc.avance < 0 THEN # LET numero_msg = 16 # CALL msg(numero_msg) # NEXT FIELD avance # END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF opcion !=1 AND ventas!=1 AND tipo_cuenta = 1 THEN # Cuenta en pesos y cliente en dolares: la tasa es obligatoria y no puede ser 1 IF tasa IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tasa ELSE IF tasa <= 1 THEN CALL fgl_winmessage( "TASA NO PERMITIDA", "EL CLIENTE ES EN DOLARES Y LA CUENTA DE DEPOSITO ESTA EN PESOS.\n\nDEBE REGISTRAR LA TASA DE CAMBIO (MAYOR QUE 1). NO SE PERMITE DEJARLA EN 1.", "STOP") NEXT FIELD tasa END IF END IF END IF IF monto_cr > 0 THEN IF plataforma IS NULL OR plataforma= 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD plataforma END IF END IF IF monto_cr = 0 THEN LET plataforma = 0 END IF IF v_comision IS NULL THEN LET v_comision = 0 END IF IF monto_ck IS NULL THEN LET monto_ck = 0 END IF IF monto_efectivo IS NULL THEN LET monto_efectivo = 0 END IF IF monto_cr IS NULL THEN LET monto_cr = 0 END IF IF recibo_nc.num_orden IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_doc END IF IF recibo_nc.cuenta_no IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cuenta_no END IF IF recibo_nc.fecha IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha END IF IF monto_efectivo IS NULL AND monto_ck IS NULL AND monto_cr IS NULL THEN CALL fgl_winmessage( "ERROR", "DEBES IDENTIFICAR LA VIA DEL INGRESO, EFECTIVO, CK O TARJETA", "INFO") NEXT FIELD monto_efectivo END IF IF recibo_nc.cod_emp_sec IS NULL OR recibo_nc.cod_emp_sec = 0 THEN SELECT a.sec_vend, ISNULL(a.sec_vend_aux, 0) INTO psecvend, psecvend1 FROM vetb00050 a WHERE a.cotizacion_no = recibo_nc.num_orden IF psecvend1 = 0 THEN LET recibo_nc.cod_emp_sec = psecvend ELSE LET recibo_nc.cod_emp_sec = psecvend1 END IF END IF IF monto_ck = 0 AND monto_cr = 0 AND monto_efectivo=0 AND monto_link=0 THEN CALL msg(16) NEXT FIELD monto_efectivo END IF LET recibo_nc.avance = monto_efectivo + monto_ck + monto_cr + monto_link DISPLAY BY NAME recibo_nc.avance IF recibo_nc.avance IS NULL OR recibo_nc.avance < 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD monto_efectivo END IF IF recibo_nc.avance = 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD avance END IF IF codigo_sucursal IS NULL THEN CALL fgl_Winmessage( "ERROR", "SUCURSAL ESTA EN BLANCO, USTED POSIBLEMENTE NO TIENE SUCURSAL ASIGNADA", "INFO") CONTINUE INPUT END IF # EN CASO QUE LA COTIZACION SEA AL CONTADO DEBE VERIFICAR SI TIENE ORDEN IF pcondpago = 4 OR pcondpago = 10 THEN CALL verifica_orden() IF NOT tieneorden THEN CALL msg(1018) NEXT FIELD num_orden END IF END IF END INPUT INITIALIZE p_companias.* TO NULL SELECT UNIQUE a.sucid, a.sucnombre INTO codigo_sucursal, nombre_sucursal FROM sucursales a, seg0001 b WHERE b.usuario = usuarios AND b.sucid = a.sucid #SI ES CLIENTE 17 - EXPORTACION PREGUNTA SI VA A AFECTAR EN FINANZAS # POR DEFECTO SI SE AFECTA FINANZAS (IFMX) => afecta_ex = "YES". # SOLO AL CLIENTE 17 (EXPORTACION) SE LE PREGUNTA; SI RESPONDE "NO" NO # SE AFECTA. TODOS LOS DEMAS CLIENTES AFECTAN POR DEFECTO. LOS 18/19 # NUNCA VAN A IFMX PORQUE procesacliente() DEVUELVE verdad = FALSE. LET afecta_ex = "YES" IF recibo_nc.tipo_cliente = 17 THEN LET afecta_ex = fgl_winquestion( "AFECTA", "DESEA AFECTAR FINANZAS?", "YES", "YES|NO", "QUESTION", 0) END IF #-------------------------------------- AFECTACION A FINANZAS --------------------------- IF tipo_p = "A" THEN # AQUI VIENE LA FUNCION PARA EVALUAR EL CLIENTE SET CONNECTION "MSSQL" # SE COLOCO EN COMENTARIO PORQUE SE ESTA TOMANDO OTRAS DECICIONES CON RELACION A LA ORDEN Y # REQUISICIONES DE DESPACHOS FECHA: 30/12/2020 CALL genera_orden() {SE PUSO EN COMENTARIO EL 23/12/2022, EN ESTE MOMENTO DESARROLLE UNA FUNCION PARA LOS PAGOS AL CONTADO, ESTA PARTE EVALUA AL CLIENTE PARA SABER SI CON EL RECIBO DE INGRESO SE PUEDE AUTORIZAR UNA DE LAS REQUISICIONES QUE TIENE IF pcondpago <> 4 AND pcondpago <> 10 THEN CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad IF verdad THEN CALL evalua_clientes() END IF END IF} CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad LET otro_num = 0 #------------------------------------------------------------------------ # AFECTACION A FINANZAS (IFMX): SOLO SI afecta_ex = "YES" (CLIENTE 17 + EL # USUARIO RESPONDIO YES) Y EL CLIENTE ES AFECTABLE (verdad = TRUE). # ESTE BLOQUE ES LO UNICO QUE ESCRIBE EN LA CONEXION IFMX. TODO LO DEMAS # (smarmotech / MSSQL) SE EJECUTA SIEMPRE, FUERA DE ESTE IF. #------------------------------------------------------------------------ IF afecta_ex = "YES" AND verdad = TRUE THEN SET CONNECTION "IFMX" SELECT a.nombre, a.rnc, a.direccion, a.telefono, a.fax INTO p_companias.nombre, p_companias.rnc, p_companias.direccion, p_companias.telefono, p_companias.fax FROM companias a SELECT a.ult_recibo INTO recibo_nc.num_doc FROM cctb00003 a WHERE a.tipo_doc = "AV" IF recibo_nc.num_doc IS NULL THEN LET recibo_nc.num_doc = 0 END IF LET recibo_nc.num_doc = recibo_nc.num_doc + 1 LET otro_num = recibo_nc.num_doc BEGIN WORK UPDATE cctb00003 SET ult_recibo = recibo_nc.num_doc WHERE tipo_doc = 'AV' IF otro_num = 0 OR otro_num IS NULL THEN CALL fgl_winmessage( "ERROR", "PROBLEMAS EN EL CONTROL NUMERO", "STOP") RETURN END IF DISPLAY BY NAME recibo_nc.num_doc ATTRIBUTE(REVERSE) SELECT UNIQUE a.sucid, a.sucnombre INTO codigo_sucursal, nombre_sucursal FROM sucursales a, seg0001 b WHERE b.usuario = usuarios AND b.sucid = a.sucid INSERT INTO cctb00001( cuenta_no, cod_cia, num_doc, tipo_doc, tipo_cliente, sec_cliente, cod_emp, cod_emp_sec, fecha_orig, aplica_a, documento_ref, valor, monto_desc, us_crea, fech_crea, costo, valor_efectivo, valor_cheque, valor_tarjeta, sucid, plataforma, p_comision, v_comision, valor_link,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos) VALUES(recibo_nc.cuenta_no, p_companias.cod_comp, recibo_nc.num_doc, "AV", recibo_nc.tipo_cliente, recibo_nc.sec_cliente, codigo_sucursal, recibo_nc.cod_emp_sec, recibo_nc.fecha, recibo_nc.num_doc, recibo_nc.num_orden, recibo_nc.avance, 0, usuarios, getdate(), '1', monto_efectivo, monto_ck, monto_cr, codigo_sucursal, plataforma, p_comision, v_comision, monto_link,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos) INSERT INTO cctb00011( cod_cia, tipo_cliente, sec_cliente, num_doc, tipo_doc, comentario, us_crea, fech_crea, sucid, valor_efectivo, valor_cheque, valor_tarjeta) VALUES(p_companias.cod_comp, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.num_doc, 'AV', recibo.comentario, usuarios, getdate(), codigo_sucursal, monto_efectivo, monto_ck, monto_cr) COMMIT WORK END IF #---------------------------------------- TERMINO AFECTACION FINANZAS ------------------- SET CONNECTION "MSSQL" SELECT a.ult_recibo INTO recibo_nc.num_doc FROM cctb00003 a WHERE a.tipo_doc = "AV" IF recibo_nc.num_doc IS NULL THEN LET recibo_nc.num_doc = 0 END IF LET recibo_nc.num_doc = recibo_nc.num_doc + 1 SELECT UNIQUE a.sucid, a.sucnombre INTO codigo_sucursal, nombre_sucursal FROM sucursales a, seg0001 b WHERE b.usuario = usuarios AND b.sucid = a.sucid IF recibo_nc.cuenta_no IS NOT NULL THEN CALL numeroDeposito( recibo_nc.cuenta_no, recibo_nc.fecha, codigo_sucursal, pventas, plataforma) RETURNING rdeposito, xmontoDeposito, xvalorck, xvalorCr, xvalorEfectivo, xvalorComision, xvalorLink, xefectivo_pesos, xck_pesos, xlink_pesos, xcr_pesos DISPLAY "XMONTODEPOSITO: ",xmontoDeposito," xvalorck: ",xvalorck," valorcr: ",xvalorCr, " valorefectivo: ",xvalorEfectivo," xvalorComision: ",xvalorComision," valorlink: ",xvalorlink IF rdeposito = 0 THEN SELECT a.num_doc INTO deposito FROM tetb00009 a IF deposito IS NULL THEN LET deposito = 0 INSERT INTO tetb00009 VALUES(deposito) END IF LET deposito = deposito + 1 UPDATE tetb00009 SET num_doc = deposito DISPLAY BY NAME deposito END IF END IF #---------------------------------------------------------------------------------------------- # GENERA REGISTROS PARA LA ENTRADA AL DIARIO GENERAL #---------------------------------------------------------------------------------------------- CALL GeneraEntradaDiario( usuarios, 'RECIBOS INGRESOS', XidEntrada, recibo_nc.cuenta_no, recibo_nc.fecha, recibo_nc.avance, 0, 0, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, xventas, 0, recibo_nc.num_doc, v_comision) RETURNING generaE, registroEntrada FOR i = 1 TO registroEntrada.getLength() IF registroEntrada[i].referenciaEntrada IS NOT NULL THEN LET entradaDiario = registroEntrada[i].referenciaEntrada DISPLAY "SECUENCIA DE ENTRADA: ", entradaDiario END IF END FOR #----------------------------------------------------------------------------------------------- BEGIN WORK UPDATE cctb00003 SET ult_recibo = recibo_nc.num_doc WHERE tipo_doc = 'AV' IF recibo_nc.tipo_cliente = 19 OR recibo_nc.tipo_cliente = 18 THEN LET ch_itbis = 'NO' END IF IF rdeposito > 0 THEN LET deposito = rdeposito END IF INSERT INTO cctb00001( cuenta_no, cod_cia, num_doc, tipo_doc, tipo_cliente, sec_cliente, cod_emp, cod_emp_sec, fecha_orig, aplica_a, documento_ref, valor, monto_desc, us_crea, fech_crea, costo, valor_efectivo, valor_cheque, valor_tarjeta, factura_ext, sucid, referenciaEntrada, num_doc_deposito, valor_link, plataforma, p_comision, v_comision,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos) VALUES(recibo_nc.cuenta_no, p_companias.cod_comp, recibo_nc.num_doc, "AV", recibo_nc.tipo_cliente, recibo_nc.sec_cliente, codigo_sucursal, recibo_nc.cod_emp_sec, recibo_nc.fecha, recibo_nc.num_doc, recibo_nc.num_orden, recibo_nc.avance, 0, SUSER_SNAME(), GETDATE(), '1', monto_efectivo, monto_ck, monto_cr, otro_num, codigo_sucursal, entradaDiario, deposito, monto_link, plataforma, p_comision, v_comision,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos) INSERT INTO cctb00011( cod_cia, tipo_cliente, sec_cliente, num_doc, tipo_doc, comentario, us_crea, fech_crea, chitbis, sucid, valor_efectivo, valor_cheque, valor_tarjeta, num_doc_relacionado, valor_link) VALUES(p_companias.cod_comp, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.num_doc, 'AV', recibo.comentario, usuarios, getdate(), ch_itbis, codigo_sucursal, monto_efectivo, monto_ck, monto_cr, otro_num, monto_link) #ACTUALIZACION CONTABILIDAD GENERAL IF generaE THEN FOR idx = 1 TO registroEntrada.getLength() IF registroEntrada[idx].cuenta_no IS NOT NULL THEN INSERT INTO cgtb00004( fecha, tipo, ref, cuenta_no, detalle_1, departamento, debito, credito, us_crea, fech_crea, tipo_doc_cxc, num_doc_cxc, tipo_cliente, sec_cliente, sucid, valor_original, nombre_proveedor) VALUES(registroEntrada[idx].fecha, registroEntrada[idx].tipo, registroEntrada[idx].referenciaEntrada, registroEntrada[idx].cuenta_no, registroEntrada[idx].detalle, registroEntrada[idx].departamento, registroEntrada[idx].debito, registroEntrada[idx].credito, usuarios, GETDATE(), 'AV', recibo_nc.num_doc, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, codigo_sucursal, recibo_nc.avance, nombre_cli) END IF END FOR END IF #INSERTAR EN LA TABLA DE DEPOSITOS IF recibo_nc.cuenta_no IS NOT NULL THEN IF tipo_cuenta=1 THEN IF opcion!=1 THEN LET monto_av=efectivo_pesos+ck_pesos+link_pesos+ck_pesos END IF ELSE LET monto_av=recibo_nc.avance END IF IF monto_av IS NULL THEN LET monto_av=recibo_nc.avance END if IF rdeposito = 0 THEN DISPLAY "en rdeposito =0, XMONTODEPOSITO: ",xmontoDeposito," xvalorck: ",xvalorck," valorcr: ",xvalorCr, " valorefectivo: ",xvalorEfectivo," xvalorComision: ",xvalorComision," valorlink: ",xvalorlink LET monto_av=0 INSERT INTO tetb00001( num_doc, cuenta_no, fecha, monto, sucursal, us_crea, fech_crea, monto_efectivo, monto_ck, monto_tarjeta, monto_link, plataforma, p_comision, v_comision, ventas,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos) VALUES(deposito, recibo_nc.cuenta_no, recibo_nc.fecha, monto_av, codigo_sucursal, usuarios, getdate(), monto_efectivo, monto_ck, monto_cr, monto_link, plataforma, p_comision, v_comision, pventas,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos) ELSE LET deposito = rdeposito DISPLAY "en update rdeposito =0, XMONTODEPOSITO: ",xmontoDeposito," xvalorck: ",xvalorck," valorcr: ",xvalorCr, " valorefectivo: ",xvalorEfectivo," xvalorComision: ",xvalorComision," valorlink: ",xvalorlink IF xmontoDeposito IS NULL THEN LET xmontoDeposito = 0 END IF UPDATE tetb00001 SET monto = xmontoDeposito + monto_av, monto_efectivo = xvalorEfectivo + monto_efectivo, monto_tarjeta = xvalorCr + monto_cr, monto_ck = xvalorck + monto_ck, v_comision = v_comision + xvalorComision, efectivo_pesos=xefectivo_pesos+efectivo_pesos, tarjeta_pesos=xcr_pesos+tarjeta_pesos, ck_pesos=xck_pesos+ck_pesos, link_pesos=xlink_pesos+link_pesos WHERE num_doc = rdeposito END IF INSERT INTO tetb00008( num_doc, tipo_doc, documento, fecha, tipo_cliente, sec_cliente, nombre, valor, us_crea, fech_crea) VALUES(deposito, 'AV', recibo_nc.num_doc, recibo_nc.fecha, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, nombre_cli, recibo_nc.avance, usuarios, getdate()) END IF #------------------------------------------------------------------------------------------------ COMMIT WORK IF afecta_ex ="YES" THEN # RELACIONA EL RECIBO DE IFMX (MARMOTECH, num_doc = otro_num) CON EL # NUMERO DE DOCUMENTO DE SMARMOTECH (recibo_nc.num_doc). SOLO CORRE # CUANDO EL USUARIO RESPONDIO YES (CLIENTE 17). SI RESPONDIO NO, NO # SE AFECTA IFMX Y ESTE UPDATE NO SE EJECUTA. SET CONNECTION "IFMX" UPDATE cctb00001 SET factura_ext = recibo_nc.num_doc WHERE num_doc = otro_num AND tipo_cliente = recibo_nc.tipo_cliente AND sec_cliente = recibo_nc.sec_cliente AND tipo_doc = 'AV' END IF SET CONNECTION "MSSQL" # BUSCA EMAIL VENDEDOR SELECT a.email INTO vendedorEmail FROM seg0000 a WHERE a.sec_vend = recibo_nc.cod_emp_sec # BUSCA SOPORTE VENTAS LET soporteVentas = NULL SELECT MAX(a.email) INTO soporteVentas FROM seg0001 a, vetb00093 b WHERE b.cotizacion_no = recibo_nc.num_orden AND b.sec_vend = a.num_emp IF soporteVentas IS NOT NULL THEN LET vendedorEmail = vendedorEmail CLIPPED, ";", soporteVentas END IF LET chmensaje = "NUMERO RECIBO: ", recibo_nc.num_doc USING "<<<<<<" LET subject = "AVISO PAGO AVANCE COTIZACION NO. ", recibo_nc.num_orden USING "&&&&&&" LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED LET cuerpo_correo = "VENDEDOR : ", nombre_ven CLIPPED LET cuerpo_correo = cuerpo_correo CLIPPED, " FECHA : ", recibo_nc.fecha USING "DD/MM/YYYY" LET cuerpo_correo = cuerpo_correo CLIPPED, " RECIBO : ", recibo_nc.num_doc USING "&&&&&&" LET cuerpo_correo = cuerpo_correo CLIPPED, " CLIENTE: ", nombre_cli CLIPPED #################### IF afecta_ex = "YES" THEN IF verdad THEN INSERT INTO cctb00020( cod_cia, tipo_doc, num_oc, fecha, tipo_cliente, sec_cliente, factura, valor_efectivo, num_trans, us_crea, fech_crea) VALUES(p_companias.cod_comp, 'AV', recibo_nc.num_doc, recibo_nc.fecha, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.num_orden, recibo_nc.avance, otro_num, usuarios, getdate()) END IF END IF #CREA LA REQUISICION DE DESPACHO SI NO SE HA ADICIONADO ALGUNA, TAMBIEN ADICIONA LA ORDEN EN CASO QUE NO TENGA IF pcondpago = 4 OR pcondpago = 10 THEN CALL autorizacioncontado( recibo_nc.num_orden, valor_cotizado, montos_avance, usuarios, recibo_nc.avance, recibo_nc.num_doc, 'AV', nombre_cli) RETURNING estado_req DISPLAY BY NAME estado_req END IF #------------------------------------------------------------------------- LET cuerpo_correo = cuerpo_correo CLIPPED, " ", estado_req CLIPPED LET xusername = 'notificacion@marmotech.com.do' LET xsmtphost = 'smtp.office365.com' LET xsmtpport = '587' LET xpassword = 'Lmmjvsd2020' # LET vendedoremail = 'jsoto@marmotech.com.do' CALL enviaemail( vendedorEmail, subject, cuerpo_correo, NULL, xusername, xsmtphost, xsmtpport, xpassword) #RETURNING retorne SET CONNECTION "MSSQL" IF opcion = '1' OR opcion = '2' OR opcion = '3' THEN IF email_cliente IS NOT NULL THEN CALL envia_encuesta( email_cliente, recibo_nc.num_orden, nombre_cli, opcion, 'RECIBO') END IF END IF #--- FIN DEL PROCESO TIPO "A" (NUEVO). LO ANTERIOR SIEMPRE SE EJECUTA EN # smarmotech/MSSQL; SOLO EL BLOQUE IFMX QUEDO CONDICIONADO A afecta_ex. END IF IF tipo_p = "C" THEN CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad IF verdad = TRUE AND afecta_ex="YES" THEN SET CONNECTION "IFMX" SELECT a.* INTO p_companias.* FROM companias a UPDATE cctb00001 SET (cuenta_no, banco, tipo_cliente, sec_cliente, cod_emp_sec, fecha_orig, valor, monto_desc, us_mod, fech_mod) = (recibo_nc.cuenta_no, recibo_nc.num_orden, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.cod_emp_sec, recibo_nc.fecha, recibo_nc.avance, 0, usuarios, getdate()) WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND aplica_a = recibo_nc.num_doc UPDATE cctb00011 SET comentario = recibo.comentario, us_mod = usuarios, fech_mod = getdate() WHERE cod_cia = p_companias.cod_comp AND num_doc = recibo_nc.num_doc AND tipo_doc = 'AV' END IF SET CONNECTION "MSSQL" SELECT UNIQUE a.num_trans INTO otro_num FROM cctb00020 a WHERE a.num_trans = recibo_nc.num_doc UPDATE cctb00001 SET (cuenta_no, banco, tipo_cliente, sec_cliente, cod_emp_sec, fecha_orig, valor, monto_desc, us_mod, fech_mod) = (recibo_nc.cuenta_no, recibo_nc.num_orden, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.cod_emp_sec, recibo_nc.fecha, recibo_nc.avance, 0, SUSER_SNAME(), GETDATE()) WHERE tipo_doc = "AV" AND num_doc = otro_num AND aplica_a = recibo_nc.num_doc UPDATE cctb00011 SET comentario = recibo.comentario, us_mod = usuarios, fech_mod = getdate() WHERE cod_cia = p_companias.cod_comp AND num_doc = recibo_nc.num_doc AND tipo_doc = 'AV' END IF # NUMERO DE RECIBO A IMPRIMIR: # - SI SE AFECTO IFMX (afecta_ex="YES", cliente 17): se imprime el # secuencial de IFMX/MARMOTECH (otro_num), que es el numero con que se # actualizo esa base. # - SI NO SE AFECTO IFMX: se conserva el numero del flujo de SMARMOTECH # que ya viene en recibo_nc.num_doc. IF afecta_ex = "YES" AND otro_num IS NOT NULL AND otro_num > 0 THEN LET recibo_nc.num_doc = otro_num END IF # IMPRESION MATRICIAL IF tipoimprime = 'GR' THEN LET r_filename = "ccprmt001a.4rp" LET r_output = "SVG" LET preview = 1 -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE EXIT PROGRAM END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT cctb01b TO XML HANDLER HANDLER OUTPUT TO REPORT cctb01b( recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.fecha, recibo_nc.num_doc, recibo_nc.cod_emp_sec, 'AV', NULL, NULL, recibo_nc.num_orden, 0, recibo_nc.avance, nombre_cli, nombre_ven, ' ', recibo.comentario) FINISH REPORT cctb01b END IF ELSE 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 volante TO archivo DISPLAY "imprime ", imprime DISPLAY BY NAME recibo_nc.num_doc ATTRIBUTE(REVERSE) OUTPUT TO REPORT volante(recibo_nc.*) FINISH REPORT volante IF tipoimprime = 'MT' THEN RUN imprime END IF END IF { LET r_filename = "ccprmt001a.4rp" LET r_output = "SVG" LET preview = 1 -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default IF preview = 0 THEN CALL fgl_report_selectPreview(1) -- changing default # CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter") ELSE CALL fgl_report_selectPreview(preview) END IF LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE EXIT PROGRAM END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok IF verdad THEN LET recibo_nc.num_doc = otro_num END IF START REPORT cctb01b TO XML HANDLER HANDLER OUTPUT TO REPORT cctb01b(recibo_nc.tipo_cliente, recibo_nc.sec_cliente,recibo_nc.fecha,recibo_nc.num_doc, recibo_nc.cod_emp_sec,'AV',null,null, recibo_nc.num_orden,0,recibo_nc.avance, nombre_cli,nombre_ven,' ',recibo.comentario) FINISH REPORT cctb01b END IF} LET numero_msg = 1 CALL msg(numero_msg) END FUNCTION FUNCTION ccpcmf003() DEFINE conexion STRING INPUT BY NAME recibo_nc.num_doc BEFORE INPUT SET CONNECTION "IFMX" LET conexion = "IFMX" ON KEY(F2) SET CONNECTION "IFMX" LET conexion = "IFMX" ON KEY(F3) SET CONNECTION "MSSQL" LET conexion = "MSSQL" AFTER FIELD num_doc LET recibo_cons = NULL LET recibo_ext = NULL SELECT a.documento_ref, a.tipo_cliente, a.sec_cliente, a.cod_emp_sec, CONVERT(CHAR(10), a.fecha_orig, 103), a.valor, a.cod_emp, a.valor_efectivo, a.valor_cheque, a.valor_tarjeta, b.comentario, a.valor_link INTO recibo_nc.num_orden, recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.cod_emp_sec, recibo_nc.fecha, recibo_nc.avance, codigo_sucursal, monto_efectivo, monto_ck, monto_cr, recibo.comentario, monto_link FROM cctb00001 a LEFT OUTER JOIN cctb00011 b ON a.tipo_doc = b.tipo_doc AND a.num_Doc = b.num_doc AND a.sucid = b.sucid WHERE a.status_t IS NULL AND a.num_doc = a.aplica_a AND a.tipo_doc = 'AV' AND a.num_Doc = recibo_nc.num_doc # QUITE EL CONTROL DE LA SUCURSAL PARA QUE SE PUDIERA CONSULTAR DE CUALQUIER SUCURSAL # AND a.sucid = codigo_sucursal IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD Num_Doc END IF IF conexion = "MSSQL" THEN LET recibo_cons = recibo_nc.num_doc ELSE LET recibo_ext = recibo_nc.num_doc END IF { IF STATUS = NOTFOUND THEN SET CONNECTION "MSSQL" SELECT a.banco,a.tipo_cliente,a.sec_cliente,a.cod_emp_sec, a.fecha_orig,a.valor,a.cod_emp INTO recibo_nc.num_orden,recibo_nc.tipo_cliente,recibo_nc.sec_cliente, recibo_nc.cod_emp_sec,recibo_nc.fecha,recibo_nc.avance,codigo_sucursal FROM cctb00001 a WHERE a.status_t IS NULL AND a.num_doc = a.aplica_a AND a.tipo_doc = 'AV' AND a.num_Doc = recibo_nc.num_doc IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD Num_Doc END IF LET recibo_cons = recibo_nc.num_doc ELSE LET recibo_ext = recibo_nc.num_doc END IF } # SELECT a.nombre INTO nombre_cli FROM vetb00004 a # WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND # a.sec_cliente = recibo_nc.sec_cliente SELECT a.nombre_cliente INTO nombre_cli FROM vetb00050 a WHERE a.cotizacion_no = recibo_nc.num_orden SELECT UNIQUE a.nom1_emp, a.nom2_emp, a.apell1_emp INTO nombre1, nombre2, apell FROM adtb00003 a WHERE a.num_emp = recibo_nc.cod_emp_sec CALL busca_info() LET nombre_ven = nombre1 CLIPPED, " ", nombre2 CLIPPED, " ", apell CLIPPED DISPLAY BY NAME recibo_nc.*, nombre_cli, nombre_ven, monto_efectivo, monto_ck, monto_cr, monto_link DISPLAY codigo_sucursal TO localidad AFTER INPUT IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) LET INT_FLAG = FALSE RETURN END IF EXIT INPUT END INPUT MENU { ESTA FUNCIONABILIDAD SE QUITO TEMPORALMENTE, YA QUE EL PROGRAMA TIENE QUE ACTUALIZAR DOS BASE DE DATOS DIFERENTES, PERO NO TENGO LA IDENTIFICACION DE CUAL SERIA LA PRIMERA ON ACTION anular LET p_fechas = recibo_nc.fecha SET CONNECTION "MSSQL" CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET otro_num = recibo_nc.num_doc LET recibo_orig = recibo_nc.num_doc CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad IF verdad THEN SET CONNECTION "IFMX" SELECT SUM(a.valor+a.monto_desc) INTO monto1 FROM cctb00001 a WHERE a.status_t IS NULL AND a.num_doc = recibo_nc.num_doc AND a.num_doc != a.aplica_a AND a.tipo_doc = "AV" IF monto1 IS NULL THEN LET monto1 = 0 END IF IF monto1 <> 0 THEN ERROR "Documento Tiene Aplicaciones... No Puede Ser Eliminado" CONTINUE MENU END IF END IF SET CONNECTION "MSSQL" IF verdad THEN SELECT a.num_oc INTO recibo_nc.num_doc FROM cctb00020 a WHERE a.num_trans = otro_num and tipo_Doc = 'AV' END IF SELECT SUM(a.valor+a.monto_desc) INTO monto1 FROM cctb00001 a WHERE a.status_t IS NULL AND a.num_doc = recibo_nc.num_doc AND a.num_doc != a.aplica_a AND a.tipo_doc = "AV" IF monto1 IS NULL THEN LET monto1 = 0 END IF IF monto1 <> 0 THEN ERROR "Documento Tiene Aplicaciones... No Puede Ser Eliminado" CONTINUE MENU END IF LET respuesta = fgl_winquestion("INFO","ESTA SEGURO DE QUERER ANULAR ESTE DOCUMENTO?","NO","NO|YES","question",0) IF UPSHIFT(respuesta) = "YES" THEN IF verdad THEN SET CONNECTION "IFMX" LET recibo_nc.num_doc= recibo_orig UPDATE cctb00001 SET (status_t,us_mod,fech_mod) = ( "E",usuarios,getdate()) WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND aplica_a = recibo_nc.num_doc and fecha_orig > '03/01/2011' END IF SET CONNECTION "MSSQL" SELECT a.num_oc INTO recibo_nc.num_doc FROM cctb00020 a WHERE a.num_trans = otro_num UPDATE cctb00001 SET (status_t,us_mod,fech_mod) = ( "E",SUSER_SNAME(),GETDATE()) WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND aplica_a = recibo_nc.num_doc and fecha_orig > '03/01/2011' LET numero_msg = 82 CALL msg(numero_msg) END IF } ON ACTION rImprimir INPUT BY NAME tipoimprime CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad IF verdad = TRUE THEN SET CONNECTION "IFMX" SELECT a.rnc, a.direccion, a.telefono, a.fax INTO p_companias.rnc, p_companias.direccion, p_companias.telefono, p_companias.fax FROM companias a END IF SET CONNECTION "MSSQL" SELECT a.cod_perfil INTO pperfil FROM seg0001 a WHERE a.usuario = usuarios # CALL seg000(usuarios,pperfil,'otroimp') RETURNING acceso # CALL fgl_Winmessage("IMP",acceso,"INFO") # IF acceso = "SI" THEN CALL defecto( usuarios, clave, impresor) RETURNING imprime, negrilla_on, negrillas_of, doble_on, doble_off, comp_on, comp_off, doce, normal, archivo, copia IF tipoimprime = 'GR' THEN LET r_filename = "ccprmt001a.4rp" LET r_output = "SVG" LET preview = 1 -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API IF fgl_report_loadCurrentSettings( r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default IF preview = 0 THEN CALL fgl_report_selectPreview(1) -- changing default # CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter") ELSE CALL fgl_report_selectPreview(preview) END IF LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE EXIT PROGRAM END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT cctb01b TO XML HANDLER HANDLER OUTPUT TO REPORT cctb01b( recibo_nc.tipo_cliente, recibo_nc.sec_cliente, recibo_nc.fecha, recibo_nc.num_doc, recibo_nc.cod_emp_sec, 'AV', NULL, NULL, recibo_nc.num_orden, 0, recibo_nc.avance, nombre_cli, nombre_ven, ' ', recibo.comentario) FINISH REPORT cctb01b END IF ELSE DISPLAY "archivo ", archivo START REPORT volante TO archivo OUTPUT TO REPORT volante(recibo_nc.*) FINISH REPORT volante IF tipoimprime = 'MT' THEN RUN imprime END IF END IF CALL fgl_winmessage( "IMPRESION", "ENVIO INFORMACION A LA IMPRESORA", "STOP") # END IF { LET r_filename = "ccprmt001a.4rp" LET r_output = "SVG" LET preview = 1 -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default IF preview = 0 THEN CALL fgl_report_selectPreview(1) -- changing default # CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter") ELSE CALL fgl_report_selectPreview(preview) END IF LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE EXIT PROGRAM END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT cctb01b TO XML HANDLER HANDLER OUTPUT TO REPORT cctb01b(recibo_nc.tipo_cliente, recibo_nc.sec_cliente,recibo_nc.fecha,recibo_nc.num_doc, recibo_nc.cod_emp_sec,'AV',null,null, recibo_nc.num_orden,0,recibo_nc.avance, nombre_cli,nombre_ven,' ',recibo.comentario) FINISH REPORT cctb01b END IF } {ON ACTION otroimp CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia #CALL configureoutput("PDF") RETURNING HANDLER #START REPORT volante1 TO XML HANDLER HANDLER START REPORT volante1 TO archivo OUTPUT TO REPORT volante1(recibo_nc.*) FINISH REPORT volante1 RUN imprime CALL fgl_winmessage("IMPRESION","ENVIO INFORMACION A LA IMPRESORA","STOP") } ON ACTION salir EXIT MENU END MENU END FUNCTION REPORT volante(x) DEFINE x RECORD num_doc INTEGER, num_orden INTEGER, tipo_cliente INTEGER, sec_cliente INTEGER, cod_emp_sec INTEGER, cuenta_no CHAR(8), fecha DATE, avance DECIMAL(12, 2) END RECORD DEFINE doble CHAR(1) DEFINE comp_off, negras, negras_of, italic, italic_of CHAR(2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 PAGE LENGTH 33 FORMAT PAGE HEADER LET negras = ASCII 27, ASCII 69 LET negras_of = ASCII 27, ASCII 70 LET doble = ASCII 14 LET italic = ASCII 27, ASCII 52 LET italic_of = ASCII 27, ASCII 53 LET comp_off = ASCII 18 PRINT COLUMN 70, comp_off, ASCII 27, ASCII 80 PRINT COLUMN 68, doble, x.num_doc USING "&&&&&&" IF NOT verdad THEN PRINT " " PRINT " " ELSE PRINT COLUMN 5, negras, p_companias.nombre CLIPPED, negras_of, COLUMN 74, x.fecha USING "dd/mm/yyyy" PRINT COLUMN 5, p_companias.direccion CLIPPED, " TEL.", p_companias.telefono CLIPPED END IF PRINT COLUMN 15, italic, "RECIBO DE INGRESO" PRINT COLUMN 15, italic, "AVANCE A COTIZACION" SKIP 1 LINE LET valor_orig = x.avance LET valor_letras = NULL SELECT a.simbolo, a.descripcion_moneda INTO psimbolo, pmoneda FROM vetb00061 a, vetb00060 b WHERE a.ventas = b.ventas AND b.tipo_cliente = x.tipo_cliente CALL convierte() # BUSCA TIPO DE VENTAS PRINT COLUMN 5, "LOCALIDAD: ", nombre_sucursal PRINT COLUMN 5, "RECIBIMOS DE :", negras, nombre_cli CLIPPED, "(", x.tipo_cliente USING "&&", "-", x.sec_cliente USING "&&&&&&", ")", negras_of PRINT COLUMN 5, "DIRECCION :", negras, xdireccion, negras_of PRINT COLUMN 5, "PROVINCIA :", negras, xnombre_provincia CLIPPED, negras_of PRINT COLUMN 5, "VENDEDOR :", recibo_nc.cod_emp_sec USING "<<<<", " ", nombre_ven PRINT COLUMN 5, "PROYECTO :", negras, xnombre_proyecto CLIPPED, negras_of PRINT COLUMN 5, "LA SUMA DE :", negras, valor_letras CLIPPED, negras_of PRINT COLUMN 5, "VALOR RECIBIDO:", negras, psimbolo CLIPPED, x.avance USING "<<<,<<<,<<<.##", negras_of SKIP 1 LINE PRINT COLUMN 1, "------------------------------------------------------------------------------" PRINT COLUMN 5, "FECHA", COLUMN 40, "COTIZACION NO.", COLUMN 60, "NETO COBRADO" PRINT COLUMN 1, "------------------------------------------------------------------------------" SKIP 1 LINE PRINT COLUMN 5, x.fecha USING "dd/mm/yyyy", COLUMN 40, x.num_orden USING "&&&&&&", COLUMN 58, psimbolo CLIPPED, x.avance USING "<<<,<<<,<##.##" PAGE TRAILER SKIP 1 LINE PRINT COLUMN 5, "OBSERVACION: ", recibo.comentario PRINT COLUMN 5, "_______________________________", COLUMN 45, "_______________________________" PRINT COLUMN 10, " Preparado Por ", COLUMN 45, " Autorizado Por" PRINT italic_of END REPORT REPORT volante1(x) DEFINE x RECORD num_doc INTEGER, num_orden INTEGER, tipo_cliente INTEGER, sec_cliente INTEGER, cod_emp_sec INTEGER, fecha DATE, avance DECIMAL(12, 2) END RECORD DEFINE doble CHAR(1) DEFINE comp_off, negras, negras_of, italic, italic_of CHAR(2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 PAGE LENGTH 33 FORMAT PAGE HEADER { LET negras = ASCII 27, ASCII 69 LET negras_of = ASCII 27, ASCII 70 LET doble = ASCII 14 LET italic = ASCII 27, ASCII 52 LET italic_of = ASCII 27, ASCII 53 LET comp_off = ASCII 18 } PRINT COLUMN 70, comp_off, ASCII 27, ASCII 80 PRINT COLUMN 68, doble, x.num_doc USING "&&&&&&" IF NOT verdad THEN PRINT " " PRINT " " ELSE PRINT COLUMN 5, negras, p_companias.nombre CLIPPED, negras_of, COLUMN 74, TODAY USING "dd/mm/yyyy" PRINT COLUMN 5, p_companias.direccion CLIPPED, " TEL.", p_companias.telefono CLIPPED END IF PRINT COLUMN 15, italic, "RECIBO DE INGRESO" PRINT COLUMN 15, italic, "AVANCE A COTIZACION" SKIP 1 LINE LET valor_orig = x.avance LET valor_letras = NULL CALL convierte() SET CONNECTION "MSSQL" # BUSCA TIPO DE VENTAS SELECT a.simbolo, a.descripcion_moneda INTO psimbolo, pmoneda FROM vetb00061 a, vetb00060 b WHERE a.ventas = b.ventas AND b.tipo_cliente = x.tipo_cliente PRINT COLUMN 60, "LOCALIDAD: ", nombre_sucursal PRINT COLUMN 5, "RECIBIMOS DE :", negras, nombre_cli CLIPPED, "(", x.tipo_cliente USING "&&", "-", x.sec_cliente USING "&&&&&&", ")", negras_of PRINT COLUMN 5, "DIRECCION :", negras, xdireccion, negras_of PRINT COLUMN 5, "PROVINCIA :", negras, xnombre_provincia CLIPPED, negras_of PRINT COLUMN 5, "VENDEDOR :", recibo_nc.cod_emp_sec USING "<<<<", " ", nombre_ven PRINT COLUMN 5, "PROYECTO :", negras, xnombre_proyecto CLIPPED, negras_of PRINT COLUMN 5, "LA SUMA DE :", negras, valor_letras CLIPPED, negras_of PRINT COLUMN 5, "VALOR RECIBIDO:", negras, psimbolo CLIPPED, x.avance USING "<<<,<<<,<<<.##", negras_of PRINT COLUMN 5, "REFERENCIA : ", otro_num USING "&&&&&&" SKIP 1 LINE PRINT COLUMN 1, "------------------------------------------------------------------------------" PRINT COLUMN 5, "FECHA", COLUMN 40, "COTIZACION NO.", COLUMN 60, "NETO COBRADO" PRINT COLUMN 1, "------------------------------------------------------------------------------" SKIP 1 LINE PRINT COLUMN 5, x.fecha USING "dd/mm/yyyy", COLUMN 40, x.num_orden USING "&&&&&&", COLUMN 58, psimbolo CLIPPED, x.avance USING "<<<,<<<,<##.##" PAGE TRAILER SKIP 1 LINE PRINT COLUMN 5, "OBSERVACION: ", recibo.comentario PRINT COLUMN 5, "_______________________________", COLUMN 45, "_______________________________" PRINT COLUMN 10, " Preparado Por ", COLUMN 45, " Autorizado Por" PRINT italic_of END REPORT FUNCTION convierte() DEFINE consegui CHAR(1) DEFINE p, miles, m, k, a, b, d, c, entero, unidades_mi, unidades_m, unidad, mil, millon, unid_c, u INTEGER DEFINE cheles DECIMAL(7, 2) CALL letras() LET valor_letras = NULL LET consegui = "N" LET entero = valor_orig LET cheles = (valor_orig - entero) * 100 LET unidad = entero / 100 LET unidad = entero - (unidad * 100) LET a = entero / 1000 LET a = entero - (a * 1000) LET d = entero - 19 IF d >= 82 THEN LET c = entero / 100 # Para Controlar los miles y los cientos IF c <= 9 THEN LET valor_letras = valor_letras CLIPPED, " ", centenas[c] CLIPPED ELSE LET c = entero / 1000 LET b = entero / 1000000 END IF IF d > 19 THEN LET d = unidad - 19 END IF IF unidad > 0 AND unidad < 20 THEN LET d = unidad LET valor_letras = valor_letras CLIPPED, " ", unidades1[d] CLIPPED LET consegui = "S" END IF ELSE IF d > 0 AND d <= 81 THEN LET valor_letras = valor_letras CLIPPED, " ", decenas[d] CLIPPED LET consegui = "S" END IF END IF # Para controlar los miles IF entero > 999 THEN LET unidades_m = a / 100 LET unidades_m = a - (unidades_m * 100) LET valor_letras = NULL IF c = 1 THEN LET valor_letras = "MIL" END IF IF c > 1 AND c <= 19 THEN LET valor_letras = valor_letras CLIPPED, " ", unidades1[c] CLIPPED, " ", "MIL" END IF IF c >= 20 AND c <= 999 THEN IF c < 82 THEN LET c = c - 19 LET valor_letras = valor_letras CLIPPED, " ", decenas[c] CLIPPED ELSE LET k = c / 100 IF k > 0 AND k < 10 THEN LET unid_c = c - (k * 100) # AQUI FUE IF k > 1 THEN LET valor_letras = valor_letras CLIPPED, " ", centenas[k] CLIPPED ELSE IF k = 1 THEN IF unid_c > 0 THEN LET valor_letras = valor_letras CLIPPED, " ", centenas[k] CLIPPED ELSE LET valor_letras = valor_letras CLIPPED, " ", decenas[81] CLIPPED END IF END IF END IF END IF LET unid_c = c - (k * 100) IF unid_c > 0 AND unid_c < 20 THEN LET valor_letras = valor_letras CLIPPED, " ", unidades1[unid_c] CLIPPED ELSE LET unid_c = unid_c - 19 IF unid_c > 0 AND unid_c <= 81 THEN LET valor_letras = valor_letras CLIPPED, " ", decenas[unid_c] CLIPPED LET consegui = "S" END IF END IF IF c > 82 AND c < 100 AND consegui <> "S" THEN LET c = c - 19 LET valor_letras = valor_letras CLIPPED, " ", decenas[c] CLIPPED END IF IF c > 100 AND consegui <> "S" THEN LET c = c - 119 IF c > 0 AND c <= 81 THEN LET valor_letras = valor_letras CLIPPED, " ", decenas[c] CLIPPED LET consegui = "N" END IF END IF END IF LET valor_letras = valor_letras CLIPPED, " ", "MIL" END IF LET c = a IF c > 100 THEN LET c = c / 100 LET valor_letras = valor_letras CLIPPED, " ", centenas[c] CLIPPED END IF IF c = 100 THEN LET valor_letras = valor_letras CLIPPED, " ", decenas[81] CLIPPED END IF IF unidades_m > 0 AND unidades_m - 19 <= 81 THEN LET a = unidades_m - 19 IF a > 0 AND a <= 81 THEN LET valor_letras = valor_letras CLIPPED, " ", decenas[a] CLIPPED LET consegui = "S" ELSE LET valor_letras = valor_letras CLIPPED, " ", unidades1[unidades_m] CLIPPED END IF END IF END IF #======================================================================================== # Para Controlar cantidades en millones IF entero > 999999 THEN LET c = 0 LET miles = entero - 1000000 LET m = miles / 1000 LET p = miles - (m * 1000) LET u = m / 100 LET u = m - (u * 100) LET unidades_mi = p LET unidades_mi = unidades_mi / 100 LET unidades_mi = p - (unidades_mi * 100) LET valor_letras = NULL IF b = 1 THEN LET valor_letras = "UN MILLON" END IF IF b > 1 AND b <= 19 THEN LET valor_letras = valor_letras CLIPPED, " ", unidades1[b] CLIPPED, " ", "MILLONES" END IF IF b >= 20 AND b <= 999999 THEN IF b < 82 THEN LET b = b - 19 LET valor_letras = valor_letras CLIPPED, " ", decenas[b] CLIPPED, " ", "MILLONES" ELSE LET k = b / 100 LET valor_letras = valor_letras CLIPPED, " ", centenas[k] CLIPPED, " ", "MILLONES" END IF END IF LET b = m / 100 IF b > 0 AND b <= 9 THEN IF b = 1 THEN LET valor_letras = valor_letras CLIPPED, " CIEN " ELSE LET valor_letras = valor_letras CLIPPED, " ", centenas[b] CLIPPED END IF IF u > 0 AND u <= 19 THEN IF u = 1 THEN LET unidades1[1] = "UN" END IF LET valor_letras = valor_letras CLIPPED, " ", unidades1[u] CLIPPED END IF LET u = u - 19 # IF u > 0 and u <= 19 THEN # IF u = 1 THEN # LET unidades1[1] = "UN" # END IF # LET valor_letras = valor_letras clipped," ",unidades1[u] clipped # END IF IF u >= 1 AND u < 82 THEN # LET u = u - 19 # adicione este 13/5/2011 La quite el 30/5/2011 LET valor_letras = valor_letras CLIPPED, " ", decenas[u] CLIPPED END IF LET valor_letras = valor_letras CLIPPED, " ", "MIL" END IF IF p > 100 THEN LET p = p / 100 LET valor_letras = valor_letras CLIPPED, " ", centenas[p] CLIPPED END IF LET unidades_mi = unidades_mi - 19 IF unidades_mi > 0 AND unidades_mi <= 81 THEN LET m = unidades_mi LET valor_letras = valor_letras CLIPPED, " ", decenas[m] CLIPPED END IF END IF IF unidad > 0 AND unidad < 20 AND consegui = "N" THEN LET d = unidad LET valor_letras = valor_letras CLIPPED, " ", unidades1[d] CLIPPED END IF IF unidad >= 20 AND d <= 81 AND consegui = "N" THEN LET valor_letras = valor_letras CLIPPED, " ", decenas[d] CLIPPED END IF LET valor_letras = valor_letras CLIPPED, " ", pmoneda CLIPPED, " CON", " ", cheles USING "&&", "/100" END FUNCTION FUNCTION letras() LET unidades1[1] = "UNO" LET unidades1[2] = "DOS" LET unidades1[3] = "TRES" LET unidades1[4] = "CUATRO" LET unidades1[5] = "CINCO" LET unidades1[6] = "SEIS" LET unidades1[7] = "SIETE" LET unidades1[8] = "OCHO" LET unidades1[9] = "NUEVE" LET unidades1[10] = "DIEZ" LET unidades1[11] = "ONCE" LET unidades1[12] = "DOCE" LET unidades1[13] = "TRECE" LET unidades1[14] = "CATORCE" LET unidades1[15] = "QUINCE" LET unidades1[16] = "DIECISEIS" LET unidades1[17] = "DIECISIETE" LET unidades1[18] = "DIECIOCHO" LET unidades1[19] = "DIECINUEVE" LET decenas[1] = "VEINTE" LET decenas[2] = "VEINTE Y UNO" LET decenas[3] = "VEINTE Y DOS" LET decenas[4] = "VEINTE Y TRES" LET decenas[5] = "VEINTE Y CUATRO" LET decenas[6] = "VEINTE Y CINCO" LET decenas[7] = "VEINTE Y SEIS" LET decenas[8] = "VEINTE Y SIETE" LET decenas[9] = "VEINTE Y OCHO" LET decenas[10] = "VEINTE Y NUEVE" LET decenas[11] = "TREINTA" LET decenas[12] = "TREINTA Y UNO" LET decenas[13] = "TREINTA Y DOS" LET decenas[14] = "TREINTA Y TRES" LET decenas[15] = "TREINTA Y CUATRO" LET decenas[16] = "TREINTA Y CINCO" LET decenas[17] = "TREINTA Y SEIS" LET decenas[18] = "TREINTA Y SIETE" LET decenas[19] = "TREINTA Y OCHO" LET decenas[20] = "TREINTA Y NUEVE" LET decenas[21] = "CUARENTA" LET decenas[22] = "CUARENTA Y UNO" LET decenas[23] = "CUARENTA Y DOS" LET decenas[24] = "CUARENTA Y TRES" LET decenas[25] = "CUARENTA Y CUATRO" LET decenas[26] = "CUARENTA Y CINCO" LET decenas[27] = "CUARENTA Y SEIS" LET decenas[28] = "CUARENTA Y SIETE" LET decenas[29] = "CUARENTA Y OCHO" LET decenas[30] = "CUARENTA Y NUEVE" LET decenas[31] = "CINCUENTA" LET decenas[32] = "CINCUENTA Y UNO" LET decenas[33] = "CINCUENTA Y DOS" LET decenas[34] = "CINCUENTA Y TRES" LET decenas[35] = "CINCUENTA Y CUATRO" LET decenas[36] = "CINCUENTA Y CINCO" LET decenas[37] = "CINCUENTA Y SEIS" LET decenas[38] = "CINCUENTA Y SIETE" LET decenas[39] = "CINCUENTA Y OCHO" LET decenas[40] = "CINCUENTA Y NUEVE" LET decenas[41] = "SESENTA" LET decenas[42] = "SESENTA Y UNO" LET decenas[43] = "SESENTA Y DOS" LET decenas[44] = "SESENTA Y TRES" LET decenas[45] = "SESENTA Y CUATRO" LET decenas[46] = "SESENTA Y CINCO" LET decenas[47] = "SESENTA Y SEIS" LET decenas[48] = "SESENTA Y SIETE" LET decenas[49] = "SESENTA Y OCHO" LET decenas[50] = "SESENTA Y NUEVE" LET decenas[51] = "SETENTA" LET decenas[52] = "SETENTA Y UNO" LET decenas[53] = "SETENTA Y DOS" LET decenas[54] = "SETENTA Y TRES" LET decenas[55] = "SETENTA Y CUATRO" LET decenas[56] = "SETENTA Y CINCO" LET decenas[57] = "SETENTA Y SEIS" LET decenas[58] = "SETENTA Y SIETE" LET decenas[59] = "SETENTA Y OCHO" LET decenas[60] = "SETENTA Y NUEVE" LET decenas[61] = "OCHENTA" LET decenas[62] = "OCHENTA Y UNO" LET decenas[63] = "OCHENTA Y DOS" LET decenas[64] = "OCHENTA Y TRES" LET decenas[65] = "OCHENTA Y CUATRO" LET decenas[66] = "OCHENTA Y CINCO" LET decenas[67] = "OCHENTA Y SEIS" LET decenas[68] = "OCHENTA Y SIETE" LET decenas[69] = "OCHENTA Y OCHO" LET decenas[70] = "OCHENTA Y NUEVE" LET decenas[71] = "NOVENTA" LET decenas[72] = "NOVENTA Y UNO" LET decenas[73] = "NOVENTA Y DOS" LET decenas[74] = "NOVENTA Y TRES" LET decenas[75] = "NOVENTA Y CUATRO" LET decenas[76] = "NOVENTA Y CINCO" LET decenas[77] = "NOVENTA Y SEIS" LET decenas[78] = "NOVENTA Y SIETE" LET decenas[79] = "NOVENTA Y OCHO" LET decenas[80] = "NOVENTA Y NUEVE" LET decenas[81] = "CIEN" LET centenas[1] = "CIENTO" LET centenas[2] = "DOCIENTOS" LET centenas[3] = "TRESCIENTOS" LET centenas[4] = "CUATROCIENTOS" LET centenas[5] = "QUINIENTOS" LET centenas[6] = "SEISCIENTOS" LET centenas[7] = "SETECIENTOS" LET centenas[8] = "OCHOCIENTOS" LET centenas[9] = "NOVECIENTOS" END FUNCTION FUNCTION busca_info() SET CONNECTION "MSSQL" SELECT a.nombre INTO nombre_cli FROM vetb00004 a WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND a.sec_cliente = recibo_nc.sec_cliente LET xdireccion = NULL SELECT a.direccion_cliente INTO xdireccion FROM vetb00050 a WHERE a.cotizacion_no = recibo_nc.num_orden SELECT UNIQUE a.nom1_emp, a.nom2_emp, a.apell1_emp INTO nombre1, nombre2, apell FROM adtb00003 a WHERE a.num_emp = recibo_nc.cod_emp_sec LET nombre_ven = nombre1 CLIPPED, " ", nombre2 CLIPPED, " ", apell CLIPPED SELECT a.sucnombre INTO nombre_sucursal FROM sucursales a WHERE a.sucid = codigo_sucursal LET otro_num = NULL SELECT a.num_trans INTO otro_num FROM cctb00020 a WHERE a.num_oc = recibo_nc.num_doc SELECT a.chitbis INTO ch_itbis FROM cctb00011 a WHERE a.tipo_Doc = 'AV' AND a.num_doc = recibo_nc.num_doc LET nombre_cli = nombre_cli CLIPPED, " ", recibo_nc.tipo_cliente USING "<<", "-", recibo_nc.sec_cliente USING "<<<<<<" LET condicionPago = NULL SELECT a.descrip INTO condicionPago FROM vetb00012 a, vetb00050 b WHERE a.cond_pago = b.cond_pago AND b.cotizacion_no = recibo_nc.num_orden SET CONNECTION "IFMX" DISPLAY BY NAME recibo_nc.*, nombre_cli, nombre_ven, ch_itbis DISPLAY codigo_sucursal TO Localidad END FUNCTION FUNCTION procesacliente(xtipo_cliente) DEFINE xtipo_cliente SMALLINT, verdad1 BOOLEAN LET verdad1 = TRUE IF xtipo_cliente = 18 THEN LET verdad1 = FALSE END IF IF xtipo_cliente = 19 THEN LET verdad1 = FALSE END IF RETURN verdad1 END FUNCTION FUNCTION evalua_clientes() DEFINE xnum_req INT, xvalor DEC(12, 2), xfecha CHAR(10), mensaje VARCHAR(100) DECLARE busca_req CURSOR FOR SELECT CONVERT(char(10), b.fecha, 103), a.num_req, SUM(a.valor) FROM cctb00026 a, cctb00025 b WHERE a.cotizacion_no = recibo_nc.num_orden AND a.num_req = b.num_req AND b.estado = "NO AUTORIZADA" AND b.status_t IS NULL GROUP BY b.fecha, a.num_req ORDER BY b.fecha DESC LET idx = 1 FOREACH busca_req INTO xfecha, xnum_req, xvalor IF xvalor IS NOT NULL THEN IF xvalor <= recibo_nc.avance + montos_avance + diferencia THEN { EL RECIBO DE INGRESO NO VA AUTORIZAR NADA FECHA 19-12-2022 UPDATE cctb00025 SET estado = "AUTORIZADA", us_mod = "MBS", fech_mod = getdate() WHERE num_req = xnum_req DISPLAY "CASO CUATRO " LET mensaje ='ESTA REQUISICION FUE AUTORIZADA POR EL RECIBO DE PAGO ',recibo_nc.avance USING "<<<<<<" INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente, sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion, balance,estado,tipo_doc_ref,monto_req,num_recibo,monto_avance,cotizacion_no, descrip_estado,nombrevendedor,num_oc) VALUES (getdate(),'MBS',recibo_nc.cod_emp_sec,recibo_nc.tipo_cliente, recibo_nc.sec_cliente,nombre_cli,xnum_req,'0',valor_cotizado,'0',"AUTORIZADA", "AV",xvalor,recibo_nc.num_doc,recibo_nc.avance,recibo_nc.num_orden,mensaje, nombre_ven,xnum_oc ) LET chmensaje = "NUMERO RECIBO: ",recibo_nc.num_doc USING "<<<<<<" LET subject = "AUROTIZACION REQUISICION DESPACHO COTIZACION: ",recibo_nc.num_orden USING "&&&&&&" } # LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED # LET cuerpo_correo = "VENDEDOR : ",nombre_ven CLIPPED # LET cuerpo_correo = cuerpo_correo CLIPPED," FECHA : ",recibo_nc.fecha USING "DD/MM/YYYY" # LET cuerpo_correo = cuerpo_correo CLIPPED," RECIBO : ",recibo_nc.num_doc USING "&&&&&&" # LET cuerpo_correo = cuerpo_correo CLIPPED," CLIENTE: ",nombre_cli CLIPPED # CALL envia_correo( # 'soporteclientes@marmotech.com.do;cxc@marmotech.com.do', # vendedorEmail, # cuerpo_correo, # subject, # procedimiento) END IF END IF LET idx = idx + 1 END FOREACH IF idx = 1 THEN IF pcondpago = 4 OR pcondpago = 10 THEN CALL autorizacioncontado( recibo_nc.num_orden, valor_cotizado, montos_avance, usuarios, montos_avance, recibo_nc.num_doc, 'AV', nombre_cli) END IF END IF END FUNCTION FUNCTION genera_orden() DEFINE rcod DYNAMIC ARRAY OF INT, xorden DYNAMIC ARRAY OF VARCHAR(10) DECLARE busca_cot CURSOR FOR SELECT DISTINCT a.cod_n, b.genera_orden FROM vetb00051 a, iptb00020 b WHERE a.cotizacion_no = recibo_nc.num_orden AND a.cod_n = b.cod_n LET idx = 1 LET xestado = 'S' FOREACH busca_cot INTO rcod[idx], xorden[idx] IF xorden[idx] = "NO" THEN LET xestado = 'N' EXIT FOREACH END IF LET idx = idx + 1 END FOREACH END FUNCTION REPORT cctb01b( p_tipo_cliente, p_sec_cliente, p_fecha_orig, p_num_doc, p_cod_emp_sec, p_tipo_doc, p_cuenta_no, p_banco, p_aplica_a, p_monto_desc, p_valor, p_nombre, p_nomb_emp, p_nombre_cta, p_comentario) DEFINE p_tipo_cliente LIKE cctb00001.tipo_cliente, p_sec_cliente LIKE cctb00001.sec_cliente, p_fecha_orig LIKE cctb00001.fecha_orig, p_num_doc LIKE cctb00001.num_doc, p_cod_emp_sec LIKE cctb00001.cod_emp_sec, p_tipo_doc LIKE cctb00001.tipo_doc, p_cuenta_no LIKE cctb00001.cuenta_no, p_banco LIKE cctb00001.banco, p_aplica_a LIKE cctb00001.aplica_a, p_monto_desc LIKE cctb00001.monto_desc, p_valor LIKE cctb00001.valor, p_nomb_emp CHAR(40), p_nombre_cta CHAR(30), pitbis DEC(12, 2), labelcliente STRING DEFINE hora CHAR(5), p_nombre LIKE vetb00004.nombre, p_comentario CHAR(120), #LIKE cctb00011.comentario, descuento, total_monto, ditbis DEC(12, 2), tipodocumento VARCHAR(50) ORDER BY p_sec_cliente FORMAT PAGE HEADER LET hora = TIME IF p_tipo_doc = 'AV' OR p_tipo_doc = 'PG' THEN LET tipodocumento = 'RECIBO DE INGRESOS' LET labelcliente = "HEMOS RECIBIDO DE " LET p_nombre_tipo = 'AVANCE A COTIZACION' ELSE LET tipodocumento = 'DOCUMENTO CUENTAS POR COBRAR' LET labelcliente = "CLIENTE: " END IF BEFORE GROUP OF p_sec_cliente SELECT a.itbi INTO pitbis FROM vetb00019 a WHERE a.disponible = "S" IF pitbis IS NULL THEN LET pitbis = 0 END IF PRINTX nombre_sucursal, p_cuenta_no, p_nombre_cta, p_banco, p_nombre, p_tipo_cliente, p_sec_cliente, p_cod_emp_sec, p_nomb_emp, p_tipo_doc, p_nombre_tipo, tipodocumento, hora, p_companias.nombre, p_num_doc, p_companias.rnc, p_companias.direccion, p_fecha_orig, p_companias.telefono, p_companias.fax, fecha_proximo, labelcliente, nombre_sucursal, condicionPago, xdireccion ON EVERY ROW PRINTX p_aplica_a, p_monto_desc, p_valor, ditbis, p_valor AFTER GROUP OF p_sec_cliente # BUSCA TIPO DE VENTAS SELECT a.simbolo, a.descripcion_moneda INTO psimbolo, pmoneda FROM vetb00061 a, vetb00060 b WHERE a.ventas = b.ventas AND b.tipo_cliente = p_tipo_cliente LET descuento = GROUP SUM(p_monto_desc) LET total_monto = GROUP SUM(p_valor) LET valor_orig = total_monto LET valor_letras = NULL CALL convierte() PRINTX descuento, total_monto, valor_letras, psimbolo ON LAST ROW PRINTX p_comentario END REPORT FUNCTION verifica_orden() LET tieneorden = TRUE SELECT a.num_oc FROM prtb00012 a WHERE a.cotizacion_no = recibo_nc.num_orden AND a.status_T IS NULL IF STATUS = NOTFOUND THEN LET tieneorden = FALSE END IF END FUNCTION