1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498 |
- CREATE OR REPLACE PACKAGE BODY NAF47.PKG_FACT_NAF AS
- /******************************************************************************
- NAME: PKG_FACT_NAF
- PURPOSE:
- REVISIONS:
- Ver Date Author Description
- --------- ---------- --------------- ------------------------------------
- 1.0 25/05/2016 etajanel 1. Created this package body.
- ******************************************************************************/
- FUNCTION ULTIMO_TIPOCAMBIO(Pmoneda varchar2) RETURN NUMBER IS
- val_tc number;
- BEGIN
- select tipo_cambio_venta
- into val_tc
- from arcgtc
- where clase_cambio=Pmoneda
- and fecha= (select max(fecha)
- from arcgtc
- where clase_cambio=Pmoneda);
- return(val_tc);
- END;
-
- FUNCTION SIGUENTE_CORRELATIVO(PCIA NUMBER,popcion VARCHAR2) RETURN NUMBER IS
- val_correlativo number;
- BEGIN
- SELECT TO_NUMBER(VALOR) + 1
- INTO val_correlativo
- FROM PARAMETROS_VARIOS
- WHERE MODULO='FA'
- AND PANTALLA='SSO_FDIN'
- AND OPCION=popcion
- AND TO_NUMBER(CIA)=PCIA;
-
- UPDATE PARAMETROS_VARIOS SET VALOR = TO_CHAR(val_correlativo)
- WHERE MODULO='FA'
- AND PANTALLA='SSO_FDIN'
- AND OPCION=popcion
- AND TO_NUMBER(CIA)=PCIA;
- RETURN(val_correlativo);
- END;
-
-
- FUNCTION DIFERENCIAL(pcia number, -- Codigo de la compañia
- pcliente number, -- Codigo del cliente
- pInstalacion number, -- numero de enlace
- pnotransaccion number, --numero de orden de trabajo del enlace
- pValorAct number, -- valor de la nueva transaccion sobre el enlace
- pCodMoneda VARCHAR2 -- moneda de la nueva transaccion del enlace
- ) RETURN NUMBER IS
- CURSOR CUR_TRAN IS
- SELECT vmensual,codmoneda,DECODE(pcia,1,'01') cod_mondeda
- from sso_fdin
- where codempresa = pcia
- and codcliente=pcliente
- and instalacion=pinstalacion
- and notransaccion=pnotransaccion
- and activo='S'
- and tiposervicio='ENL'
- and fecha=(select max(fecha)
- from sso_fdin
- where codempresa = pcia
- and codcliente=pcliente
- and instalacion=pinstalacion
- and notransaccion=pnotransaccion
- and activo='S'
- and tiposervicio='ENL'
- );
-
- nValorAnt number;
- nCodmonedaAnt varchar2(4);
- nvalorTC number;
- dfecha_tc date;
- cCodMoneda_tc varchar2(4);
- nVal_direrencial number;
-
- BEGIN
- OPEN CUR_TRAN;
- FETCH CUR_TRAN INTO nValorAnt, nCodmonedaAnt,cCodMoneda_tc;
- CLOSE CUR_TRAN;
- IF ncodmonedaAnt != pCodMoneda THEN -- La moneda de la transaccion anterior es diferente a la moneda de la nueva transaccion
- nvalorTC := Tipo_cambio( cCodMoneda_tc, sysdate, dfecha_tc, 'C'); -- se obtiene el tipo de cambio del sistema NAF
- IF nCodmonedaAnt='USD' THEN -- La moneda anterior es dolares y la nueva moneda es local
- nVal_direrencial := NVL(pValorAct,0) - NVL((nValorAnt * nvalorTC),0);
- ELSE -- La moneda anterior es local y la nueva es dolares
- nVal_direrencial := NVL(pValorAct,0) - NVL((nValorAnt / nvalorTC),0);
- END IF;
- ELSE
- -- La moneda del servicio anterior es igual a la moneda de la nueva transaccion
- nVal_direrencial := NVL(pValorAct,0) - NVL(nValorAnt,0);
- END IF;
-
- IF nVal_direrencial < 0 THEN
- nVal_direrencial := 0;
- END IF;
-
- nVal_direrencial :=round(nVal_direrencial,2);
- --return nValorAnt;
- return nVal_direrencial;
- --RETURN nValorAnt;
- END;
-
- FUNCTION Existe_Cliente(pNO_CIA IN NUMBER,
- pNO_CLIENTE IN VARCHAR2,
- pNit VARCHAR2,
- pNOMBRE VARCHAR2) RETURN BOOLEAN IS
- v_cliente arccmc.no_cliente%type;
- BEGIN
- BEGIN
- SELECT no_cliente -- Busco el cliente por el codigo de siebel
- into v_cliente
- FROM ARCCMC
- WHERE TO_NUMBER(NO_CIA)=pNO_CIA
- AND NO_CLIENTE_SIEBEL =pNO_CLIENTE;
- EXCEPTION WHEN
- NO_DATA_FOUND THEN
- BEGIN
- SELECT no_cliente -- Busco el cliente por el nit
- into v_cliente
- FROM ARCCMC
- WHERE TO_NUMBER(NO_CIA)=pNO_CIA
- AND CEDULA = replace(substr(trim(pNIT),1,length(trim(pNIT))-1)||'-'||substr(trim(pNIT),length(trim(pNIT)),1),'--','-');
- EXCEPTION WHEN
- NO_DATA_FOUND THEN
- BEGIN
- SELECT no_cliente -- Busco el cliente por el nombre
- into v_cliente
- FROM ARCCMC
- WHERE TO_NUMBER(NO_CIA)=pNO_CIA
- AND NOMBRE =pnombre;
- EXCEPTION WHEN
- NO_DATA_FOUND THEN RETURN FALSE; -- EL CLIENTE NO EXISTE
- END;
- END;
- END;
- RETURN TRUE; -- EL CLIENTE SI EXISTE
- END;
-
- FUNCTION GET_MSG_DESCRIPTION(ID_RESULTADO IN NUMBER) RETURN VARCHAR2 IS
- --V_desc MSG_PKG_FACT_NAF.desc_msg%type;
- V_desc VARCHAR2(1000);
- BEGIN
- BEGIN
- SELECT desc_msg
- into v_Desc
- from MSG_PKG_FACT_NAF
- where id_msg=ID_RESULTADO;
- EXCEPTION WHEN NO_DATA_FOUND THEN
- V_desc:='Descripción no esta en la tabla de mensajes';
- END;
- RETURN v_Desc;
- END;
-
- PROCEDURE CREAR_CLIENTE(pNO_CIA IN VARCHAR2,
- pCOD_CLIENTE_SIEBEL IN VARCHAR2,
- pGRUPO IN VARCHAR2,
- pTIPO_CLIENTE IN VARCHAR2,
- pNOMBRE IN VARCHAR2,
- pNOMBRE_COMERCIAL IN VARCHAR2,
- pDIRECCION IN VARCHAR2,
- pFecha_Ingre IN DATE,
- pExcento_Imp IN VARCHAR2,
- pMONEDA_LIMITE IN VARCHAR2,
- pTELEFONO IN VARCHAR2,
- pPLAZO IN Number,
- pCedula IN VARCHAR2,
- pCLIENTE_NACIONAL IN VARCHAR2,
- pIND_ACEPTA_RETENCION IN VARCHAR2,
- pEXENTO_IVA IN VARCHAR2,
- pTipoPrecio IN VARCHAR2,
- pCentro IN VARCHAR2,
- pBALANCEFACTURA VARCHAR2,
- pNOMBRE_FISCAL VARCHAR2,
- PDIRECCION_FACTURA VARCHAR2,
- pFac_ANTICIPADO VARCHAR2,
- pCOD_CLIENTE_NAF IN OUT NUMBER,
- id_resultado IN OUT NUMBER,
- Desc_resultado IN OUT VARCHAR2) IS
- TmpVar NUMBER;
- BEGIN
- id_resultado := 0;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- IF Existe_Cliente(pNO_CIA,pCOD_CLIENTE_SIEBEL,pCedula,pNOMBRE) THEN
- id_resultado:=2;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- ELSE
- BEGIN
- SELECT NVL(MAX(to_number(NO_CLIENTE)),0) + 1
- INTO pCOD_CLIENTE_NAF
- FROM ARCCMC
- WHERE to_number(NO_CIA)=to_number(pNO_CIA);
- INSERT INTO ARCCMC(NO_CIA,NO_CLIENTE,GRUPO,TIPO_CLIENTE,NOMBRE,NOMBRE_COMERCIAL,DIRECCION,Fecha_Ingre,
- Excento_Imp,MONEDA_LIMITE,TELEFONO,PLAZO,Cedula,CLIENTE_NACIONAL,IND_ACEPTA_RETENCION,EXENTO_IVA,
- TIPOPRECIO,CENTRO,BALANCEFACTURA,NO_CLIENTE_SIEBEL,NOMBRE_LARGO)
- VALUES(pNO_CIA,pCOD_CLIENTE_NAF,/*pGRUPO*/'01',pTIPO_CLIENTE,pNOMBRE,pNOMBRE_COMERCIAL,pDIRECCION,pFecha_Ingre,
- pExcento_Imp,pMONEDA_LIMITE,pTELEFONO,pPLAZO,pCedula,pCLIENTE_NACIONAL,pIND_ACEPTA_RETENCION,pEXENTO_IVA,
- pTipoPrecio,pCentro,pBALANCEFACTURA,pCOD_CLIENTE_SIEBEL,pNOMBRE);
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN
- id_resultado := 2; -- Operación Fallida, Código de Cliente duplicado
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||'('||pCOD_CLIENTE_NAF||')';
- WHEN OTHERS THEN
- id_resultado := 3; -- Operación Fallida, Error al insertar en ARCCMC
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- END;
- -- Crea de una vez grupo de facturacion 1
- ASIGNAR_GRUPOFAC(pNO_CIA, pCOD_CLIENTE_NAF,USER,pNOMBRE_FISCAL ,replace(PDIRECCION_FACTURA,',,',','));
-
- COMMIT;
- END IF;
- END;
-
- FUNCTION Existe_Cliente_Activo(pNO_CIA IN NUMBER,
- pNO_CLIENTE IN NUMBER
- ) RETURN NUMBER IS
- CURSOR CUR_CLI IS -- Para validar que exista el cliente
- SELECT no_cliente
- from arccmc
- WHERE TO_NUMBER(no_cia)=pNO_CIA
- and TO_NUMBER(no_cliente)=pNO_CLIENTE
- and F_CIERRE IS NULL;
- V_NO_CLIENTE ARCCMC.NO_CLIENTE%TYPE;
- BEGIN
- OPEN CUR_CLI;
- FETCH CUR_CLI into V_NO_CLIENTE;
- IF CUR_CLI%FOUND THEN
- CLOSE CUR_CLI;
- RETURN V_NO_CLIENTE;
- ELSE
- CLOSE CUR_CLI;
- RETURN 0;
- END IF;
- END;
-
-
- PROCEDURE ACTUALIZAR_CLIENTE(pNO_CIA IN VARCHAR2,
- pCOD_CLIENTE IN VARCHAR2,
- pNOMBRE IN VARCHAR2,
- pNOMBRE_COMERCIAL IN VARCHAR2,
- pDIRECCION IN VARCHAR2,
- pExcento_Imp IN VARCHAR2,
- pMONEDA_LIMITE IN VARCHAR2,
- pTELEFONO IN VARCHAR2,
- pPLAZO IN Number,
- pCedula IN VARCHAR2,
- pCLIENTE_NACIONAL IN VARCHAR2,
- pIND_ACEPTA_RETENCION IN VARCHAR2,
- pEXENTO_IVA IN VARCHAR2,
- pNOMBRE_FISCAL VARCHAR2,
- PDIRECCION_FACTURA VARCHAR2,
- pFac_ANTICIPADO VARCHAR2,
- id_resultado IN OUT NUMBER,
- Desc_resultado IN OUT VARCHAR2) IS
-
- BEGIN
- id_resultado := 0; -- Resultado exitoso
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- IF Existe_Cliente_ACTIVO(pNO_CIA,pCOD_CLIENTE)=TO_NUMBER(pCOD_CLIENTE) THEN
- UPDATE arccmc set NOMBRE =NVL(pNOMBRE,NOMBRE),
- NOMBRE_COMERCIAL =NVL(pNOMBRE_COMERCIAL,NOMBRE_COMERCIAL),
- NOMBRE_LARGO =NVL(pNOMBRE,NOMBRE),
- DIRECCION =NVL(pDIRECCION,DIRECCION),
- Excento_Imp =NVL(pExcento_Imp,Excento_Imp),
- MONEDA_LIMITE =NVL(pMONEDA_LIMITE,MONEDA_LIMITE),
- TELEFONO =NVL(pTELEFONO,Telefono),
- PLAZO =NVL(pPLAZO,PLAZO),
- Cedula =pCedula,
- CLIENTE_NACIONAL =NVL(pCLIENTE_NACIONAL,CLIENTE_NACIONAL),
- IND_ACEPTA_RETENCION=NVL(pIND_ACEPTA_RETENCION,IND_ACEPTA_RETENCION),
- EXENTO_IVA =NVL(pEXENTO_IVA,EXENTO_IVA)
- WHERE NO_CIA=pNO_CIA
- AND NO_CLIENTE=pCOD_CLIENTE;
-
- -- ACTUALIZA TODOS LOS GRUPOS DE FACTURACION
- UPDATE sso_fgcf SET NOMBRECLIENTE=pNOMBRE_FISCAL,
- DIRECCION=replace(PDIRECCION_FACTURA,',,',','), -- de una vez le quito dos comas juntos cuando vienen
- NIT=replace(substr(trim(pCedula),1,length(trim(pCedula))-1)||'-'||substr(trim(pCedula),length(trim(pCedula)),1),'--','-')
- where codempresa=pNO_CIA
- and cod_cliente=pCOD_CLIENTE;
-
- COMMIT;
-
- ELSE
- id_resultado := 4; -- El cliente no existe.
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- END IF;
- END;
-
- PROCEDURE BAJA_CLIENTE(pNO_CIA IN VARCHAR2,
- pNO_CLIENTE IN VARCHAR2,
- pFECHA_BAJA date,
- pMOTIVO VARCHAR2,
- id_resultado IN OUT NUMBER,
- Desc_resultado IN OUT VARCHAR2) IS
- BEGIN
- id_resultado := 0; -- Resultado exitoso
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- UPDATE arccmc set F_CIERRE=pFECHA_BAJA,
- MOTIVO=pMotivo
- WHERE NO_CIA = pNO_CIA
- AND NO_CLIENTE= pNO_CLIENTE;
-
- COMMIT;
-
- END;
-
- PROCEDURE ASIGNAR_GRUPOFAC(pcia number, pcliente number, pUSUARIO_INGRESO VARCHAR2,
- pNOMBRE_FISCAL VARCHAR2,PDIRECCION_FACTURA VARCHAR2) is
- BEGIN
- BEGIN
- insert into sso_fgcf(CODEMPRESA,
- COD_CLIENTE,
- GRUPOFACTURA,
- NOMBREGRUPO,
- NOMBRECLIENTE,
- DIRECCION,
- NIT,
- TELEFONO,
- ENCABEZADOGRUPO,
- TIPODETALLE,
- PIEDETALLE,
- CICLO,
- EJECUTIVO,
- TIPOCLIENTE,
- GRUPOCONTABLE,
- ACTIVO,
- LEYENDA,
- MONEDA_IMPRESION)
- select no_cia,
- no_cliente,
- 1, -- grupofactura
- 1, -- nombre grupo
- pNOMBRE_FISCAL,
- PDIRECCION_FACTURA,
- cedula,
- telefono,
- 'Cobro por servicios correspondientes al mes de <%1>', --ENCABEZADOGRUPO
- 0, --TIPODETALLE
- null, --PIEDETALLE
- 17, -- ciclo
- substr(pUSUARIO_INGRESO,1,20), -- Ejecutivo
- DECODE(CLIENTE_NACIONAL,'S','L','I'), -- tipocliente(ESTA CLASIFICACION ES UNICAMENTE L/I)
- GRUPO, --grupocontable
- 'S', -- activo
- 'S', -- leyenda
- moneda_limite
- from arccmc
- where to_number(no_cliente)=pcliente
- and to_number(no_cia)=pcia
- and not exists( select * -- crea el grupo de facturacion 1, solamente si no existe para ese cliente
- from sso_fgcf
- where cod_cliente=pcliente
- and codempresa=pcia
- and grupofactura=1);
- exception when others then
- null;
- END;
- END;
-
- PROCEDURE GENERA_COBRO_INS(pCODEMPRESA NUMBER,
- pCODCLIENTE NUMBER,
- pINSTALACION_NAF NUMBER,
- pNOTRANSACCION_NAF NUMBER,
- pTIPOSERVICIO VARCHAR2,
- pVINSTALACION NUMBER) IS
- BEGIN
- INSERT INTO SSO_FDIN(
- CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,CODMONEDA,
- ORDEN,DESCRIPCION,CANTIDAD,VINSTALACION,NOCUOTAS,TOTALCUOTAS,VMENSUAL,VACUMULADO,TIPOFACTURACION,FECHA,
- FACTURA,PRODUCTO,COD_CATEGORIA,PROXIMAFACTURA,CICLOFACTURACION,PERIODICIDAD,USUARIO_INGRESO,FECHA_INGRESO,OBSERVACIONES,FINFACTURACION,
- CODPRODUCTO,CODANCHOBANDA,NO_FACTU,CENTRO,BODEGA,SUBCLIENTE,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,GEOGRAFIA_PUNTO_FIN,
- GENERA_COMISION,NO_VENDEDOR,PRODUCTO_INI,PRODUCTO_FIN,ALTA_FACTURACION,FECHA_IMPRESION,PREFACTURADO,ACTIVO,FECHA_BAJA,PUNTO_INICIO,
- PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,MOTIVO_BAJA,OBSERVACIONES_ADMINISTRATIVAS,OBSERVACIONES_TECNICAS,ENCARGADO_CARTERA,ENCARGADO_BAJA,PERIODO_INICIO,FECHA_INICIO_FACTURACION,
- FECHA_AUTORIZACION_FACTURACION,HAY_DIFERENCIAL,FECHA_PREAUTORIZACION,FECHA_AUTORIZA_BAJA,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,CODCLIENTE_PADRE,CODEMPRESA_PADRE,
- ES_SPLIT)
- SELECT
- CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,'INS',GRUPOFACTURA,CODTRANSACCION,CODMONEDA,
- ORDEN,DESCRIPCION,CANTIDAD,pVINSTALACION,NOCUOTAS,TOTALCUOTAS,pVINSTALACION,VACUMULADO,TIPOFACTURACION,FECHA,
- FACTURA,PRODUCTO,COD_CATEGORIA,PROXIMAFACTURA,CICLOFACTURACION,PERIODICIDAD,USUARIO_INGRESO,FECHA_INGRESO,OBSERVACIONES,FINFACTURACION,
- CODPRODUCTO,CODANCHOBANDA,NO_FACTU,CENTRO,BODEGA,SUBCLIENTE,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,GEOGRAFIA_PUNTO_FIN,
- GENERA_COMISION,NO_VENDEDOR,PRODUCTO_INI,PRODUCTO_FIN,ALTA_FACTURACION,FECHA_IMPRESION,PREFACTURADO,ACTIVO,FECHA_BAJA,PUNTO_INICIO,
- PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,MOTIVO_BAJA,OBSERVACIONES_ADMINISTRATIVAS,OBSERVACIONES_TECNICAS,ENCARGADO_CARTERA,ENCARGADO_BAJA,PERIODO_INICIO,FECHA_INICIO_FACTURACION,
- FECHA_AUTORIZACION_FACTURACION,HAY_DIFERENCIAL,FECHA_PREAUTORIZACION,FECHA_AUTORIZA_BAJA,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,CODCLIENTE_PADRE,CODEMPRESA_PADRE,
- ES_SPLIT
- FROM SSO_FDIN
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION_NAF
- AND NOTRANSACCION=pNOTRANSACCION_NAF
- AND TIPOSERVICIO=pTIPOSERVICIO
- AND ACTIVO='S';
- exception when no_data_found then
- null;
- END;
- FUNCTION OBTENER_CODANCHOBANDA(pCODEMPRESA NUMBER,
- pCODPRODUCTO VARCHAR2,
- pANCHO_BANDA VARCHAR2) RETURN varchar2 IS
- CURSOR CUR_AB IS
- select CODANCHOBANDA
- from ctl_anchobanda
- where codempresa=pCODEMPRESA
- and codproducto=pCODPRODUCTO
- and UPPER(descripcion)=UPPER(pANCHO_BANDA);
-
- v_codanchobanda ctl_anchobanda.codanchobanda%type;
- BEGIN
- OPEN CUR_AB;
- FETCH CUR_AB into v_codanchobanda;
- IF CUR_AB%NOTFOUND THEN
- select nvl(max(to_number(CODANCHOBANDA)),0)+1
- into v_codanchobanda
- from ctl_anchobanda
- where codempresa=pCODEMPRESA
- AND TRIM(TRANSLATE(CODANCHOBANDA,'0123456789', ' ')) IS NULL
- and codproducto=pCODPRODUCTO;
-
- insert into ctl_anchobanda(CODEMPRESA,CODPRODUCTO,CODANCHOBANDA,DESCRIPCION,PRODCODE,ABCODE,ACTIVO,CATEGORIA,PESO)
- values(pCODEMPRESA,pCODPRODUCTO,v_codanchobanda,pANCHO_BANDA,0,0,'S',0,0);
- END IF;
- CLOSE CUR_AB;
- RETURN v_codanchobanda;
- END;
- FUNCTION VALIDA_CAMBIO_PRECIO(pCODEMPRESA NUMBER,pEnlace number,pNoTransaccion number,pCODCLIENTE NUMBER,pTIPOSERVICIO varchar2,pPROXIMAFACTURA DATE) RETURN NUMBER IS
- v_resultado NUMBER;
- CURSOR CUR_FPROXIMA_FAC IS
- SELECT PROXIMAFACTURA
- FROM SSO_FDIN
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pEnlace
- AND NOTRANSACCION=pNOTRANSACCION
- AND TIPOSERVICIO=pTIPOSERVICIO
- AND ACTIVO='S';
- V_PROXIMAFAC_ACTUAL DATE;
- BEGIN
- select count(*)
- into v_resultado
- from sso_fdin
- where codempresa=pCODEMPRESA
- and CODCLIENTE=pCODCLIENTE
- and instalacion=pEnlace
- and notransaccion=pNoTransaccion
- and prefacturado='S'
- and activo='S';
- IF NVL(v_resultado,0) > 0 THEN
- RETURN(14); --'Operación Fallida, El enlace tiene una prefactura generada, debe reversar o generar la factura previo a esta transacción...'
- END IF;
- OPEN CUR_FPROXIMA_FAC;
- FETCH CUR_FPROXIMA_FAC into V_PROXIMAFAC_ACTUAL;
- IF CUR_FPROXIMA_FAC%FOUND THEN
- IF TO_CHAR(V_PROXIMAFAC_ACTUAL,'DD/MM/YYYY') <> TO_CHAR(pPROXIMAFACTURA,'DD/MM/YYYY') THEN
- --CLOSE CUR_FPROXIMA_FAC;
- --RETURN(15);
- null; -- se quito la validacion de la fecha en cambio de precio
- END IF;
- ELSE
- CLOSE CUR_FPROXIMA_FAC;
- RETURN(7);
- END IF;
- CLOSE CUR_FPROXIMA_FAC;
- RETURN(0);
- END;
- PROCEDURE REGISTRO_DE_RESPUESTA(Pid_resultado NUMBER,PDesc_resultado VARCHAR2,PCorrelativo_hist NUMBER) IS
- BEGIN
- update arfa_hist_param set id_resultado=Pid_resultado,
- --desc_resultado=PDesc_resultado
- desc_resultado=desc_resultado||' - '||PDesc_resultado||' - hora fin:'||to_char(sysdate,'dd/mm/yyyy hh24:mi:ss')
- where correlativo=PCorrelativo_hist;
- END;
-
- PROCEDURE REGISTRO_DE_TRANSACCION(pCODEMPRESA NUMBER,
- pCODCLIENTE NUMBER,
- pCONTRATO NUMBER,
- pANEXO NUMBER,
- pINSTALACION_SIEBEL VARCHAR2,
- pNOTRANSACCION_SIEBEL VARCHAR2,
- pTIPOSERVICIO VARCHAR2,
- pCODTRANSACCION VARCHAR2,
- pCODMONEDA VARCHAR2,
- pDESCRIPCION VARCHAR2,
- pCANTIDAD NUMBER,
- pVINSTALACION NUMBER,
- pVMENSUAL NUMBER,
- pFECHA DATE,
- pProducto Varchar2,
- pPROXIMAFACTURA DATE,
- pUSUARIO_INGRESO VARCHAR2,
- pFECHA_INGRESO DATE,
- pCODPRODUCTO VARCHAR2,
- pCODANCHOBANDA VARCHAR2,
- pCENTRO VARCHAR2,
- pBODEGA VARCHAR2,
- pANCHO_BANDA VARCHAR2,
- pGEOGRAFIA_VENTA VARCHAR2,
- pGEOGRAFIA_PUNTO_INI VARCHAR2,
- pGEOGRAFIA_PUNTO_FIN VARCHAR2,
- pACTIVO VARCHAR2,
- pPUNTO_INICIO VARCHAR2,
- pPUNTO_FINAL VARCHAR2,
- pPAIS_INICIAL VARCHAR2,
- pPAIS_FINAL VARCHAR2,
- pPERIODO_INICIO NUMBER,
- pSPLIT VARCHAR2, -- P=padre, H=hijo, N= no aplica
- pINSTALACION_PADRE IN NUMBER, -- Numero de instalacion del padre cuando es split
- pNOTRANSACCION_PADRE IN NUMBER, --Numero de transaccion del padre cuando es split
- pCODEMPRESA_PADRE NUMBER, -- Codigo de empresa del padre cuand es split
- pCODCLIENTE_PADRE NUMBER, -- Codigo del cliente padre cuando es split
- pCODEMPRESA_NUEVA NUMBER, -- Nueva Empresa para la transaccion de cambio de cliente 'CC=cambio de cliente a enlace'
- pCODCLIENTE_NUEVO NUMBER, -- Nuevo cliente para la transaccion de cambio de cliente 'CC=cambio de cliente a enlace'
- pINSTALACION_NAF IN OUT NUMBER,
- pNOTRANSACCION_NAF IN OUT NUMBER,
- pId_BUNDLE VARCHAR2,
- pAplicaDesc varchar2,
- id_resultado IN OUT NUMBER,
- Desc_resultado IN OUT VARCHAR2,
- pFecha_ini_fac in out date,
- pIdSolucion Varchar2 Default Null) IS
-
- ndias_prop number;
- --nMonto_Prop number;
- dfecha_facturacion date;
- vCliente number;
- V_diferencial number;
-
- CURSOR cur_cli is
- SELECT NO_CLIENTE
- FROM ARCCMC
- WHERE TO_NUMBER(NO_CIA)=pCODEMPRESA
- AND TO_NUMBER(NO_CLIENTE)=pCODCLIENTE;
-
- CURSOR cur_grupo_cli is
- SELECT grupo
- FROM ARCCMC
- WHERE TO_NUMBER(NO_CIA)=pCODEMPRESA
- AND TO_NUMBER(NO_CLIENTE)=pCODCLIENTE;
-
-
- CURSOR CUR_ENL IS
- SELECT INSTALACION
- FROM SSO_FDIN
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION_SIEBEL=pINSTALACION_SIEBEL
- AND NOTRANSACCION_SIEBEL=pNOTRANSACCION_SIEBEL
- AND TIPOSERVICIO=pTIPOSERVICIO;
- --INICIO MODIFICACION 2019/01/24 MMONTENEGROP, SE AGREGA MONEDA Y VMENSUAL
- CURSOR CUR_FPROXIMA_FAC IS
- SELECT PROXIMAFACTURA,DESCRIPCION,ANCHO_BANDA, CODMONEDA, VMENSUAL,fecha_ini_fac
- FROM SSO_FDIN
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION_NAF
- AND NOTRANSACCION=pNOTRANSACCION_NAF
- AND TIPOSERVICIO=pTIPOSERVICIO
- AND ACTIVO=DECODE(pCODTRANSACCION,'REA','N','S');
- --FINAL DE MODIFICACION 2019/01/24
- CURSOR CUR_PRODUCTO IS
- SELECT DESCRIPCION
- FROM CTL_PRODUCTO
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODPRODUCTO=PCODPRODUCTO
- AND ACTIVO='S';
- venlace number:=0;
- NOTRANSACCION_BAJA NUMBER;
- vGrupo_Fac number;
- v_monto_mensual number;
- v_monto_mensual_ins number;
- V_FECHA_PROXIMAF DATE;
- V_FECHA_ACTUAL DATE;
- v_descpricion_fact sso_fdin.descripcion%type;
- v_descri_producto ctl_producto.descripcion%type;
- V_ANCHO_BANDA sso_fdin.ancho_banda%type;
- v_codanchobanda sso_fdin.codanchobanda%type;
- v_Correlativo_hist number;
- vEXISTE_INS_PENDIENTE_COBRO NUMBER;
- pFechaProp DATE;
- pFechaEnlace DATE;
- --Modificacion 2019/01/24 mmontenegrop, se agregan 2 variables para precio y moneda de reactivacion (ultima facturacion)
- v_precio_rea number;
- v_moneda_rea varchar2(5);
- --Fin modificacion 2019/01/24
-
- V_PRODUCTO_CONTABLE SSO_FCTA.TIPOPRODUCTO%TYPE;
- v_grupo arccmc.grupo%type;
- BEGIN
- v_Correlativo_hist:=SEC_HIST_PARAM_FA.NEXTVAL;
- BEGIN
- INSERT INTO ARFA_HIST_PARAM
- (Correlativo,CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,TIPOSERVICIO,CODTRANSACCION,CODMONEDA,
- DESCRIPCION,CANTIDAD,VINSTALACION,VMENSUAL,FECHA,Producto,PROXIMAFACTURA,USUARIO_INGRESO,FECHA_INGRESO,CODPRODUCTO,
- CODANCHOBANDA,CENTRO,BODEGA,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,GEOGRAFIA_PUNTO_FIN,ACTIVO,PUNTO_INICIO,PUNTO_FINAL,
- PAIS_INICIAL,PAIS_FINAL,PERIODO_INICIO,SPLIT,INSTALACION_PADRE,NOTRANSACCION_PADRE,CODEMPRESA_PADRE,CODCLIENTE_PADRE,CODEMPRESA_NUEVA,CODCLIENTE_NUEVO,
- INSTALACION_NAF,NOTRANSACCION_NAF,id_resultado,Desc_resultado,Id_BUNDLE,AplicaDesc)
- VALUES(v_Correlativo_hist,pCODEMPRESA,pCODCLIENTE,pCONTRATO,pANEXO,pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,pTIPOSERVICIO,pCODTRANSACCION,pCODMONEDA,pDESCRIPCION,
- pCANTIDAD,pVINSTALACION,pVMENSUAL,pFECHA,pProducto,pPROXIMAFACTURA,pUSUARIO_INGRESO,pFECHA_INGRESO,pCODPRODUCTO,pCODANCHOBANDA,
- pCENTRO,pBODEGA,pANCHO_BANDA,pGEOGRAFIA_VENTA,pGEOGRAFIA_PUNTO_INI,pGEOGRAFIA_PUNTO_FIN,pACTIVO,pPUNTO_INICIO,pPUNTO_FINAL,pPAIS_INICIAL,
- pPAIS_FINAL,pPERIODO_INICIO,pSPLIT,pINSTALACION_PADRE,pNOTRANSACCION_PADRE,pCODEMPRESA_PADRE,pCODCLIENTE_PADRE,pCODEMPRESA_NUEVA,pCODCLIENTE_NUEVO,pINSTALACION_NAF,
- pNOTRANSACCION_NAF,id_resultado,Desc_resultado||'Hora ini:'||to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'),pId_BUNDLE,pAplicaDesc);
- EXCEPTION WHEN OTHERS THEN
- NULL;
- END;
- commit;
-
- IF NVL(pINSTALACION_NAF,0) = 0 THEN
- id_resultado := 9; --Operación Fallida, El numero de enlace no puede ser nulo...
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- GOTO FINALIZAR_TRANSACCION;
- END IF;
- IF NVL(pCODPRODUCTO,'x') = 'x' THEN
- id_resultado := 10; --Operación Fallida, El código de producto no puede ser nulo...
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- GOTO FINALIZAR_TRANSACCION;
- END IF;
- IF Existe_Cliente_Activo(pCODEMPRESA_NUEVA,pCODCLIENTE_NUEVO)=0 AND pCODTRANSACCION = 'CC' THEN -- VALIDA QUE EXISTA EL CLIENTE DESTINO EN CC(Sesion y traspaso)
- id_resultado:=12;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||' ( empresa:'||pCODEMPRESA_NUEVA||' , Cliente:'||pCODCLIENTE_NUEVO||' )';
- GOTO FINALIZAR_TRANSACCION;
- END IF;
- IF NVL(pVMENSUAL,0) <= 0 THEN
- id_resultado := 13; --Operación Fallida, El precio debe ser mayor a cero...
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- GOTO FINALIZAR_TRANSACCION;
- END IF;
- IF pCODTRANSACCION = 'CP' THEN
- id_resultado:=VALIDA_CAMBIO_PRECIO(pCODEMPRESA,pInstalacion_NAF,pNoTransaccion_NAF,pCODCLIENTE,pTIPOSERVICIO,pPROXIMAFACTURA);
- IF nvl(id_resultado,0)>0 THEN
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- GOTO FINALIZAR_TRANSACCION;
- END IF;
- END IF;
- IF pCODTRANSACCION IN ('A','U','D','TU','TUR','TR','T','CAP','TD','TDR','UR','DR','RA','CP','REA') THEN
- OPEN cur_grupo_cli;
- FETCH cur_grupo_cli into v_grupo;
- CLOSE cur_grupo_cli;
-
- SELECT NVL(MAX(TIPOPRODUCTO),0)
- INTO V_PRODUCTO_CONTABLE
- from sso_fcta
- where codempresa=pCODEMPRESA
- and tipocliente=v_grupo
- and codproducto=pCODPRODUCTO;
- IF nvl(V_PRODUCTO_CONTABLE,0)=0 THEN
- id_resultado := 21;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- GOTO FINALIZAR_TRANSACCION;
- END IF;
- END IF;
- IF pCODTRANSACCION = 'AB' THEN
- UPDATE SSO_FDIN SET ID_BUNDLE = PID_BUNDLE
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=PCODCLIENTE
- AND INSTALACION=pINSTALACION_NAF
- AND NOTRANSACCION=pNOTRANSACCION_NAF
- AND TIPOSERVICIO='ENL'
- AND ACTIVO='S';
- id_resultado := 0;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado,v_Correlativo_hist);
- COMMIT;
- GOTO FINALIZAR_TRANSACCION;
- END IF;
- -- Busca el codigo del ancho de banda basada en la descripcion del ancho de banda
- v_codanchobanda:=OBTENER_CODANCHOBANDA(pCODEMPRESA,pCODPRODUCTO,pANCHO_BANDA);
- --pPROXIMAFACTURA:=SYSDATE; -- ESTO ES SOLO PARA LA DEMO
- IF pCODTRANSACCION = 'A' THEN
- -- CUANDO SE IMPLEMENTE LOS DIAS DE GRACIA SOLO SE DEBE CAMBIAR LOS DIAS POR EL '0'
- V_FECHA_PROXIMAF:=VALIDA_DIAS_GRACIA(pCODEMPRESA,pPROXIMAFACTURA,6);
- pfecha_ini_fac:=V_FECHA_PROXIMAF;
- --IF TO_CHAR(V_FECHA_PROXIMAF,'MMYYYY')!=TO_CHAR(pPROXIMAFACTURA,'MMYYYY') THEN -- CAMBIO DE MES CON LOS 6 DIAS DE GRACIA
- IF TO_CHAR(V_FECHA_PROXIMAF,'DD')='01' THEN
- --dfecha_facturacion:=last_Day(V_FECHA_PROXIMAF)+1;
- dfecha_facturacion:=V_FECHA_PROXIMAF;
- ELSE
- dfecha_facturacion:=last_Day(V_FECHA_PROXIMAF)+1;
- END IF;
- --END IF;
- ELSE -- ES UNA TRANSACCION POSTVENTA
- V_FECHA_PROXIMAF:=pPROXIMAFACTURA;
- --pfecha_ini_fac:=V_FECHA_PROXIMAF;
- pfecha_ini_fac:=null;
- --agregado para validar diferencial con nuevo procedimiento
- pFechaProp:=pPROXIMAFACTURA;
- IF TO_CHAR(V_FECHA_PROXIMAF,'DD')='01' THEN
- dfecha_facturacion:=V_FECHA_PROXIMAF;
- ELSE
- dfecha_facturacion:=last_Day(V_FECHA_PROXIMAF)+1;
- END IF;
-
- OPEN CUR_FPROXIMA_FAC;
- FETCH CUR_FPROXIMA_FAC into V_FECHA_ACTUAL,v_descpricion_fact,V_ANCHO_BANDA, v_moneda_rea, v_precio_rea,pfecha_ini_fac;
- IF CUR_FPROXIMA_FAC%FOUND AND pCODTRANSACCION!='REA'THEN
- dfecha_facturacion := V_FECHA_ACTUAL;
- END IF;
- CLOSE CUR_FPROXIMA_FAC;
- v_descpricion_fact:=REPLACE(v_descpricion_fact,V_ANCHO_BANDA,pANCHO_BANDA);
- END IF;
-
- id_resultado := 0;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- -- esta funcion regresa el monto con su respectivo impuesto si el cliente no es exento de impuesto.
- v_monto_mensual:=VALIDA_EXENTO_IMP(pCODEMPRESA,pCODCLIENTE,'IV',pVMENSUAL);
- v_monto_mensual_ins:=VALIDA_EXENTO_IMP(pCODEMPRESA,pCODCLIENTE,'IV',pVINSTALACION);
-
- IF pAplicaDesc='0' THEN --Se contruye la descripcion
- IF TRIM(pANCHO_BANDA)='0' THEN
- v_descpricion_fact:='('||pINSTALACION_NAF||') '||', '||pDESCRIPCION||', '||pPUNTO_INICIO;
- ELSE
- v_descpricion_fact:='('||pINSTALACION_NAF||') '||pANCHO_BANDA||', '||pDESCRIPCION||', '||pPUNTO_INICIO;
- END IF;
- v_descpricion_fact:=replace(v_descpricion_fact,',,',','); -- se lequitan dos comas juntas cuando vienen
- ELSE -- se pone la descripcion que digitaron en Siebel
- v_descpricion_fact:=pDESCRIPCION;
- END IF;
-
- -- A=ALTA, y no es Hijo
- IF pCODTRANSACCION = 'A' AND ( pSPLIT !='H' ) THEN
- OPEN cur_cli;
- FETCH cur_cli into vCliente;
- CLOSE cur_cli;
- IF vCliente = pCODCLIENTE THEN -- SI EXISTE EL CLIENTE
- OPEN CUR_ENL;
- FETCH CUR_ENL into venlace;
- CLOSE CUR_ENL;
- IF (nvl(venlace,0)=0) THEN -- El enlace no existe por lo tanto se procede a la creacion del mismo.
- pNOTRANSACCION_NAF:=SIGUENTE_CORRELATIVO(1,'NOTRANSACCION');
- -- se comentariza porque al principio aqui se generaba el correlativo, ahora ya viene en el registro
- -- pINSTALACION_NAF:=SIGUENTE_CORRELATIVO(1,'INSTALACION');
-
- BEGIN
- INSERT INTO SSO_FDIN
- (CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,
- CODMONEDA,DESCRIPCION,CANTIDAD,VINSTALACION,VMENSUAL,FECHA,PROXIMAFACTURA,USUARIO_INGRESO,
- FECHA_INGRESO,CODPRODUCTO,CODANCHOBANDA,CENTRO,BODEGA,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,
- GEOGRAFIA_PUNTO_FIN,ACTIVO,PUNTO_INICIO,PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,PERIODO_INICIO,ORDEN,
- PRODUCTO,CICLOFACTURACION,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,ES_SPLIT,Id_BUNDLE,fecha_ini_fac)
- VALUES(pCODEMPRESA,pCODCLIENTE,pCONTRATO,pANEXO,pINSTALACION_NAF,pNOTRANSACCION_NAF,pTIPOSERVICIO,1,pCODTRANSACCION,
- pCODMONEDA,v_descpricion_fact,pCANTIDAD,v_monto_mensual_ins,v_monto_mensual,pFECHA,dfecha_facturacion,pUSUARIO_INGRESO,
- pFECHA_INGRESO,pCODPRODUCTO,v_codanchobanda,pCENTRO,pBODEGA,substr(pANCHO_BANDA,1,20),pGEOGRAFIA_VENTA,pGEOGRAFIA_PUNTO_INI,
- pGEOGRAFIA_PUNTO_FIN,pACTIVO,pPUNTO_INICIO,pPUNTO_FINAL,pPAIS_INICIAL,pPAIS_FINAL,pPERIODO_INICIO,pINSTALACION_NAF,
- /*pProducto*/V_PRODUCTO_CONTABLE,'U',pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,DECODE(pSplit,'H','S','P','S',pSplit),pId_BUNDLE,pfecha_ini_fac);
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN
- id_resultado := 5; -- Registro duplicado en sso_fdin
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- WHEN OTHERS THEN
- id_resultado := 6; -- Operación Fallida, Error al insertar en SSO_FDIN
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- END;
-
- IF TO_CHAR(V_FECHA_PROXIMAF,'DD')>1 THEN -- SE INSERTA EL PROPORCIONAL
- -- La cantidad de dias proporcionales
- ndias_prop:=to_char(last_Day(pPROXIMAFACTURA),'DD')- TO_CHAR(pPROXIMAFACTURA,'DD') + 1;
- --nMonto_Prop:=v_monto_mensual/to_char(last_Day(pPROXIMAFACTURA),'DD') * ndias_prop;
- -- inserta el proporcional
- BEGIN
- INSERT INTO SSO_FDIN
- (CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,
- CODMONEDA,DESCRIPCION,CANTIDAD,VINSTALACION,VMENSUAL,FECHA,PROXIMAFACTURA,USUARIO_INGRESO,
- FECHA_INGRESO,CODPRODUCTO,CODANCHOBANDA,CENTRO,BODEGA,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,
- GEOGRAFIA_PUNTO_FIN,ACTIVO,PUNTO_INICIO,PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,PERIODO_INICIO,ORDEN,
- PRODUCTO,CICLOFACTURACION,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,ES_SPLIT,Id_BUNDLE,fecha_ini_fac)
- VALUES(pCODEMPRESA,pCODCLIENTE,pCONTRATO,pANEXO,pINSTALACION_NAF,pNOTRANSACCION_NAF,'PRO',1,pCODTRANSACCION,
- pCODMONEDA,v_descpricion_fact,pCANTIDAD,v_monto_mensual_ins,v_monto_mensual,pFECHA,V_FECHA_PROXIMAF,pUSUARIO_INGRESO,
- pFECHA_INGRESO,pCODPRODUCTO,v_codanchobanda,pCENTRO,pBODEGA,substr(pANCHO_BANDA,1,20),pGEOGRAFIA_VENTA,pGEOGRAFIA_PUNTO_INI,
- pGEOGRAFIA_PUNTO_FIN,pACTIVO,pPUNTO_INICIO,pPUNTO_FINAL,pPAIS_INICIAL,pPAIS_FINAL,pPERIODO_INICIO,pINSTALACION_NAF,
- /*pProducto*/V_PRODUCTO_CONTABLE,'U',pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,DECODE(pSplit,'H','S','P','S',pSplit),pId_BUNDLE,pfecha_ini_fac);
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN
- id_resultado := 5; -- Registro duplicado en sso_fdin
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- WHEN OTHERS THEN
- id_resultado := 6; -- Operación Fallida, Error al insertar en SSO_FDIN
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- END;
- END IF; --IF TO_CHAR(pPROXIMAFACTURA,'DD')>1 THEN
- IF NVL(pVINSTALACION,0) > 0 THEN
- pkg_fact_naf_sol.GENERA_COBRO_INS(pCODEMPRESA,pCODCLIENTE,pINSTALACION_NAF,pNOTRANSACCION_NAF,pTIPOSERVICIO,v_monto_mensual_ins, pIdSolucion);
- END IF;
- --ASIGNAR_GRUPOFAC(pCODEMPRESA, pCODCLIENTE , pUSUARIO_INGRESO);
- IF NVL(id_resultado,-1) = 0 THEN
- --REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado,v_Correlativo_hist);
- REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado||' ( FECHA INST:'||pFecha_ini_fac||')',v_Correlativo_hist);
- COMMIT;
- END IF;
- ELSE --(nvl(venlace,0)=0) THEN
- id_resultado:=8;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- END IF;--IF (nvl(venlace,0)=0) THEN
- ELSE
- id_resultado:=4;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- END IF;--IF vCliente = pCODCLIENTE THEN
- END IF; -- pCODTRANSACCION = 'A' AND ( pSPLIT !='H' ) THEN
-
- IF ( NVL(pSPLIT,'X') ='H') AND (pCODTRANSACCION IN ('A')) THEN -- Si trae H es parte de un split y ademas es un hijo
- BEGIN
- INSERT INTO SSO_FDIN
- (CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,
- CODMONEDA,DESCRIPCION,CANTIDAD,VINSTALACION,VMENSUAL,FECHA,PROXIMAFACTURA,USUARIO_INGRESO,
- FECHA_INGRESO,CODPRODUCTO,CODANCHOBANDA,CENTRO,BODEGA,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,
- GEOGRAFIA_PUNTO_FIN,ACTIVO,PUNTO_INICIO,PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,PERIODO_INICIO,ORDEN,
- PRODUCTO,CICLOFACTURACION,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,CODEMPRESA_PADRE,CODCLIENTE_PADRE,
- ES_SPLIT,Id_BUNDLE,fecha_ini_fac)
- VALUES(pCODEMPRESA,pCODCLIENTE,pCONTRATO,pANEXO,pINSTALACION_PADRE,pNOTRANSACCION_PADRE,pTIPOSERVICIO,1,pCODTRANSACCION,
- pCODMONEDA,v_descpricion_fact,pCANTIDAD,v_monto_mensual_ins,v_monto_mensual,pFECHA,dfecha_facturacion,pUSUARIO_INGRESO,
- pFECHA_INGRESO,pCODPRODUCTO,v_codanchobanda,pCENTRO,pBODEGA,substr(pANCHO_BANDA,1,20),pGEOGRAFIA_VENTA,pGEOGRAFIA_PUNTO_INI,
- pGEOGRAFIA_PUNTO_FIN,pACTIVO,pPUNTO_INICIO,pPUNTO_FINAL,pPAIS_INICIAL,pPAIS_FINAL,pPERIODO_INICIO,pINSTALACION_PADRE,
- /*pProducto*/V_PRODUCTO_CONTABLE,'U',pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,pCODEMPRESA_PADRE,pCODCLIENTE_PADRE,
- DECODE(pSplit,'H','S','P','S',pSplit),pId_BUNDLE,pfecha_ini_fac);
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN
- id_resultado := 5; -- Registro duplicado en sso_fdin
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- WHEN OTHERS THEN
- id_resultado := 6; -- Operación Fallida, Error al insertar en SSO_FDIN
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- END;
- IF TO_CHAR(V_FECHA_PROXIMAF,'DD')>1 THEN -- SE INSERTA EL PROPORCIONAL
- -- La cantidad de dias proporcionales
- ndias_prop:=to_char(last_Day(pPROXIMAFACTURA),'DD')- TO_CHAR(pPROXIMAFACTURA,'DD') + 1;
- --nMonto_Prop:=v_monto_mensual/to_char(last_Day(pPROXIMAFACTURA),'DD') * ndias_prop;
- -- inserta el proporcional
- BEGIN
- INSERT INTO SSO_FDIN
- (CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,
- CODMONEDA,DESCRIPCION,CANTIDAD,VINSTALACION,VMENSUAL,FECHA,PROXIMAFACTURA,USUARIO_INGRESO,
- FECHA_INGRESO,CODPRODUCTO,CODANCHOBANDA,CENTRO,BODEGA,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,
- GEOGRAFIA_PUNTO_FIN,ACTIVO,PUNTO_INICIO,PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,PERIODO_INICIO,ORDEN,
- PRODUCTO,CICLOFACTURACION,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,CODEMPRESA_PADRE,CODCLIENTE_PADRE,
- ES_SPLIT,Id_BUNDLE,fecha_ini_fac)
- VALUES(pCODEMPRESA,pCODCLIENTE,pCONTRATO,pANEXO,pINSTALACION_PADRE,pNOTRANSACCION_PADRE,'PRO',1,pCODTRANSACCION,
- pCODMONEDA,v_descpricion_fact,pCANTIDAD,v_monto_mensual_ins,v_monto_mensual,pFECHA,V_FECHA_PROXIMAF,pUSUARIO_INGRESO,
- pFECHA_INGRESO,pCODPRODUCTO,v_codanchobanda,pCENTRO,pBODEGA,substr(pANCHO_BANDA,1,20),pGEOGRAFIA_VENTA,pGEOGRAFIA_PUNTO_INI,
- pGEOGRAFIA_PUNTO_FIN,pACTIVO,pPUNTO_INICIO,pPUNTO_FINAL,pPAIS_INICIAL,pPAIS_FINAL,pPERIODO_INICIO,pINSTALACION_PADRE,
- /*pProducto*/V_PRODUCTO_CONTABLE,'U',pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,pCODEMPRESA_PADRE,pCODCLIENTE_PADRE,
- DECODE(pSplit,'H','S','P','S',pSplit),pId_BUNDLE,pfecha_ini_fac);
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN
- id_resultado := 5; -- Registro duplicado en sso_fdin
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- WHEN OTHERS THEN
- id_resultado := 6; -- Operación Fallida, Error al insertar en SSO_FDIN
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- END;
- END IF;
- IF NVL(pVINSTALACION,0) > 0 THEN
- GENERA_COBRO_INS(pCODEMPRESA,pCODCLIENTE,pINSTALACION_PADRE,pNOTRANSACCION_PADRE,pTIPOSERVICIO,v_monto_mensual_ins);
- END IF;
- --ASIGNAR_GRUPOFAC(pCODEMPRESA, pCODCLIENTE , pUSUARIO_INGRESO);
- IF id_resultado=0 THEN
- --REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado,v_Correlativo_hist);
- REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado||' ( FECHA INST:'||pFecha_ini_fac||')',v_Correlativo_hist);
- COMMIT;
- END IF;
- END IF; --IF ( NVL(pSPLIT,'X') ='H') AND (pCODTRANSACCION IN ('A')) THEN -- Si trae H es parte de un split y ademas es un hijo
-
- IF pCODTRANSACCION = 'CC' THEN --CAMBIO DE CLIENTE
- NOTRANSACCION_BAJA:=pNOTRANSACCION_NAF;
- pNOTRANSACCION_NAF:=SIGUENTE_CORRELATIVO(pCODEMPRESA,'NOTRANSACCION');
-
- INSERT INTO SSO_FDIN(CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,
- NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,CODMONEDA,
- ORDEN,DESCRIPCION,CANTIDAD,VINSTALACION,NOCUOTAS,
- TOTALCUOTAS,VMENSUAL,VACUMULADO,TIPOFACTURACION,FECHA,
- FACTURA,PRODUCTO,COD_CATEGORIA,PROXIMAFACTURA,CICLOFACTURACION,
- PERIODICIDAD,USUARIO_INGRESO,FECHA_INGRESO,OBSERVACIONES,FINFACTURACION,
- CODPRODUCTO,CODANCHOBANDA,NO_FACTU,CENTRO,BODEGA,
- SUBCLIENTE,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,GEOGRAFIA_PUNTO_FIN,
- GENERA_COMISION,NO_VENDEDOR,PRODUCTO_INI,PRODUCTO_FIN,ALTA_FACTURACION,FECHA_IMPRESION,
- PREFACTURADO,ACTIVO,FECHA_BAJA,PUNTO_INICIO,PUNTO_FINAL,
- PAIS_INICIAL,PAIS_FINAL,MOTIVO_BAJA,OBSERVACIONES_ADMINISTRATIVAS,OBSERVACIONES_TECNICAS,
- ENCARGADO_CARTERA,ENCARGADO_BAJA,PERIODO_INICIO,FECHA_INICIO_FACTURACION,FECHA_AUTORIZACION_FACTURACION,
- HAY_DIFERENCIAL,FECHA_PREAUTORIZACION,FECHA_AUTORIZA_BAJA,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,
- CODCLIENTE_PADRE,CODEMPRESA_PADRE,ES_SPLIT,FECHA_ULTIMA_FAC,fecha_ini_fac)
- SELECT pCODEMPRESA_NUEVA,pCODCLIENTE_NUEVO,CONTRATO,ANEXO,INSTALACION,
- pNOTRANSACCION_NAF,TIPOSERVICIO,GRUPOFACTURA/*1*/,pCODTRANSACCION,CODMONEDA,
- ORDEN,DESCRIPCION,CANTIDAD,VINSTALACION,NOCUOTAS,
- TOTALCUOTAS,VMENSUAL,VACUMULADO,TIPOFACTURACION,SYSDATE,
- FACTURA,PRODUCTO,COD_CATEGORIA,PROXIMAFACTURA,CICLOFACTURACION,
- PERIODICIDAD,pUSUARIO_INGRESO,SYSDATE,OBSERVACIONES,FINFACTURACION,
- CODPRODUCTO,CODANCHOBANDA,NO_FACTU,CENTRO,BODEGA,
- SUBCLIENTE,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,GEOGRAFIA_PUNTO_FIN,
- GENERA_COMISION,NO_VENDEDOR,PRODUCTO_INI,PRODUCTO_FIN,ALTA_FACTURACION,FECHA_IMPRESION,
- PREFACTURADO,ACTIVO,FECHA_BAJA,PUNTO_INICIO,PUNTO_FINAL,
- PAIS_INICIAL,PAIS_FINAL,MOTIVO_BAJA,OBSERVACIONES_ADMINISTRATIVAS,OBSERVACIONES_TECNICAS,
- ENCARGADO_CARTERA,ENCARGADO_BAJA,PERIODO_INICIO,FECHA_INICIO_FACTURACION,FECHA_AUTORIZACION_FACTURACION,
- HAY_DIFERENCIAL,FECHA_PREAUTORIZACION,FECHA_AUTORIZA_BAJA,pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,
- CODCLIENTE_PADRE,CODEMPRESA_PADRE,ES_SPLIT,FECHA_ULTIMA_FAC,fecha_ini_fac
- FROM SSO_FDIN
- WHERE codempresa=pCODEMPRESA
- AND codcliente=pCODCLIENTE
- AND instalacion=pINSTALACION_NAF
- --AND notransaccion=pNOTRANSACCION_NAF
- AND notransaccion=NOTRANSACCION_BAJA
- AND activo='S'
- AND tiposervicIo='ENL';
-
- IF id_resultado=0 THEN
- --ASIGNAR_GRUPOFAC(pCODEMPRESA_NUEVA, pCODCLIENTE_NUEVO, pUSUARIO_INGRESO);
- --COMMIT;
- REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado||'( FECHA INST:'||pFecha_ini_fac||')',v_Correlativo_hist);
- BAJA_DE_ENLACE(pCODEMPRESA,pCODCLIENTE,pINSTALACION_NAF,NOTRANSACCION_BAJA,'ENL','B'||pCODTRANSACCION,
- SYSDATE,'BAJA POR TRANSACCION: '||pCODTRANSACCION,pUSUARIO_INGRESO,id_resultado,Desc_resultado);
- END IF;
- END IF;
-
- IF pCODTRANSACCION IN ('U','D','TU','TUR','TR','T','CAP','TD','TDR','UR','DR','RA','CP','REA') THEN
- --U=UPGRADE, D=DOWNGRADE, TU=TRASLADO CON UPGRADE,TUR=TRASLADO CON UPGRADE Y RENOVACION
- --TR=TRASLADO CON RENOVACION, T=TRASALADO DE ENLACE, CAP=CAMBIO DE PRODUCTO
- --TD=TRASLADO CON DOWNGRADE, TDR=TRASLADO CON DOWNGRADE Y RENOVACION, UR=UPGRADE CON RENOVACION
- --DR=DOWNGRADE CON RENOVACION, RA='RENOVACION DE ANEXO', CP=CAMBIO DE PRECIO
- --REA=REACTIVACION DE ENLACE, AB=ALTA BUNDLE
- IF EXISTE_ENLACE_ACTIVO(pCODEMPRESA,pCODCLIENTE,pINSTALACION_NAF,pNOTRANSACCION_NAF,pCODTRANSACCION,vGrupo_Fac,V_PRODUCTO_CONTABLE) THEN
- NOTRANSACCION_BAJA:=pNOTRANSACCION_NAF;
- pNOTRANSACCION_NAF:=SIGUENTE_CORRELATIVO(pCODEMPRESA,'NOTRANSACCION');
-
- --Se agrega If para diferenciar las postventas de la reactivacion
- if pCODTRANSACCION !='REA' then
- DIFERENCIAL_ENVIO_AUTO(pCODEMPRESA, -- Codigo de la compañia
- pCODCLIENTE, -- Codigo del cliente
- pINSTALACION_NAF, -- numero de enlace
- NOTRANSACCION_BAJA, --numero de orden de trabajo del enlace
- v_monto_mensual, -- valor de la nueva transaccion sobre el enlace
- pCODMONEDA, -- moneda de la nueva transaccion del enlace
- V_diferencial, -- monto del diferencial
- pFechaProp, -- fecha nueva del proporcional
- pFechaEnlace);
- --pfecha_ini_fac:=dfecha_facturacion;
- --Asignamos la moneda a la nueva variable
- v_moneda_rea := pCODMONEDA;
- else
-
- v_monto_mensual := v_precio_rea;
- --pCODMONEDA := v_moneda_rea;
- pFechaEnlace :=dfecha_facturacion;
- IF TO_CHAR(V_FECHA_PROXIMAF,'DD')='01' THEN
- V_diferencial:=0;
- ELSE
- V_diferencial:=v_precio_rea;
- pFechaProp := V_FECHA_PROXIMAF;
- END IF;
- end if;
-
- IF pCODTRANSACCION IN ('DR','TDR','RA','TUR','UR','TR') THEN
- pfecha_ini_fac:=pFechaEnlace;
- END IF;
-
- IF pCODTRANSACCION IN ('TUR','UR','TR') AND nvl(V_diferencial,0) > 0 THEN
- pfecha_ini_fac:=pFechaProp;
- END IF;
-
- BEGIN
- INSERT
- INTO SSO_FDIN(CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,
- CODMONEDA,DESCRIPCION,CANTIDAD,VINSTALACION,VMENSUAL,FECHA,PROXIMAFACTURA,USUARIO_INGRESO,
- FECHA_INGRESO,CODPRODUCTO,CODANCHOBANDA,CENTRO,BODEGA,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,
- GEOGRAFIA_PUNTO_FIN,ACTIVO,PUNTO_INICIO,PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,PERIODO_INICIO,ORDEN,
- PRODUCTO,CICLOFACTURACION,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,Id_BUNDLE,fecha_ini_fac)
- VALUES( pCODEMPRESA,pCODCLIENTE,pCONTRATO,pANEXO,pINSTALACION_NAF,pNOTRANSACCION_NAF,pTIPOSERVICIO,vGrupo_Fac,pCODTRANSACCION,
- /*pCODMONEDA*/v_moneda_rea,v_descpricion_fact,pCANTIDAD,v_monto_mensual_ins,v_monto_mensual,pFECHA,pFechaEnlace/*dfecha_facturacion*/,pUSUARIO_INGRESO,
- pFECHA_INGRESO,pCODPRODUCTO,v_codanchobanda,pCENTRO,pBODEGA,substr(pANCHO_BANDA,1,20),pGEOGRAFIA_VENTA,pGEOGRAFIA_PUNTO_INI,
- pGEOGRAFIA_PUNTO_FIN,pACTIVO,pPUNTO_INICIO,pPUNTO_FINAL,pPAIS_INICIAL,pPAIS_FINAL,pPERIODO_INICIO,pINSTALACION_NAF,
- /*pProducto*/V_PRODUCTO_CONTABLE,'U',pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,pId_BUNDLE,pfecha_ini_fac);
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN
- id_resultado := 5; -- Registro duplicado en sso_fdin
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- WHEN OTHERS THEN
- id_resultado := 6; -- Operación Fallida, Error al insertar en SSO_FDIN
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- END;
-
-
-
- IF id_resultado=0 THEN -- Si todo va bien se procede con la baja y proporcional cuando aplica
- /*V_diferencial:=DIFERENCIAL(pCODEMPRESA, -- Codigo de la compañia
- pCODCLIENTE, -- Codigo del cliente
- pINSTALACION_NAF, -- numero de Enlace
- NOTRANSACCION_BAJA, --numero de orden de trabajo del enlace
- v_monto_mensual, -- valor de la nueva transaccion sobre el enlace
- pCODMONEDA -- moneda de la nueva transaccion del enlace
- );
- */
-
-
- --IF ( TO_CHAR(V_FECHA_PROXIMAF,'DD')>1 and V_diferencial > 0 AND pCODTRANSACCION NOT IN('CP')) THEN -- SE INSERTA EL PROPORCIONAL
- IF ( nvl(V_diferencial,0) > 0 AND pCODTRANSACCION NOT IN('CP')) THEN -- SE INSERTA EL PROPORCIONAL
- -- La cantidad de dias proporcionales
- ndias_prop:=to_char(last_Day(pPROXIMAFACTURA),'DD')- TO_CHAR(pPROXIMAFACTURA,'DD') + 1;
- -- inserta el proporcional
- BEGIN
- INSERT INTO SSO_FDIN(CODEMPRESA,CODCLIENTE,CONTRATO,ANEXO,INSTALACION,NOTRANSACCION,TIPOSERVICIO,GRUPOFACTURA,CODTRANSACCION,
- CODMONEDA,DESCRIPCION,CANTIDAD,VINSTALACION,VMENSUAL,FECHA,PROXIMAFACTURA,USUARIO_INGRESO,
- FECHA_INGRESO,CODPRODUCTO,CODANCHOBANDA,CENTRO,BODEGA,ANCHO_BANDA,GEOGRAFIA_VENTA,GEOGRAFIA_PUNTO_INI,
- GEOGRAFIA_PUNTO_FIN,ACTIVO,PUNTO_INICIO,PUNTO_FINAL,PAIS_INICIAL,PAIS_FINAL,PERIODO_INICIO,ORDEN,
- PRODUCTO,CICLOFACTURACION,INSTALACION_SIEBEL,NOTRANSACCION_SIEBEL,CODEMPRESA_PADRE,CODCLIENTE_PADRE,fecha_ini_fac)
- VALUES(pCODEMPRESA,pCODCLIENTE,pCONTRATO,pANEXO,pINSTALACION_NAF,pNOTRANSACCION_NAF,'PRO',vGrupo_Fac,pCODTRANSACCION,
- /*pCODMONEDA*/v_moneda_rea,v_descpricion_fact,pCANTIDAD,v_monto_mensual_ins,V_diferencial,pFECHA,pFechaProp/*V_FECHA_PROXIMAF*/,pUSUARIO_INGRESO,
- pFECHA_INGRESO,pCODPRODUCTO,v_codanchobanda,pCENTRO,pBODEGA,substr(pANCHO_BANDA,1,20),pGEOGRAFIA_VENTA,pGEOGRAFIA_PUNTO_INI,
- pGEOGRAFIA_PUNTO_FIN,pACTIVO,pPUNTO_INICIO,pPUNTO_FINAL,pPAIS_INICIAL,pPAIS_FINAL,pPERIODO_INICIO,pINSTALACION_NAF,
- /*pProducto*/V_PRODUCTO_CONTABLE,'U',pINSTALACION_SIEBEL,pNOTRANSACCION_SIEBEL,pCODEMPRESA_PADRE,pCODCLIENTE_PADRE,pfecha_ini_fac);
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN
- id_resultado := 5; -- Registro duplicado en sso_fdin
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- WHEN OTHERS THEN
- id_resultado := 6; -- Operación Fallida, Error al insertar en SSO_FDIN
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||SQLERRM;
- END;
-
-
-
- END IF;--IF TO_CHAR(pPROXIMAFACTURA,'DD')>1
- END IF; --IF id_resultado=0
-
- IF id_resultado=0 THEN
- -- EL COMMIT SE HACE EN LA BAJA SI ES EXITOSO.
- IF NVL(pVINSTALACION,0) > 0 THEN
- SELECT COUNT(*)
- INTO vEXISTE_INS_PENDIENTE_COBRO
- FROM SSO_FDIN
- WHERE CODEMPRESA =pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION_NAF
- AND NOTRANSACCION=NOTRANSACCION_BAJA
- AND TIPOSERVICIO='INS'
- AND NVL(VACUMULADO,0)<NVL(VINSTALACION,0)
- AND ACTIVO='S';
-
- IF pCODTRANSACCION='CP' AND NVL(vEXISTE_INS_PENDIENTE_COBRO,0)>0 THEN
- UPDATE SSO_FDIN
- SET FECHA_BAJA =SYSDATE,
- MOTIVO_BAJA ='BAJA POR TRANSACCION: '||pCODTRANSACCION,
- ENCARGADO_BAJA=pUSUARIO_INGRESO,
- --CODTRANSACCION=DECODE(pCODTRANSACCION,'B',CODTRANSACCION,pCODTRANSACCION),
- CODTRANSACCION='B'||pCODTRANSACCION,
- ACTIVO='N',
- FECHA_AUTORIZA_BAJA=SYSDATE
- WHERE CODEMPRESA =pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION_NAF
- AND NOTRANSACCION=NOTRANSACCION_BAJA
- AND TIPOSERVICIO='INS'
- AND NVL(VACUMULADO,0)<NVL(VINSTALACION,0)
- AND ACTIVO='S';
-
- GENERA_COBRO_INS(pCODEMPRESA,pCODCLIENTE,pINSTALACION_NAF,pNOTRANSACCION_NAF,pTIPOSERVICIO,v_monto_mensual_ins);
- ELSE
- GENERA_COBRO_INS(pCODEMPRESA,pCODCLIENTE,pINSTALACION_NAF,pNOTRANSACCION_NAF,pTIPOSERVICIO,v_monto_mensual_ins);
- END IF;
- END IF;
- REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado||'( FECHA INST:'||pFecha_ini_fac||')',v_Correlativo_hist);
- BAJA_DE_ENLACE(pCODEMPRESA,pCODCLIENTE,pINSTALACION_NAF,NOTRANSACCION_BAJA,'ENL','B'||pCODTRANSACCION,SYSDATE,
- 'BAJA POR TRANSACCION: '||pCODTRANSACCION,pUSUARIO_INGRESO,id_resultado,Desc_resultado);
- END IF;
- ELSE
- id_resultado := 7;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- --Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||' cia:'||pCODEMPRESA||' cli:'||pCODCLIENTE||' inst:'||pINSTALACION_NAF||' trans:'||pNOTRANSACCION_NAF||' tserv:'||pTIPOSERVICIO;
- END IF; --IF EXISTE_ENLACE_ACTIVO(pCODEMPRESA,pCODCLIENTE,pINSTALACION_NAF,pNOTRANSACCION_NAF)
- END IF; --pCODTRANSACCION = 'U' THEN
- <<FINALIZAR_TRANSACCION>>
- if nvl(id_resultado,0)>0 then
- rollback;
- REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado,v_Correlativo_hist);
- commit;
- end if;
- END; -- END DEL PROCEDIMIENTO
-
- FUNCTION EXISTE_ENLACE_ACTIVO(pCODEMPRESA NUMBER,
- pCODCLIENTE NUMBER,
- pINSTALACION NUMBER,
- pNOTRANSACCION NUMBER,
- pCODTRANSACCION varchar2,
- pGrupo_fac in out number,
- pProducto in out number) RETURN BOOLEAN IS
- tmp_instalacion sso_fdin.instalacion%type;
- BEGIN
- BEGIN
- SELECT INSTALACION,grupofactura,producto
- INTO tmp_instalacion,pGrupo_Fac,pproducto
- from sso_fdin
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION
- AND NOTRANSACCION=pNOTRANSACCION
- AND ACTIVO=DECODE(pCODTRANSACCION,'REA','N','CB',activo,'S')
- AND TIPOSERVICIO='ENL';
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- return FALSE; -- EL ENLACE NO EXISTE
- WHEN TOO_MANY_ROWS THEN
- return TRUE; -- existe mas de un enlace.
- END;
- RETURN TRUE; -- SI EXISTE EL ENLACE
- END;
-
- FUNCTION VERIFICA_DET_ERROR(pCODEMPRESA NUMBER,
- pCODCLIENTE NUMBER,
- pINSTALACION NUMBER,
- pNOTRANSACCION NUMBER,
- pCODTRANSACCION varchar2,
- pFECHA_BAJA DATE,
- Desc_resultado IN OUT VARCHAR2) RETURN NUMBER IS
- CURSOR CUR_FDIN IS
- SELECT PROXIMAFACTURA,ACTIVO
- FROM SSO_FDIN
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION
- AND NOTRANSACCION=pNOTRANSACCION
- AND TIPOSERVICIO='ENL'
- AND ACTIVO='S';
-
- VPROXIMA_fAC DATE;
- vEstado varchar2(2);
-
- CURSOR CUR_ENLACE IS
- SELECT CODEMPRESA,CODCLIENTE
- FROM SSO_FDIN
- WHERE INSTALACION=pINSTALACION
- AND NOTRANSACCION=pNOTRANSACCION
- AND TIPOSERVICIO='ENL'
- AND ACTIVO='S';
-
- CURSOR CUR_ENLACE_notran IS
- SELECT CODEMPRESA,CODCLIENTE,NOTRANSACCION
- FROM SSO_FDIN
- WHERE CODEMPRESA=pCODEMPRESA
- AND INSTALACION=pINSTALACION
- AND TIPOSERVICIO='ENL'
- AND ACTIVO='S';
- vEmpresa sso_fdin.codempresa%type:=0;
- vcliente sso_fdin.codcliente%type:=0;
- vnotran number:=0;
- BEGIN
- OPEN CUR_FDIN;
- FETCH CUR_FDIN into VPROXIMA_fAC,vEstado;
- IF CUR_FDIN%NOTFOUND THEN --NO SE ENCONTRO EL ENLACE
- CLOSE CUR_FDIN;
-
- OPEN CUR_ENLACE;
- FETCH CUR_ENLACE into vEmpresa,vcliente;
- CLOSE CUR_ENLACE;
- IF NVL(vEmpresa,0)>0 AND NVL(vcliente,0)>0 AND (vcliente!=pCODCLIENTE OR vEmpresa!=pCODEMPRESA) THEN
- Desc_resultado:=GET_MSG_DESCRIPTION(18)||vcliente; --La fecha de baja ingresada no es válida. Se recomienda colocar una fecha posterior a
- return(18); -- la fecha debe ser MENOR
- END IF;
-
- OPEN CUR_ENLACE_notran;
- FETCH CUR_ENLACE_notran into vEmpresa,vcliente,vnotran;
- CLOSE CUR_ENLACE_notran;
- --Desc_resultado:='RESULTADO:'||vEmpresa||'-'||vcliente||vnotran;
- --RETURN(100);
- IF vcliente=pCODCLIENTE and vEmpresa=pCODEMPRESA and vnotran <> pNOTRANSACCION and nvl(vnotran,0) >0 THEN
- Desc_resultado:=GET_MSG_DESCRIPTION(19)||pNOTRANSACCION||'. Debería tener el número de instalación '||vnotran; --La fecha de baja ingresada no es válida. Se recomienda colocar una fecha posterior a
- return(19); -- la fecha debe ser MENOR
- END IF;
-
- Desc_resultado:=GET_MSG_DESCRIPTION(7);
- return(7); -- ENLACES NO EXISTE
- else -- si encontro el enlace
- CLOSE CUR_FDIN;
- IF To_number( To_char(pFECHA_BAJA, 'YYYYMM')) < To_number( To_char( VPROXIMA_fAC, 'YYYYMM') ) AND Trunc(pFECHA_BAJA) != Last_day( Add_months( VPROXIMA_fAC, -1)) THEN
- Desc_resultado:=GET_MSG_DESCRIPTION(17)||Last_day( Add_months( VPROXIMA_fAC, -1)); --La fecha de baja ingresada no es válida. Se recomienda colocar una fecha posterior a
- return(17); -- la fecha debe ser MENOR
- END IF;
- END IF;
- RETURN 0; -- SI EXISTE EL ENLACE
- END;
-
- PROCEDURE BAJA_DE_ENLACE(pCODEMPRESA NUMBER,
- pCODCLIENTE NUMBER,
- pINSTALACION NUMBER,
- pNOTRANSACCION NUMBER,
- pTIPOSERVICIO VARCHAR2,
- pCODTRANSACCION VARCHAR2,
- pFECHA_BAJA DATE,
- pMOTIVO_BAJA VARCHAR2,
- pENCARGADO_BAJA VARCHAR2,
- id_resultado IN OUT NUMBER,
- Desc_resultado IN OUT VARCHAR2) IS
- vGrupo_Fac number;
- v_Correlativo_hist number;
- vEstado SSO_FDIN.ACTIVO%TYPE;
-
- CURSOR CUR_estado IS
- SELECT ACTIVO
- FROM SSO_FDIN
- WHERE CODEMPRESA=pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION
- AND NOTRANSACCION=pNOTRANSACCION
- AND TIPOSERVICIO='ENL'
- AND ACTIVO='N';
- V_PRODUCTO_CONTABLE number;
- BEGIN
-
- -- MEJORAS BAJA
- IF pCODTRANSACCION = 'B' THEN
- id_resultado := VERIFICA_DET_ERROR(pCODEMPRESA,pCODCLIENTE,pINSTALACION,pNOTRANSACCION,pCODTRANSACCION,pFECHA_BAJA,Desc_resultado);
- IF NVL(id_resultado,0) > 0 THEN
- GOTO FIN_TRANSACCION;
- END IF;
- END IF;
- IF pCODTRANSACCION = 'CB' THEN
- OPEN CUR_estado;
- FETCH CUR_estado into vEstado;
- IF CUR_estado%FOUND THEN --
- CLOSE CUR_estado;
- id_resultado := 20; --El enlace esta Inactivo debe hacer una reactivacion de enlace
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- GOTO FIN_TRANSACCION;
- END IF;
- CLOSE CUR_estado;
- END IF;
-
- -- FIN DE MEJORAS BAJA
-
- id_resultado := 0;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
-
- IF EXISTE_ENLACE_ACTIVO(pCODEMPRESA,pCODCLIENTE,pINSTALACION,pNOTRANSACCION,pCODTRANSACCION,vGrupo_Fac,V_PRODUCTO_CONTABLE) or pCODTRANSACCION='BREA' THEN
- IF pCODTRANSACCION = 'CB' THEN -- CANCELACION DE BAJA
- UPDATE SSO_FDIN
- SET FECHA_BAJA =NULL,
- FECHA_AUTORIZA_BAJA=NULL,
- MOTIVO_BAJA =NULL,
- ENCARGADO_BAJA=NULL,
- CODTRANSACCION=NVL(ultimo_codtransaccion,'CB'),
- fecha_cancelacion_baja=SYSDATE
- --ACTIVO=DECODE(pCODTRANSACCION,'B','S','N'),
- WHERE CODEMPRESA =pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION
- AND NOTRANSACCION=pNOTRANSACCION
- AND TIPOSERVICIO=pTIPOSERVICIO
- --AND TIPOSERVICIO='ENL'
- AND CODTRANSACCION='B'
- AND FECHA_BAJA IS NOT NULL;
- --AND ACTIVO='S';
-
- GOTO FIN_TRANSACCION;
- END IF;
-
- --- SI LLEGO AQUI ES PORQUE NO ES CANCELACION NI REACTIVACION, ES UNA BAJA
- BEGIN
- UPDATE SSO_FDIN
- SET FECHA_BAJA =pFECHA_BAJA,
- MOTIVO_BAJA =pMOTIVO_BAJA,
- ENCARGADO_BAJA=pENCARGADO_BAJA,
- CODTRANSACCION=pCODTRANSACCION,
- ACTIVO=DECODE(pCODTRANSACCION,'B','S','N'),
- FECHA_AUTORIZA_BAJA=DECODE(pCODTRANSACCION,'B',SYSDATE,NULL),
- fecha_baja_programada=pFECHA_BAJA,
- ultimo_codtransaccion=CODTRANSACCION
- WHERE CODEMPRESA =pCODEMPRESA
- AND CODCLIENTE=pCODCLIENTE
- AND INSTALACION=pINSTALACION
- AND NOTRANSACCION=pNOTRANSACCION
- AND TIPOSERVICIO=pTIPOSERVICIO
- --AND TIPOSERVICIO='ENL'
- AND ACTIVO='S';
-
- GOTO FIN_TRANSACCION;
- END;
- ELSE
- id_resultado := 7;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||'(cia:'||pCODEMPRESA||' cli:'||pCODCLIENTE||' inst:'||pINSTALACION||' trans:'||pNOTRANSACCION||' tserv:'||pTIPOSERVICIO||')';
- --Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado)||'(ENL: '||pINSTALACION||' NOTRAN: '||pNOTRANSACCION||')';
- GOTO FIN_TRANSACCION;
- END IF;
- <<FIN_TRANSACCION>>
- if nvl(id_resultado,0)=0 AND pCODTRANSACCION NOT IN ('B','CB')then
- --rollback;
- --REGISTRO_DE_RESPUESTA(id_resultado,Desc_resultado,v_Correlativo_hist);
- commit;
- end if;
- IF pCODTRANSACCION in ('B','CB') THEN
- -- mejora bajas
- IF pCODTRANSACCION='B' and nvl(id_resultado,0)=0 THEN
- select Desc_resultado||' (ESTADO DEL ENLACE: '||DECODE(ACTIVO,'S','ACTIVO','INACTIVO')||', FECHA BAJA: '||TO_CHAR(pFECHA_BAJA,'DD/MM/YYYY')||', FECHA PROXIMA FAC:'||TO_CHAR(PROXIMAFACTURA,'DD/MM/YYYY')||')'
- into Desc_resultado
- from sso_fdin
- where codempresa=pCODEMPRESA
- and instalacion=pINSTALACION
- and notransaccion=pNOTRANSACCION
- and codcliente=pCODCLIENTE
- and tiposervicio='ENL';
- END IF;
- -- fin de mejora bajas
- v_Correlativo_hist:=SEC_HIST_PARAM_FA.NEXTVAL;
- BEGIN
- INSERT INTO ARFA_HIST_PARAM
- (Correlativo,CODEMPRESA,CODCLIENTE,TIPOSERVICIO,
- CODTRANSACCION,INSTALACION_NAF,NOTRANSACCION_NAF,FECHA,
- DESCRIPCION,id_resultado,Desc_resultado)
- VALUES (v_Correlativo_hist,pCODEMPRESA,pCODCLIENTE,pTIPOSERVICIO,
- pCODTRANSACCION,pINSTALACION,pNOTRANSACCION,pFECHA_BAJA,
- pMOTIVO_BAJA,id_resultado,Desc_resultado);
- EXCEPTION WHEN OTHERS THEN
- NULL;
- END;
- COMMIT;
- END IF;
- END;
-
- FUNCTION VALIDAR_ENLACE(pCODEMPRESA NUMBER, -- codigo de la empresa
- pCODCLIENTE NUMBER, -- codigo del cliente
- pINSTALACION NUMBER, -- condigo del enlace
- pNOTRANSACCION NUMBER, -- codigo de la orden de trabajo(SR de siebel)
- pTIPOSERVICIO VARCHAR2, -- ('ENL','INS','PRO')
- pTIPO_VALIDACION NUMBER -- 1=Validar meses facturado y pagadas; 2=Facturas pendientes de pago
- ) RETURN NUMBER IS
- v_salida number;
- v_Fecha date;
- BEGIN
- -- Selecciono la fecha de la ultima renovacion
- SELECT max(fecha)
- INTO v_Fecha
- from sso_fdin
- where instalacion=pINSTALACION
- and codtransaccion like '%R%';
- IF v_Fecha IS NULL THEN
- select min(fecha)
- INTO v_Fecha
- from sso_fdin
- where instalacion=pINSTALACION
- and tiposervicio='ENL';
- END IF;
-
- IF pTIPO_VALIDACION = 1 THEN -- Cantidad de facturas pagadas de este enlace
- SELECT COUNT(DISTINCT A.NO_FACTU)
- INTO v_salida
- FROM arfafe a, ARFAFL b, arccmd c
- WHERE b.instalacion=pINSTALACION
- AND a.no_cia=b.no_cia
- AND a.no_factu=b.no_factu
- AND A.serie_fisico!='PREF'
- AND NVL(a.ind_anu_Dev,'X') !='A'
- AND a.no_factu=c.no_docu
- AND NVL(c.saldo,0) =0
- AND a.fecha_Servicio>=v_Fecha
- and a.tipo_servicio='ENL';
- END IF;
-
- IF pTIPO_VALIDACION = 2 THEN -- la cantidad de facturas pendientes de pago
- SELECT COUNT(DISTINCT A.NO_FACTU)
- INTO v_salida
- FROM arfafe a, ARFAFL b, arccmd c
- WHERE b.instalacion=pINSTALACION
- AND a.no_cia=b.no_cia
- AND a.no_factu=b.no_factu
- AND A.serie_fisico!='PREF'
- AND NVL(a.ind_anu_Dev,'X') !='A'
- AND a.no_factu=c.no_docu
- AND NVL(c.saldo,0) >0
- AND a.tipo_servicio='ENL';
- END IF;
- RETURN(NVL(v_salida,0));
- END;
- PROCEDURE INFO_FACTURACION(pCODEMPRESA NUMBER,
- pCODCLIENTE NUMBER,
- pINSTALACION NUMBER,
- pNOTRANSACCION NUMBER,
- pPROXIMAFACTURA IN OUT DATE,
- pVMENSUAL IN OUT NUMBER,
- id_resultado IN OUT NUMBER,
- Desc_resultado IN OUT VARCHAR2
- ) IS
- CURSOR cur_infofac is
- select proximafactura,
- vmensual
- from sso_fdin
- where codempresa=pCODEMPRESA
- and codcliente=pCODCLIENTE
- and instalacion=pINSTALACION
- and notransaccion=pNOTRANSACCION
- and tiposervicio='ENL';
- BEGIN
- id_resultado := 0;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- OPEN cur_infofac;
- FETCH cur_infofac into pPROXIMAFACTURA,pVMENSUAL;
- IF cur_infofac%NOTFOUND THEN
- id_resultado := 7;
- Desc_resultado:=GET_MSG_DESCRIPTION(id_resultado);
- END IF;
- CLOSE cur_infofac;
- END;
-
- FUNCTION VALIDA_EXENTO_IMP(pCODEMPRESA NUMBER,
- pCODCLIENTE NUMBER,
- PCLAVE VARCHAR2, --IV=Iva Venta , IC=Iva Compra
- PMONTO NUMBER
- ) RETURN NUMBER
- IS
- Vexento varchar2(1);
- VPORC NUMBER;
- cursor cur_cliente is
- SELECT EXcENTO_IMP
- FROM ARCCMC
- WHERE NO_CIA=pCODEMPRESA
- AND NO_CLIENTE=pCODCLIENTE
- AND EXCENTO_IMP='N';
- BEGIN
- OPEN cur_cliente;
- FETCH cur_cliente into Vexento;
- IF cur_cliente%NOTFOUND THEN
- CLOSE cur_cliente;
- RETURN PMONTO;
- END IF;
- CLOSE cur_cliente;
-
- BEGIN
- select nvl(PORCENTAJE,0)/100
- INTO VPORC
- FROM arcghimp
- WHERE NO_CIA=1
- AND CLAVE='IV'
- AND FEC_DESDE=(
- select MAX(FEC_DESDE)
- from arcghimp
- WHERE NO_CIA=1
- AND CLAVE='IV');
- EXCEPTION WHEN NO_DATA_FOUND THEN
- RETURN PMONTO;
- END;
- RETURN round((PMONTO + (PMONTO * VPORC)),2) ;
- END;
- FUNCTION VALIDA_DIAS_GRACIA(pcia number,
- pfecha_ini date,
- pDias_Gracia NUMBER
- ) RETURN DATE IS
- V_CONTADOR NUMBER:=0;
- V_FECHA_CALCULADA DATE:=pfecha_ini;
- CURSOR CUR_FERIADOS(PDIA DATE) IS
- SELECT DIA
- FROM FERIADOS
- WHERE NO_CIA=Pcia
- AND ANO=to_number(to_char(pdia,'yyyy'))
- AND TO_CHAR(DIA,'DDMMYYYY')=to_char(pdia,'DDMMYYYY');
- V_esferiado date;
- BEGIN
- WHILE V_CONTADOR < pDias_Gracia LOOP
- IF TRIM(to_char(V_FECHA_CALCULADA,'DAY', 'NLS_DATE_LANGUAGE=SPANISH')) IN ('SÁBADO','DOMINGO') THEN
- V_FECHA_CALCULADA := V_FECHA_CALCULADA + 1;
- ELSE
- OPEN CUR_FERIADOS(V_FECHA_CALCULADA);
- FETCH CUR_FERIADOS into V_esferiado;
- IF CUR_FERIADOS%NOTFOUND THEN
- V_CONTADOR := V_CONTADOR + 1;
- END IF;
- CLOSE CUR_FERIADOS;
- V_FECHA_CALCULADA := V_FECHA_CALCULADA + 1;
- END IF;
- END LOOP;
- V_CONTADOR:=0;
- WHILE V_CONTADOR = 0 LOOP
- OPEN CUR_FERIADOS(V_FECHA_CALCULADA);
- FETCH CUR_FERIADOS into V_esferiado;
- IF CUR_FERIADOS%FOUND THEN
- V_FECHA_CALCULADA := V_FECHA_CALCULADA + 1;
- ELSE
- V_CONTADOR:=1; -- SE SALE DEL CICLO
- END IF;
- CLOSE CUR_FERIADOS;
- END LOOP;
-
- IF TRIM(to_char(V_FECHA_CALCULADA,'DAY', 'NLS_DATE_LANGUAGE=SPANISH'))='SÁBADO' THEN
- V_FECHA_CALCULADA := V_FECHA_CALCULADA + 2;
- END IF;
-
- RETURN V_FECHA_CALCULADA;
- END;
- END; -- PKG_FACT_NAF;
- /
|