From: Dani Moncayo <dmoncayo@gmail.com>
To: 13548@debbugs.gnu.org
Subject: bug#13548: Error in show-paren-mode
Date: Fri, 25 Jan 2013 14:23:20 +0100 [thread overview]
Message-ID: <CAH8Pv0jdxqb2qG5gdPuP57usF7+4vY7krCsngt8ooRFzo9TbMA@mail.gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 566 bytes --]
Recipe from "emacs -Q":
1. Visit the attached file.
2. M-x show-paren-mode RET
3. C-n
When I do it, I get this error:
Error in timer: (wrong-type-argument integer-or-marker-p t)
In GNU Emacs 24.3.50.1 (i386-mingw-nt6.1.7601)
of 2013-01-22 on ODIEONE
Bzr revision: 111584 dmantipov@yandex.ru-20130122114800-5m9xn29kwf5n9nwx
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
`configure --with-gcc (4.7) --no-opt --enable-checking --cflags
-IC:/Devel/emacs/build/include --ldflags -LC:/Devel/emacs/build/lib'
--
Dani Moncayo
[-- Attachment #2: test --]
[-- Type: application/octet-stream, Size: 102403 bytes --]
{
{
{
{
{
{
{
{
Retorno = EnviarCorreoHtml(EmailOrigen, Email_Coord_Ofi, "", Asunto, TextoMensaje, "", "", 0, DescError);
if (Retorno != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data , DescError);
AQ_FINALIZA_SVC(ERROR_APL);
}
}
if (Hay_Coord_Tecnico)
{
Retorno = EnviarCorreoHtml(EmailOrigen, Email_Coord_Tecnico, "", Asunto,
TextoMensaje, "", "", 0, DescError);
if (Retorno != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data , DescError);
AQ_FINALIZA_SVC(ERROR_APL);
}
}
}
EXEC SQL CLOSE Cursor_PtEm2;
EXEC SQL FREE Cursor_PtEm2;
}
}
EXEC SQL CLOSE Cursor_PtEm1;
EXEC SQL FREE Cursor_PtEm1;
}
}
EXEC SQL CLOSE Cursor_PtEm;
}
// Comprobar si la oferta es a gran cliente
EXEC SQL
SELECT FIRST 1 1
FROM PTOFERCEN C, EMPRESAS E
WHERE E.REGPAT = C.REGPAT
AND E.PRVCTR = C.PRVCTR
AND E.NUMCTR = C.NUMCTR
AND C.PRVOFER = :PrvOferta
AND C.DELOFER = :DelOferta
AND C.SECOFER = :SecOferta
AND C.YEAROFER = :YearOferta
AND E.TIPOEMP = 2;
if(sqlca.sqlcode == 0)
{
// El contrato es GRAN CLIENTE se env a correo notificando anulacin del contrato
strcpy(dCorreosDest, "");
// Recuperamos a los usuarios que pertenecen al departamento de grandes clientes
// para el env o del correo notificando la anulacin de un contrato gran cliente
EXEC SQL
DECLARE CursorCorreo CURSOR FOR
SELECT DESCRIP
FROM PTDVAR
WHERE TIPO = 28
ORDER BY CODIGO;
EXEC SQL
OPEN CursorCorreo;
EXEC SQL
FETCH CursorCorreo
INTO :Descrip :Descrip_IND;
while(sqlca.sqlcode == 0)
{
if(strlen(dCorreosDest) > 0)
{
strcat(dCorreosDest, ",");
}
if(Descrip_IND >= 0)
{
strcat(dCorreosDest, Descrip);
}
EXEC SQL
FETCH CursorCorreo
INTO :Descrip :Descrip_IND;
}
EXEC SQL
CLOSE CursorCorreo;
// Recuperamos el motivo de la anulacin
EXEC SQL
SELECT DESCRIPCION
INTO :Descripcion
FROM PTMOTANU
WHERE CODSIT = 98
AND PROANU = :ProAnu
AND MOTANU = :MotAnu;
if(strlen(dCorreosDest) > 0)
{
sprintf(AsuntoCorreo, "Anulacin del contrato gran cliente %02hd-%02hd-%05ld-%04hd",
PrvContr, DelContr, SecContr, YearContr);
sprintf(TextoMensaje, "Se ha anulado el contrato gran cliente %02hd-%02hd-%05ld-%04hd.<BR>",
PrvContr, DelContr, SecContr, YearContr);
sprintf(TextoMensaje, "%s Motivo de la anulacin: %s."
"<br>Los datos del contrato son:<br><ul>",
TextoMensaje, Descripcion);
strcat(TextoMensaje, TextoMensajeInfo);
Retorno = EnviarCorreoHtml("dprevencion", dCorreosDest, "", AsuntoCorreo,
TextoMensaje, "", "", 0, DescError);
if (Retorno != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data , DescError);
AQ_FINALIZA_SVC(ERROR_APL);
}
}
}
/*Se recuperan los correos de las personas asignadas al contrato*/
EXEC SQL DECLARE c_AsignadosContr CURSOR FOR
SELECT UNIQUE EMAILUSU
FROM USERS,
PTOFERPER
WHERE (PTOFERPER.TECNICOS = USERS.USUARIO OR
PTOFERPER.TECNICOH = USERS.USUARIO OR
PTOFERPER.TECNICOE = USERS.USUARIO OR
PTOFERPER.MEDICO = USERS.USUARIO OR
PTOFERPER.ENFERTRA = USERS.USUARIO)
AND USERS.EMAILUSU IS NOT NULL
AND LENGTH(USERS.EMAILUSU) > 0
AND PTOFERPER.PRVOFER = :PrvOferta
AND PTOFERPER.DELOFER = :DelOferta
AND PTOFERPER.YEAROFER = :YearOferta
AND PTOFERPER.SECOFER = :SecOferta;
EXEC SQL OPEN c_AsignadosContr;
EXEC SQL FETCH c_AsignadosContr INTO :EmailUsu;
while (sqlca.sqlcode == 0)
{
/*Destinatario*/
strcpy(dCorreosDest, EmailUsu);
/*Origen*/
strcpy(EmailOrigen, "dprevencion");
/*Asunto*/
sprintf(AsuntoCorreo, "Anulacin del contrato %02hd-%02hd-%05ld-%04hd",
PrvContr, DelContr, SecContr, YearContr);
/*Texto del mensaje*/
sprintf(TextoMensaje, "Se ha anulado el contrato %02hd-%02hd-%05ld-%04hd (%s) al que estaba asignado",
PrvContr, DelContr, SecContr, YearContr, PTOFERTA_NomEmp);
Retorno = EnviarCorreoHtml(EmailOrigen, dCorreosDest, "", AsuntoCorreo,
TextoMensaje, "", "", 0, DescError);
if (Retorno != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data , DescError);
AQ_FINALIZA_SVC(ERROR_APL);
}
EXEC SQL FETCH c_AsignadosContr INTO :EmailUsu;
}
EXEC SQL CLOSE c_AsignadosContr;
EXEC SQL FREE c_AsignadosContr;
if (strcmp(CodModal, "DISP") == 0)
{
memset(EmailUsu, '\0', sizeof(EmailUsu));
/*// Seleccionaremos al gerente de la direccin regional del contrato
EXEC SQL
SELECT FIRST 1 USERS.EMAILUSU
INTO :EmailUsu
FROM GISSUBCE, USERS, PTOFERTA
WHERE USERS.PRVPER = GISSUBCE.PROVIN
AND USERS.DELPER = GISSUBCE.DELEG
AND USERS.TIPUSU = 52
AND USERS.EMAILUSU IS NOT NULL
AND GISSUBCE.SUBCENT = PTOFERTA.CODGRUSPA
AND PTOFERTA.PRVOFER = :PrvOferta
AND PTOFERTA.DELOFER = :DelOferta
AND PTOFERTA.SECOFER = :SecOferta
AND PTOFERTA.YEAROFER = :YearOferta;
// Si no existe gerente es poque se trata de central con lo que enviaremos
// el correo a los usuarios definidos en la parametrizacin 24
if ((sqlca.sqlcode != 0) || (strlen(EmailUsu) == 0))
{
EXEC SQL
SELECT FIRST 1 USERS.EMAILUSU
INTO :EmailUsu
FROM USERS, PTDVAR
WHERE USERS.USUARIO = PTDVAR.DESCRIP
AND PTDVAR.TIPO = 24
AND USERS.EMAILUSU IS NOT NULL;
}*/
/*jipg*/
/*Busco el director de la oficina de gestin*/
EXEC SQL
SELECT USUARIO
INTO :DirectorOfi
FROM OFISPA
WHERE CODPRV = :PrvDmOfer
AND CODDEL = :DelDmOfer;
if ((sqlca.sqlcode != 0) || (strlen(DirectorOfi) == 0))
{
EXEC SQL
SELECT FIRST 1 USUARIO
INTO :DirectorOfi
FROM USERS
WHERE TIPUSU = 65
AND PRVPER = :PrvDmOfer
AND DELPER = :DelDmOfer;
}
EXEC SQL
SELECT FIRST 1 EMAILUSU
INTO :EmailUsu
FROM USERS
WHERE USUARIO = :DirectorOfi;
EXEC SQL
SELECT FIRST 1 NOMUSU
INTO :NombreUsu
FROM USERS
WHERE USUARIO = :UsuarioI;
/*jipg*/
// Comprobamos si hemos conseguido usuario para enviar correo
if (strlen(EmailUsu) > 0)
{
// Se enviar correo en formato HTML
memset(TextoMensaje, '\0', sizeof(TextoMensaje));
memset(AsuntoCorreo, '\0', sizeof(AsuntoCorreo));
memset(EmailOrigen, '\0', sizeof(EmailOrigen));
memset(dCorreosDest, '\0', sizeof(dCorreosDest));
memset(dCorreosCopia, '\0', sizeof(dCorreosCopia));
// Texto del mensaje
sprintf(TextoMensaje, "Debido a que ha finalizado un contrato "
"DISP (%02hd-%02hd-%05ld-%04hd - %s) "
"es necesario enviar un email al siguiente "
"correo electrnico <A HREF='mailto:"
"avisosdisp"
"@prevencionfremap.es'>"
"avisosdisp"
"@prevencionfremap.es</A> "
"indicando la nueva cargabilidad del "
"personal que estaba asignado "
"(personal asignado y horas anuales dedicadas al contrato)."
"<BR><BR> Motivo de finalizacin: Contrato anulado por %s ",
PrvContr, DelContr, SecContr, YearContr, PTOFERTA_NomEmp, NombreUsu);
// Direcciones
strcpy(EmailOrigen, "dprevencion");
strcpy(dCorreosDest, EmailUsu);
strcpy(dCorreosCopia, "avisosdisp@prevencionfremap.es");
// Asunto
sprintf(AsuntoCorreo, "Cargabilidad personal asignado contr. "
"DISP(%02hd-%02hd-%05ld-%04hd)",
PrvContr, DelContr, SecContr, YearContr);
memset(DescError, '\0', sizeof(DescError));
Retorno = EnviarCorreoHtml(
EmailOrigen,
dCorreosDest,
dCorreosCopia,
AsuntoCorreo,
TextoMensaje,
0,
"",
"",
"",
0,
DescError);
if (Retorno != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
strcpy( pOutputMsg->AQE_ERROR_SVC.explan_data, DescError);
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
}
}
for(i=0; i < pInputMsg->NumFilas; i++)
{
if (pInputMsg->LIAP1601[i].FecDesde4.day == -1)
{
FDesde_IND = -1;
}
else
{
FDesde_IND = 1;
ConvFecha_deFCP_I4(&(pInputMsg->LIAP1601[i].FecDesde4), &FDesde);
}
if (pInputMsg->LIAP1601[i].FecHasta4.day == -1)
{
FHasta_IND = -1;
}
else
{
FHasta_IND = 1;
ConvFecha_deFCP_I4(&(pInputMsg->LIAP1601[i].FecHasta4), &FHasta);
}
strcpy(SRefer, pInputMsg->LIAP1601[i].SRefer);
if (strlen(SRefer) > 0)
{
SRefer_IND = 0;
}
else
{
SRefer_IND = -1;
}
strcpy(CodImpFEm, pInputMsg->LIAP1601[i].CodImpFem);
if (strlen(pInputMsg->LIAP1601[i].CodImpFem) == 0)
{
CodImpFEm_IND = -1;
}
else
{
CodImpFEm_IND = 1;
}
ConvFecha_deFCP_I4(&(pInputMsg->LIAP1601[i].FechVen[0]), &FechVenIni);
ConvFecha_deFCP_I4(&(pInputMsg->LIAP1601[i].FechVen[1]), &FechVen);
NumPrefa = pInputMsg->LIAP1601[i].NumPrefa;
strcpy(Usuario, pInputMsg->LIAP1601[i].Usuario);
TipImpFEm = pInputMsg->LIAP1601[i].TipImpFem;
BasePT = pInputMsg->LIAP1601[i].BasImpFem[0];
CuoImpFEm = pInputMsg->LIAP1601[i].Impuestos;
CuoImpFEmAux = pInputMsg->LIAP1601[i].Impuestos;
PrvDm = pInputMsg->LIAP1601[i].PrvDM;
DelDm = pInputMsg->LIAP1601[i].DelDM;
BaseVS = pInputMsg->LIAP1601[i].BasImpFem[1];
NumRegCen = pInputMsg->LIAP1601[i].NumRegCen;
strcpy(DesFac, pInputMsg->LIAP1601[i].Des255);
if (strlen(DesFac) > 0)
{
DesFac_IND = 0;
}
else
{
DesFac_IND = -1;
}
Observac_IND = -1;
if (CMEMPRE_codemp == 1)
{
PrvDMAux = PrvDm;
DelDMAux = DelDm;
}
else
{
EXEC SQL
SELECT PRVOFISP, DELOFISP
INTO :PrvDMAux, :DelDMAux
FROM CMROFI
WHERE PRVOFI = :PrvDm
AND DELOFI = :DelDm;
if (sqlca.sqlcode == 100)
{
PrvDMAux = PrvDm;
DelDMAux = DelDm;
}
}
if (!strcmp(pInputMsg->LIAP1601[i].FlagAvis, "M"))
{
/* MODIFICAR PREFACTURA */
NumPrefaIni = NumPrefa;
/* Si se ha modificado la fecha de vencimiento tenemos que asegurarnos */
/* de que no se va a producir un insert duplicado. */
if (FechVen != FechVenIni)
{
EXEC SQL
SELECT *
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVen
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
if (sqlca.sqlcode == 0)
{
/* ya existe un registro con esa clave por lo que debemos buscar */
/* un nuevo Numprefa para que no nos de insert duplicado cuando */
/* intentemos cambiar la fecha de vencimiento */
EXEC SQL
SELECT MAX(NUMPREFA)
INTO :NumPrefa
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVen
AND USUARIO = :Usuario;
if (NumPrefa < 0)
NumPrefa = 1;
else
NumPrefa++;
}
}
EXEC SQL
UPDATE PTPREFA
SET FECVEN = :FechVen, NUMPREFA = :NumPrefa, FDESDE = :FDesde :FDesde_IND,
FHASTA = :FHasta :FHasta_IND, CODIMPFEM = :CodImpFEm :CodImpFEm_IND,
SREFER = :SRefer :SRefer_IND, DESFAC = :DesFac :DesFac_IND,
BASEPT = :BasePT, TIPIMPFEM = :TipImpFEm, CUOIMPFEM = :CuoImpFEm,
BASEVS = :BaseVS, OBSERVAC = :Observac :Observac_IND
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefaIni
AND USUARIO = :Usuario;
EXEC SQL
DELETE FROM PTPREFARF
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefaIni
AND USUARIO = :Usuario;
EXEC SQL
DELETE FROM PTPREFARF
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVen
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
iFacturasRec = 0;
while(strlen(pInputMsg->LIAP1601[i].Des15[iFacturasRec]) > 0)
{
sscanf(pInputMsg->LIAP1601[i].Des15[iFacturasRec], "%c%4hd%2hd%2hd%6ld",
&IdeFemR[0], &EjeFemR, &PrvFemR, &DelFemR, &SecFemR);
EXEC SQL
INSERT INTO PTPREFARF (TIPOPREFA, PRVCONTR, DELCONTR,
YEARCONTR, SECCONTR, FECVEN,
NUMPREFA, USUARIO, IDEFEMR,
EJEFEMR, PRVFEMR, DELFEMR,
SECFEMR, TIPO, MOTANU)
VALUES (:TipoPrefa, :PrvContr, :DelContr,
:YearContr, :SecContr, :FechVen,
:NumPrefa, :Usuario, :IdeFemR,
:EjeFemR, :PrvFemR, :DelFemR,
:SecFemR, "R", NULL);
iFacturasRec++;
}
} /* fin de modificacion */
else if (!strcmp(pInputMsg->LIAP1601[i].FlagAvis, "A"))
{
/* ANULACIN */
if(pInputMsg->LIAP1601[i].CodFem[0] == ' ' ||
!strcmp(pInputMsg->LIAP1601[i].CodFem, "\0") )
{ /* Prefactura sin factura emitida , en este caso */
/* se borra la prefactura. */
EXEC SQL
DELETE
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
EXEC SQL
DELETE FROM PTPREFARF
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
if(NumRegCen >= 1)
{
EXEC SQL
DELETE
FROM PTPREFACE
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
}
SumaImporte = BasePT + BaseVS + CuoImpFEm;
sprintf(Operacion,"Borrado de la prefactura con vcto. %02hd-%02hd-%04hd/%hd Imp. %.02lf por anulacin de contrato"
,pInputMsg->LIAP1601[i].FechVen[0].day,
pInputMsg->LIAP1601[i].FechVen[0].month,
pInputMsg->LIAP1601[i].FechVen[0].year,NumPrefa,
SumaImporte);
sleep(1);
EXEC SQL
INSERT INTO PTRASTROSPA(PRVOFER,DELOFER,YEAROFER,SECOFER,FECHSIT,USUARIO,OPERACION)
VALUES(:PrvOferta,:DelOferta,:YearOferta,:SecOferta,CURRENT,:UsuarioI,:Operacion);
} /* fin prefactura sin factura emitida */
else
{ /* hay factura emitida */
/* Recibo la clave de la factura */
sscanf(pInputMsg->LIAP1601[i].CodFem, "%c%04hd%02hd%02hd%06ld",
&IdeFEm[0], &EjeFEm, &PrvFEm, &DelFEm, &SecFEm);
/* Evitar Anulacion de facturas que esten en estado provisional */
EXEC SQL
SELECT COUNT(*)
INTO :ContRegProv
FROM CTMOPR
WHERE IDEJUSMOV =:IdeFEm AND
EJEJUSMOV =:EjeFEm AND
DELJUSMOV =:DelFEm AND
PRVJUSMOV =:PrvFEm AND
SECJUSMOV =:SecFEm;
if(ContRegProv > 0)
{
sprintf(Mensaje_error,"Factura : %c/%04hd/%02hd/%02hd/%06ld en asiento provisional.\nNo se puede anular la factura.",IdeFEm[0], EjeFEm, PrvFEm, DelFEm, SecFEm);
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
strcpy( pOutputMsg->AQE_ERROR_SVC.explan_data, Mensaje_error);
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
if (!strcmp(pInputMsg->LIAP1601[i].SitFEm, "E") ||
!strcmp(pInputMsg->LIAP1601[i].SitFEm, "C") )
{ /* la factura est es situacin - EMITIDA o COBRADA */
/* Hay que comprobar si ha cambiado el tipo de impuesto, porque se */
/* puede dar el caso de que la factura se emita en el 2000 y se anule */
/* en el 2001 y por ejemplo, para Canarias en el 2000 hay un 4,5% IGIC */
/* y en el 2001 hay un 5% IGIC. */
if (CMEMPRE_codemp == 1)
{
PrvFEmTra = PrvFEm;
DelFEmTra = DelFEm;
}
else
{
EXEC SQL
SELECT PRVOFISP, DELOFISP
INTO :PrvFEmTra, :DelFEmTra
FROM CMROFI
WHERE PRVOFI = :PrvFEm
AND DELOFI = :DelFEm;
if (sqlca.sqlcode == 100)
{
PrvFEmTra = PrvFEm;
DelFEmTra = DelFEm;
}
}
if (PrvFEm == 52)
{
TipImpFEmNuevo = 4;
strcpy(CodImpFEmNuevo, "P");
}
else
{
if (!strcmp(CodModal, "DISP"))
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEmNuevo, :CodImpFEmNuevo
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :Anio
AND PRVFEM = :PrvFEmTra
AND DELFEM = :DelFEmTra
AND APLFEM = 'P'
AND CODCONFEM = 'T';
}
else if (!strncmp(CodModal, "AU", 2))
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEmNuevo, :CodImpFEmNuevo
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :Anio
AND PRVFEM = :PrvFEmTra
AND DELFEM = :DelFEmTra
AND APLFEM = 'P'
AND CODCONFEM = 'N';
}
else
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEmNuevo, :CodImpFEmNuevo
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :Anio
AND PRVFEM = :PrvFEmTra
AND DELFEM = :DelFEmTra
AND APLFEM = 'P'
AND CODCONFEM = 'P';
}
}
/*if(!strcmp(CodImpFEmNuevo,"I") && TipImpFEmNuevo !=0.0 && (!strcmp(TipoPrefa,"C") || !strcmp(TipoPrefa,"F")))*/
if(TipImpFEmNuevo !=0.0 && (!strcmp(TipoPrefa,"C") || !strcmp(TipoPrefa,"F")))
{
ConvFecha_aFCP4(&(Fecha_Aux) , FDesde);
AnioDesde = Fecha_Aux.year;
EXEC SQL
SELECT UNIQUE A.PORTIP
INTO :TipImpFEmNuevo
FROM CTTIPF A
WHERE A.EJETIP = :AnioDesde
AND A.TIPTIP = "R"
AND A.PRVTIP = :PrvFEmTra
AND A.DELTIP = :DelFEmTra
AND A.FECINITIP <= :FDesde
AND A.CODTIP = :CodImpFEmNuevo
AND NOT EXISTS (SELECT * FROM CTTIPF B
WHERE A.FECINITIP < B.FECINITIP
AND B.EJETIP = :AnioDesde
AND B.TIPTIP = "R"
AND B.PRVTIP = :PrvFEmTra
AND B.DELTIP = :DelFEmTra
AND B.FECINITIP <= :FDesde
AND B.CODTIP = :CodImpFEmNuevo);
}
if(sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* si se trata de una factura en situacin EMITIDA */
/* se anular la factura, pero si se trata de una */
/* factura en situacin COBRADA no se tocar la factura */
if (!strcmp(pInputMsg->LIAP1601[i].SitFEm, "E") )
{
/*******************************************************
************* Anulo la factura actual *****************
*******************************************************/
EXEC SQL
UPDATE CTFEMI
SET SITFEM = 'A', FECSITFEM = TODAY
WHERE IDEFEM = :IdeFEm
AND EJEFEM = :EjeFEm
AND DELFEM = :DelFEm
AND PRVFEM = :PrvFEm
AND SECFEM = :SecFEm;
sprintf(Operacion,"Anulacin de la factura %s/%04hd/%02hd/%02hd/%06hd"
,IdeFEm,EjeFEm,PrvFEm,DelFEm,SecFEm);
sleep(1);
EXEC SQL
INSERT INTO PTRASTROSPA(PRVOFER,DELOFER,YEAROFER,SECOFER,
FECHSIT,USUARIO,OPERACION)
VALUES(:PrvOferta,:DelOferta,:YearOferta,:SecOferta,
CURRENT,:UsuarioI,:Operacion);
}
/*******************************************************
************* Emito la factura en negativo ************
*******************************************************/
EXEC SQL
SELECT LNIFCLI, NIFCLI, SITFEM, RAMCONFEM, REFFEM,
CODIMPFEM, PRVGESFEM, DELGESFEM
INTO :LNifCli :LNifCli_IND, :NifCli, :SitFEm,
:RamConFEm, :RefFEm :RefFEm_IND, :CodImpFEm,
:PrvGesFEm, :DelGesFEm
FROM CTFEMI
WHERE IDEFEM = :IdeFEm
AND EJEFEM = :EjeFEm
AND DELFEM = :DelFEm
AND PRVFEM = :PrvFEm
AND SECFEM = :SecFEm;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* Si estamos en sociedad de prevencin, la oficina de gestin del cobro de la factura
debe ser la cabecera de subcentral */
if (CMEMPRE_codemp == 2)
{
EXEC SQL
SELECT SUBCENT
INTO :Subcent
FROM GISSUBCE
WHERE PROVIN = :PrvGesFEm
AND DELEG = :DelGesFEm;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
strcpy( pOutputMsg->AQE_ERROR_SVC.explan_data,
"Error al buscar la direccin regional de la oficina de gestin.");
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* Si la subcentral no es la 13 (CENTRAL), convertimos la oficina de gestin
a la cabecera de subcentral. Si es la 13, la dejamos como est */
if (Subcent != 13)
{
EXEC SQL
SELECT PRVDES, DELDES
INTO :PrvDesAux, :DelDesAux
FROM TWOFI
WHERE SUBCENT = :Subcent
AND CODUPS = 2;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code=10600;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data,
"Error al buscar la oficina cabecera de direccin regional.");
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* Convertimos la oficina */
PrvGesFEm = PrvDesAux;
DelGesFEm = DelDesAux;
}
}
/* Calculo el SECFEM mximo para la factura */
ConvFecha_aFCP4(&(Fecha_Aux) , FecFEm);
sprintf(AnioCadena, "%04hd%02hd%02hd", Fecha_Aux.year, Fecha_Aux.month, Fecha_Aux.day);
AnioDesde = Fecha_Aux.year;
EXEC SQL
SELECT DESVAL
INTO :CTVALI_DesVal
FROM CTVALI
WHERE EJECON = :AnioDesde
AND CODCON = "fecrecti"
AND DATVAL = "F";
if(strlen(CTVALI_DesVal) > 0)
{
sscanf(CTVALI_DesVal, "%02hd%02hd%04hd", &(Fecha_Aux.day), &(Fecha_Aux.month), &(Fecha_Aux.year));
sprintf(CTVALI_DesValAux, "%04hd%02hd%02hd", Fecha_Aux.year, Fecha_Aux.month, Fecha_Aux.day);
}
if(sqlca.sqlcode == 0 && strcmp(CTVALI_DesValAux, AnioCadena) > 0)
{
strcpy(IdeFemRectificada, IdeFEm);
}
else
{
if(pInputMsg->LIAP1601[i].SitFEm[0] == 'C')
{
strcpy(IdeFemRectificada, "R");
}
else
{
strcpy(IdeFemRectificada, "A");
}
}
EXEC SQL
SELECT MAX(SECFEM)
INTO :SecFEmMax
FROM CTFEMI
WHERE IDEFEM = :IdeFemRectificada
AND EJEFEM = :EjeFEmNew
AND DELFEM = :DelFEmTra
AND PRVFEM = :PrvFEmTra;
if (SecFEmMax < 0)
SecFEmMax = 1;
else
SecFEmMax++;
/* Asignamos a BasTotFEm y CuoTotFEm lo que hubiera en PTPREFA, que es lo que enva
la ventana */
BasTotFEm = BasePT+BaseVS;
CuoTotFEm = CuoImpFEmAux;
/* Pongo los valores a negativo */
BasTotFEm = BasTotFEm * -1;
CuoTotFEm = CuoTotFEm * -1;
/* Tanto si estamos anulando una factura EMITIDA o COBRADA en */
/* ambos casos se emitir una factura con el mismo importe en */
/* negativo, en el caso de factura EMITIDA la nueva factura */
/* quedar en situacin ANULADA, y en el caso de factura COBRADA */
/* la nueva factura quedar en situacin EMITIDA. */
if (!strcmp(pInputMsg->LIAP1601[i].SitFEm, "C") )
{
strcpy(SitFEm, "E");
}
/* Inserto un registro en CTFEMI */
EXEC SQL WHENEVER SQLERROR CONTINUE;
Numero_Intentos = 0;
sql_insert = 100;
while (Numero_Intentos <= 10 && sql_insert)
{
Numero_Intentos ++;
EXEC SQL
INSERT
INTO CTFEMI (IDEFEM, EJEFEM, PRVFEM, DELFEM, SECFEM, FECREGFEM, FECSITFEM,
BASTOTFEM, CUOTOTFEM, LNIFCLI, NIFCLI, FECFEM, SITFEM, RAMCONFEM,
REFFEM, CODIMPFEM, PRVGESFEM, DELGESFEM, EJEASIEMI, PRVASIEMI,
DELASIEMI, MESASIEMI, SECASIEMI, EJEASICOB, PRVASICOB, DELASICOB,
MESASICOB, SECASICOB, TIPFEM, MONEDA,FECOPEFEM)
VALUES (:IdeFemRectificada, :EjeFEmNew, :PrvFEmTra, :DelFEmTra, :SecFEmMax, TODAY, TODAY,
:BasTotFEm, :CuoTotFEm, :LNifCli :LNifCli_IND, :NifCli,:FecFEm,
:SitFEm, :RamConFEm, :RefFEm :RefFEm_IND, :CodImpFEm, :PrvGesFEm,
:DelGesFEm, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'S', :MonedaBD,TODAY);
if (sqlca.sqlcode != -239 &&
sqlca.sqlcode != -346 &&
sqlca.sqlcode != 0)
{
goto AQ_SQL_ERROR;
}
else
{
sql_insert = sqlca.sqlcode;
}
if(sql_insert != 0)
{
SecFEmMax ++;
}
}
if (sql_insert != 0 )
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data,"No se ha podido anular la factura.");
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
EXEC SQL WHENEVER SQLERROR GO TO AQ_SQL_ERROR;
/* Selecciono los datos necesarios de CTFEMD */
/* aqu tampoco selecciono BasImpFEm ni CuoImpFEm, sino que ponemos los correspondientes de
PTPREFA*/
EXEC SQL
DECLARE Cur_Ctfemd CURSOR FOR
SELECT CODCONFEM, TIPIMPFEM,
PRVGESFEM, DELGESFEM
FROM CTFEMD
WHERE IDEFEM = :IdeFEm
AND EJEFEM = :EjeFEm
AND DELFEM = :DelFEm
AND PRVFEM = :PrvFEm
AND SECFEM = :SecFEm;
EXEC SQL
OPEN Cur_Ctfemd;
EXEC SQL
FETCH Cur_Ctfemd
INTO :CodConFEm, :TipImpFEm,
:PrvGesFEm, :DelGesFEm;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
BasTotFEmNuevo = 0;
CuoTotFEmNuevo = 0;
while (sqlca.sqlcode == 0)
{
/* Si estamos en sociedad de prevencin, la oficina de gestin del cobro de la factura
debe ser la cabecera de subcentral */
if (CMEMPRE_codemp == 2)
{
EXEC SQL
SELECT SUBCENT
INTO :Subcent
FROM GISSUBCE
WHERE PROVIN = :PrvGesFEm
AND DELEG = :DelGesFEm;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code = 10600;
strcpy( pOutputMsg->AQE_ERROR_SVC.explan_data,
"Error al buscar la direccin regional de la oficina de gestin.");
pOutputMsg->AQE_ERROR_SVC.severity = SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* Si la subcentral no es la 13 (CENTRAL), convertimos la oficina de gestin
a la cabecera de subcentral. Si es la 13, la dejamos como est */
if (Subcent != 13)
{
EXEC SQL
SELECT PRVDES, DELDES
INTO :PrvDesAux, :DelDesAux
FROM TWOFI
WHERE SUBCENT = :Subcent
AND CODUPS = 2;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.explan_code=10600;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data,
"Error al buscar la oficina cabecera de direccin regional.");
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* Convertimos la oficina */
PrvGesFEm = PrvDesAux;
DelGesFEm = DelDesAux;
}
}
if(!strcmp(CodConFEm, "P") ||
!strcmp(CodConFEm, "T") ||
!strcmp(CodConFEm, "N"))
{
/* Asignamos los valores de BasImpFEm y CuoImpFEm */
BasImpFEm = BasePT;
CuoImpFEm = CuoImpFEmAux;
}
else
{
BasImpFEm = BaseVS;
CuoImpFEm = 0;
}
/* Pongo los valores a negativo */
BasImpFEm = BasImpFEm * -1;
CuoImpFEm = CuoImpFEm * -1;
BasTotFEmNuevo = BasTotFEmNuevo + BasImpFEm;
CuoTotFEmNuevo = CuoTotFEmNuevo + CuoImpFEm;
/* Inserto un registro en CTFEMD */
EXEC SQL
INSERT
INTO CTFEMD (IDEFEM, EJEFEM, PRVFEM, DELFEM, SECFEM, BASIMPFEM,
CUOIMPFEM, CODCONFEM, TIPIMPFEM, PRVGESFEM, DELGESFEM, MONEDA)
VALUES (:IdeFemRectificada, :EjeFEmNew, :PrvFEmTra, :DelFEmTra, :SecFEmMax, :BasImpFEm,
:CuoImpFEm, :CodConFEm, :TipImpFEm, :PrvGesFEm,
:DelGesFEm, :MonedaBD);
EXEC SQL
FETCH Cur_Ctfemd
INTO :CodConFEm, :TipImpFEm,
:PrvGesFEm, :DelGesFEm;
}
EXEC SQL
CLOSE Cur_Ctfemd;
if(BasTotFEmNuevo != BasTotFEm ||
CuoTotFEmNuevo != CuoTotFEm)
{
EXEC SQL
UPDATE CTFEMI
SET BASTOTFEM = :BasTotFEmNuevo,
CODIMPFEM = :CodImpFEmNuevo,
CUOTOTFEM = :CuoTotFEmNuevo
WHERE IDEFEM = :IdeFemRectificada
AND EJEFEM = :EjeFEmNew
AND DELFEM = :DelFEmTra
AND PRVFEM = :PrvFEmTra
AND SECFEM = :SecFEmMax;
}
/*********************************************************
************* Creo la Prefactura en negativo ************
*********************************************************/
EXEC SQL
SELECT TIPOPREFA, PRVCONTR, DELCONTR, YEARCONTR, SECCONTR,
FECVEN, NUMPREFA, USUARIO,NUMRENOVA,
FDESDE, FHASTA, LNIFCLI, NIFCLI, CODIMPFEM,
BASEPT, TIPIMPFEM, CUOIMPFEM, BASEVS,
SREFER, FPAGO, OTRFPAGO, ENTCCC,
OFICCC, DCCCC, CUECCC, DOMFAC, PRVFAC,
LOCFAC, CPFAC, DESFAC, IDEFEM,
EJEFEM, PRVFEM, DELFEM, SECFEM,
NUMREGCEN, OBSERVAC,
ATT,SECINSCRI
INTO :TipoPrefa_Aux, :PrvContr_Aux, :DelContr_Aux, :YearContr_Aux, :SecContr_Aux,
:FechVen_Aux, :NumPrefa_Aux,:Usuario_Aux, :NumRenova,
:FDesde :FDesde_IND, :FHasta :FHasta_IND,
:LNifCli :LNifCli_IND, :NifCli, :CodImpFEm :CodImpFEm_IND,
:BasePT, :TipImpFEm, :CuoImpFEm, :BaseVS,:SRefer :SRefer_IND,
:FPago, :OtrFPago :OtrFPago_IND, :EntCCC :EntCCC_IND, :OfiCCC :OfiCCC_IND,
:DcCCC :DcCCC_IND, :CueCCC :CueCCC_IND, :DomFac, :PrvFac, :LocFac, :CPFac,
:DesFac :DesFac_IND,:IdeFEmAux :IdeFEmAux_IND, :EjeFEmAux :EjeFEmAux_IND,
:PrvFEmAux :PrvFEmAux_IND, :DelFEmAux :DelFEmAux_IND,
:SecFEmAux :SecFEmAux_IND, :NumRegCen, :Observac :Observac_IND,
:att :att_IND, :SecInscri
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
if (sqlca.sqlcode)
{
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* Calculo el NUMPREFA mximo para la factura */
EXEC SQL
SELECT MAX(NUMPREFA)
INTO :NumPrefaMax
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND USUARIO = :Usuario;
if (NumPrefaMax < 0)
NumPrefaMax = 1;
else
NumPrefaMax++;
sprintf(DesFac, "Anulacin factura %c/%04hd/%02hd/%02hd/%06ld",
IdeFEm[0], EjeFEm, PrvFEm, DelFEm, SecFEm);
/* Al anular facturas de domiciliacin, en la nueva prefactura negativa que */
/* se crea pondremos como forma de pago transferencia y el mismo banco que */
/* tena en domiciliacin. */
/* if(!strcmp(FPago, "D"))
{
strcpy(FPago, "F");
}
*/
/* 03-10-2001 Al anular facturas de domiciliacin, cambiar la forma de pago a taln y
quitar el banco */
if(!strcmp(FPago, "D"))
{
strcpy(FPago, "T");
EntCCC = 0;
EntCCC_IND = -1;
OfiCCC = 0;
OfiCCC_IND = -1;
DcCCC = 0;
DcCCC_IND = -1;
CueCCC = 0.0;
CueCCC_IND = -1;
}
BasePT = BasePT * -1;
CuoImpFEm = CuoImpFEm * -1;
BaseVS = BaseVS * -1;
/* Inserto un registro en PTREFA */
EXEC SQL
INSERT
INTO PTPREFA (TIPOPREFA, PRVCONTR, DELCONTR, YEARCONTR, SECCONTR, FECVEN,
NUMPREFA,USUARIO, NUMRENOVA, FDESDE,FHASTA, LNIFCLI, NIFCLI,
CODIMPFEM,BASEPT, TIPIMPFEM, CUOIMPFEM, BASEVS, SREFER,
FPAGO, OTRFPAGO, ENTCCC, OFICCC, DCCCC, CUECCC, DOMFAC,
PRVFAC, LOCFAC, CPFAC, DESFAC, IDEFEM, EJEFEM,
PRVFEM,DELFEM, SECFEM,FVENCIFA, FREMESA,
NUMREGCEN, OBSERVAC, ATT,SECINSCRI)
VALUES (:TipoPrefa_Aux, :PrvContr_Aux, :DelContr_Aux,
:YearContr_Aux, :SecContr_Aux,:FechVen_Aux, :NumPrefaMax,
:Usuario_Aux, :NumRenova,:FDesde :FDesde_IND,
:FHasta :FHasta_IND,:LNifCli :LNifCli_IND, :NifCli,
:CodImpFEm :CodImpFEm_IND, :BasePT, :TipImpFEm,
:CuoImpFEm, :BaseVS, :SRefer :SRefer_IND,
:FPago, :OtrFPago :OtrFPago_IND, :EntCCC :EntCCC_IND,
:OfiCCC :OfiCCC_IND,:DcCCC :DcCCC_IND, :CueCCC :CueCCC_IND,
:DomFac, :PrvFac, :LocFac, :CPFac,:DesFac ,
:IdeFemRectificada ,:EjeFEmNew, :PrvFEmTra, :DelFEmTra, :SecFEmMax,
NULL, NULL,:NumRegCen, :Observac :Observac_IND,
:att :att_IND, :SecInscri);
if(pInputMsg->LIAP1601[i].SitFEm[0] == 'C')
{
strcpy(TipoRectificada, "R");
}
else
{
strcpy(TipoRectificada, "A");
}
EXEC SQL
INSERT INTO PTPREFARF (TIPOPREFA, PRVCONTR, DELCONTR,
YEARCONTR, SECCONTR, FECVEN,
NUMPREFA, USUARIO, IDEFEMR,
EJEFEMR, PRVFEMR, DELFEMR,
SECFEMR, TIPO, MOTANU)
VALUES (:TipoPrefa_Aux, :PrvContr_Aux, :DelContr_Aux,
:YearContr_Aux, :SecContr_Aux, :FechVen_Aux,
:NumPrefaMax, :Usuario_Aux, :IdeFEm,
:EjeFEm, :PrvFEm, :DelFEm,
:SecFEm, :TipoRectificada, NULL);
if (!strcmp(pInputMsg->LIAP1601[i].SitFEm, "C") && Contador < FILAS_LB)
{
/* Para el caso de las facturas en situacin cobrada, emitimos */
/* una factura con el mismo importe en negativo que queda en */
/* situacin emitida. Todas estas facturas hay que reimprimirlas */
/* cuando volvamos al cliente. */
ConvFecha_aFCP4(&(pOutputMsg->LOAP1601[Contador].FechVen), FechVen_Aux);
strcpy(pOutputMsg->LOAP1601[Contador].Usuario, Usuario_Aux);
pOutputMsg->LOAP1601[Contador].NumPrefa = NumPrefaMax;
Contador ++;
}
/* Compruebo si el campo NUMREGCEN es mayor o igual que 1 */
EXEC SQL
SELECT NUMREGCEN
INTO :NumRegCen
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
if (NumRegCen > 0)
{
/* Creo el curso sobre PTPREFACE */
EXEC SQL
DECLARE Cur_Ptpreface CURSOR FOR
SELECT TIPOPREFA, PRVCONTR, DELCONTR, YEARCONTR, SECCONTR, FECVEN,
NUMPREFA, REGPAT, PRVCTR, NUMCTR, CENTRACEN,USUARIO,PRVDMCCC,DELDMCCC,
SECINSCRI
FROM PTPREFACE
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND YEARCONTR = :YearContr
AND SECCONTR = :SecContr
AND FECVEN = :FechVenIni
AND NUMPREFA = :NumPrefa
AND USUARIO = :Usuario;
EXEC SQL
OPEN Cur_Ptpreface;
EXEC SQL
FETCH Cur_Ptpreface
INTO :TipoPrefa_Aux, :PrvContr_Aux, :DelContr_Aux, :YearContr_Aux, :SecContr_Aux,
:FechVen_Aux, :NumPrefa_Aux, :RegPat, :PrvCtr, :NumCtr,
:CentraCen :CentraCen_IND,:Usuario_Aux,
:PrvDmCCC, :DelDmCCC, :SecInscri;
if (sqlca.sqlcode != 0)
{
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
while (sqlca.sqlcode == 0)
{
/* Inserto el registro en PTPREFACE */
EXEC SQL
INSERT
INTO PTPREFACE (TIPOPREFA, PRVCONTR, DELCONTR, YEARCONTR, SECCONTR, FECVEN,
NUMPREFA, REGPAT, PRVCTR, NUMCTR, CENTRACEN,USUARIO,
PRVDMCCC, DELDMCCC, SECINSCRI)
VALUES (:TipoPrefa_Aux, :PrvContr_Aux, :DelContr_Aux, :YearContr_Aux, :SecContr_Aux,
:FechVen_Aux, :NumPrefaMax, :RegPat, :PrvCtr, :NumCtr,
:CentraCen :CentraCen_IND,:Usuario_Aux,
:PrvDmCCC, :DelDmCCC, :SecInscri);
EXEC SQL
FETCH Cur_Ptpreface
INTO :TipoPrefa_Aux, :PrvContr_Aux, :DelContr_Aux, :YearContr_Aux, :SecContr_Aux,
:FechVen_Aux, :NumPrefa_Aux, :RegPat, :PrvCtr, :NumCtr,
:CentraCen :CentraCen_IND,:Usuario_Aux,
:PrvDmCCC, :DelDmCCC, :SecInscri;
}
EXEC SQL
CLOSE Cur_Ptpreface;
}
} /* fin anualcin factura EMITIDA o COBRADA */
} /* fin hay factura emitida */
}
else if (!strcmp(pInputMsg->LIAP1601[i].FlagAvis, "C"))
{
EjeMod = pInputMsg->LIAP1601[i].FechVen[0].year;
/* Seleccionar delegacin de hacienda del contrato *****************************/
EXEC SQL
SELECT UNIQUE(DELHACMOD)
INTO :DelHacCod
FROM CTENDH
WHERE EJEMOD = :EjeMod
AND CODMOD IN (320, 420)
AND CODPRV = :PrvDm
AND TIPPERMOD = 'T';
/* Seleccionamos los datos necesarios para insertar en PTPREFA ************/
EXEC SQL
SELECT FPAGO, OTRFPAGO, ENTCCC, OFICCC,
DCCCC, CUECCC, DOMFAC, PRVFAC, LOCFAC, CPFAC, ATT
INTO :FPago, :OtrFPago :OtrFPago_IND, :EntCCC :EntCCC_IND, :OfiCCC :OfiCCC_IND,
:DcCCC :DcCCC_IND, :CueCCC :CueCCC_IND, :DomFac, :PrvFac, :LocFac, :CPFac, :att :att_IND
FROM PTDATCONTR
WHERE PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND SECCONTR = :SecContr
AND YEARCONTR = :YearContr;
/*si la forma de pago es Domiciliacin y el importe es negativo
ponemos en forma de pago "O" y en otrfpago "Devolucin" */
if ( (strcmp(FPago, "D") == 0) &&
(BasePT + BaseVS + CuoImpFEm < 0) )
{
strcpy(FPago,"O");
strcpy(OtrFPago, "Devolucin");
OtrFPago_IND = 1;
}
/* Comprobamos si hay que insertar prefacturas en otras delegaciones */
Desglosar = FALSE;
NumTerritorios = 0;
ContadorCen = 0;
EXEC SQL
DECLARE CurDesglose CURSOR FOR
SELECT UNIQUE CTENDH.DELHACMOD
FROM CTENDH, PTOFERCEN, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTOFERCEN.PRVOFER = :PrvOferta
AND PTOFERCEN.DELOFER = :DelOferta
AND PTOFERCEN.YEAROFER = :YearOferta
AND PTOFERCEN.SECOFER = :SecOferta
AND PTOFERCEN.REGPAT = EICENT.REGPAT
AND PTOFERCEN.PRVCTR = EICENT.PRVCTR
AND PTOFERCEN.NUMCTR = EICENT.NUMCTR
AND PTOFERCEN.CENTRACEN = EICENT.CENTRACEN
UNION
SELECT UNIQUE CTENDH.DELHACMOD
FROM CTENDH, PTADENCEN, PTADENDAS, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTADENCEN.PRVOFER = :PrvOferta
AND PTADENCEN.DELOFER = :DelOferta
AND PTADENCEN.SECOFER = :SecOferta
AND PTADENCEN.YEAROFER= :YearOferta
AND PTADENDAS.PRVOFER = PTADENCEN.PRVOFER
AND PTADENDAS.DELOFER = PTADENCEN.DELOFER
AND PTADENDAS.SECOFER = PTADENCEN.SECOFER
AND PTADENDAS.YEAROFER= PTADENCEN.YEAROFER
AND PTADENDAS.NUMADEN = PTADENCEN.NUMADEN
AND PTADENCEN.REGPAT = EICENT.REGPAT
AND PTADENCEN.PRVCTR = EICENT.PRVCTR
AND PTADENCEN.NUMCTR = EICENT.NUMCTR
AND PTADENCEN.CENTRACEN = EICENT.CENTRACEN
AND PTADENCEN.OPERACION = 'Q'
AND PTADENDAS.FEFECTO >= :FechIniRen
ORDER BY 1;
EXEC SQL OPEN CurDesglose;
EXEC SQL FETCH CurDesglose INTO :DelHacModDH;
while ( (sqlca.sqlcode == 0) && (NumTerritorios < 2) )
{
NumTerritorios ++;
EXEC SQL FETCH CurDesglose
INTO :DelHacModDH;
}
EXEC SQL CLOSE CurDesglose;
EXEC SQL FREE CurDesglose;
/* Si Afecta a m s de un territorio fiscal, habr que desglosar */
if ( NumTerritorios == 2 )
{
Desglosar = TRUE;
}
/* Solo afecta a un nico territorio fiscal, no hay que desglosar */
else
{
if(DelHacModDH != DelHacCod)
{
/* Si el territorio fiscal al que afecta la factura es distinto */
/* del territorio fiscal de la provincia de gestin del contrato*/
/* Se pondr como prov-deleg de la factura la provincia de la */
/* cabecera del territorio fiscal al que afecta y delegacin 0 */
PrvFEm = DelHacModDH;
if (CMEMPRE_codemp == 1)
DelFEm = 0;
else
DelFEm = 40;
/* Al cambiar la prov-deleg y ya no ser la de gestin del contrato */
/* hay que buscar cual es el impuesto para la nueva prov-deleg */
/* Para el caso de Ceuta va a ser 11 y IVA = 0%. */
if (DelHacModDH == 11 || DelHacModDH == 51)
{
TipImpFEm = 0;
strcpy(CodImpFEm, "I");
CodImpFEm_IND = 0;
}
else if (DelHacModDH == 52)
{
TipImpFEm = 4;
strcpy(CodImpFEm, "P");
CodImpFEm_IND = 0;
}
else
{
if (CMEMPRE_codemp == 1)
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEm, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 0
AND APLFEM = 'P'
AND CODCONFEM = 'P';
}
else
{
if (!strcmp(CodModal, "DISP"))
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEm, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 40
AND APLFEM = 'P'
AND CODCONFEM = 'T';
}
else if (!strncmp(CodModal, "AU", 2))
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEm, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 40
AND APLFEM = 'P'
AND CODCONFEM = 'N';
}
else
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEm, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 40
AND APLFEM = 'P'
AND CODCONFEM = 'P';
}
}
/*if(!strcmp(CodImpFEm,"I") && TipImpFEm !=0.0 && (!strcmp(TipoPrefa,"C") || !strcmp(TipoPrefa,"F")))*/
if(TipImpFEm !=0.0 && (!strcmp(TipoPrefa,"C") || !strcmp(TipoPrefa,"F")))
{
ConvFecha_aFCP4(&(Fecha_Aux) , FDesde);
AnioDesde = Fecha_Aux.year;
EXEC SQL
SELECT UNIQUE A.PORTIP
INTO :TipImpFEm
FROM CTTIPF A
WHERE A.EJETIP = :AnioDesde
AND A.TIPTIP = "R"
AND A.PRVTIP = :DelHacModDH
AND A.DELTIP = 40
AND A.FECINITIP <= :FDesde
AND A.CODTIP = :CodImpFEm
AND NOT EXISTS (SELECT * FROM CTTIPF B
WHERE A.FECINITIP < B.FECINITIP
AND B.EJETIP = :AnioDesde
AND B.TIPTIP = "R"
AND B.PRVTIP = :DelHacModDH
AND B.DELTIP = 40
AND B.FECINITIP <= :FDesde
AND B.CODTIP = :CodImpFEm);
}
if(sqlca.sqlcode == 100)
{
CodImpFEm_IND = -1;
TipImpFEm = 0;
strcpy(CodImpFEm, "\0");
}
else
{
CodImpFEm_IND = 0;
}
}
CuoImpFEm = (TipImpFEm * BasePT) / 100;
if(!strcmp(FPago, "F"))
{
if (CMEMPRE_codemp == 1)
{
EXEC SQL
SELECT ENTCCC,OFICCC,DCCCC,CUECCC
INTO :EntCCC, :OfiCCC, :DcCCC, :CueCCC
FROM PTPARSPA
WHERE PRVPAR = :DelHacModDH AND DELPAR = 0;
}
else
{
EXEC SQL
SELECT ENTCCC,OFICCC,DCCCC,CUECCC
INTO :EntCCC, :OfiCCC, :DcCCC, :CueCCC
FROM PTPARSPA
WHERE PRVPAR = :DelHacModDH AND DELPAR = 40;
}
if(sqlca.sqlcode == 0)
{
EntCCC_IND = 1;
OfiCCC_IND = 1;
DcCCC_IND = 1;
CueCCC_IND = 1;
}
} /*fin forma de pago="F"*/
} /* fin DelHacModDH != DelHacCod */
else /* Misma delegacin de hacienda de la de gestion del contrato */
{
PrvFEm = PrvDMAux;
DelFEm = DelDMAux;
}/*fin DelHacModDH = DelHacCod*/
/* Inserto un registro en PTREFA con los datos de la copy y los seleccionados*/
/* Primero se Calcula el numprefa para insertar la siguiente prefactura **********/
EXEC SQL
SELECT MAX(NUMPREFA)
INTO :NumPrefa :NumPrefa_IND
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND SECCONTR = :SecContr
AND YEARCONTR = :YearContr
AND FECVEN = : FechVen
AND USUARIO = : UsuarioI;
if (NumPrefa_IND < 0)
NumPrefa = 1;
else
NumPrefa++;
PrvFEm_IND = 0;
DelFEm_IND = 0;
EXEC SQL
INSERT INTO PTPREFA(TIPOPREFA, PRVCONTR, DELCONTR, YEARCONTR, SECCONTR,
FECVEN, NUMPREFA, USUARIO, NUMRENOVA,FDESDE,
FHASTA, LNIFCLI, NIFCLI,
CODIMPFEM, BASEPT, TIPIMPFEM, CUOIMPFEM, BASEVS,
SREFER, FPAGO, OTRFPAGO,
ENTCCC, OFICCC, DCCCC,
CUECCC, DOMFAC, PRVFAC, LOCFAC, CPFAC,
DESFAC, IDEFEM, EJEFEM, PRVFEM, DELFEM, SECFEM, FVENCIFA,
FREMESA, NUMREGCEN, OBSERVAC, ATT, SECINSCRI)
VALUES (:TipoPrefa, :PrvContr, :DelContr, :YearContr, :SecContr,
:FechVen, :NumPrefa, :UsuarioI, :NumRenova,:FDesde :FDesde_IND,
:FHasta :FHasta_IND, :LNifCli_CodDni :LNifCli_CodDni_IND, :NifCli_CodDni,
:CodImpFEm :CodImpFEm_IND,:BasePT, :TipImpFEm, :CuoImpFEm, :BaseVS,
:SRefer :SRefer_IND, :FPago, :OtrFPago :OtrFPago_IND,
:EntCCC :EntCCC_IND, :OfiCCC :OfiCCC_IND, :DcCCC :DcCCC_IND,
:CueCCC :CueCCC_IND, :DomFac, :PrvFac, :LocFac, :CPFac,
:DesFac :DesFac_IND, NULL, NULL,:PrvFEm :PrvFEm_IND, :DelFEm :DelFEm_IND, NULL, NULL,
NULL, 0, :Observac :Observac_IND,
:att :att_IND, 0);
iFacturasRec = 0;
while(strlen(pInputMsg->LIAP1601[i].Des15[iFacturasRec]) > 0)
{
sscanf(pInputMsg->LIAP1601[i].Des15[iFacturasRec], "%c%4hd%2hd%2hd%6ld",
&IdeFemR[0], &EjeFemR, &PrvFemR, &DelFemR, &SecFemR);
EXEC SQL
INSERT INTO PTPREFARF (TIPOPREFA, PRVCONTR, DELCONTR,
YEARCONTR, SECCONTR, FECVEN,
NUMPREFA, USUARIO, IDEFEMR,
EJEFEMR, PRVFEMR, DELFEMR,
SECFEMR, TIPO, MOTANU)
VALUES (:TipoPrefa, :PrvContr, :DelContr,
:YearContr, :SecContr, :FechVen,
:NumPrefa, :UsuarioI, :IdeFemR,
:EjeFemR, :PrvFemR, :DelFemR,
:SecFemR, "R", NULL);
iFacturasRec++;
}
/*Enviamos la factura emitida a la ventana para que la imprima */
if (ContadorPrefa < FILAS_LBA)
{
ConvFecha_aFCP4(&(pOutputMsg->LOAP1601A[ContadorPrefa].FechVen), FechVen);
strcpy(pOutputMsg->LOAP1601A[ContadorPrefa].Usuario, UsuarioI);
pOutputMsg->LOAP1601A[ContadorPrefa].NumPrefa = NumPrefa;
ContadorPrefa++;
}
else
{
/*De esta forma luego enviaremos en NumFilasA el
nmero de prefacturas creadas,
pero la ventana slo tratar como m ximo 15. */
ContadorPrefa++;
}
}/*Fin de Un Solo territorio*/
/* Hay que desflosar la prefactura pues afecta a m s de un territorio fiscal */
if(Desglosar)
{
/* recuperar coste total de la oferta para desglose de importes */
/*Mod.4, incluimos EL NumRenova*/
EXEC SQL
SELECT COSTEPT, COSTEVS
INTO :CostePT, :CosteVS
FROM PTOFERTOT
WHERE PRVOFER = :PrvOferta
AND DELOFER = :DelOferta
AND YEAROFER = :YearOferta
AND SECOFER = :SecOferta;
/* Si no hay importes (modalidad 8), contaremos el n centros del contrato */
if( CostePT == 0 || CosteVS == 0 )
{
EXEC SQL
SELECT COUNT(*)
INTO :NumCenTot
FROM PTOFERCEN
WHERE PRVOFER = :PrvOferta
AND DELOFER = :DelOferta
AND YEAROFER = :YearOferta
AND SECOFER = :SecOferta;
EXEC SQL
SELECT COUNT(*)
INTO :NumCenTotAux
FROM PTADENCEN, PTADENDAS
WHERE PTADENCEN.PRVOFER = :PrvOferta
AND PTADENCEN.DELOFER = :DelOferta
AND PTADENCEN.SECOFER = :SecOferta
AND PTADENCEN.YEAROFER= :YearOferta
AND PTADENDAS.PRVOFER = PTADENCEN.PRVOFER
AND PTADENDAS.DELOFER = PTADENCEN.DELOFER
AND PTADENDAS.SECOFER = PTADENCEN.SECOFER
AND PTADENDAS.YEAROFER= PTADENCEN.YEAROFER
AND PTADENDAS.NUMADEN = PTADENCEN.NUMADEN
AND PTADENCEN.OPERACION = 'Q'
AND PTADENDAS.FEFECTO >= :FechIniRen;
NumCenTot += NumCenTotAux;
}
CosteTPCentro = 0;
CostePSCentro = 0;
/* Buscamos si hay centros eliminados en el periodo */
EXEC SQL
DECLARE CurCentrosElimin CURSOR FOR
SELECT UNIQUE PTADENCEN.NUMADEN, FEFECTO
FROM PTADENCEN, PTADENDAS
WHERE PTADENDAS.PRVOFER = PTADENCEN.PRVOFER
AND PTADENDAS.DELOFER = PTADENCEN.DELOFER
AND PTADENDAS.SECOFER = PTADENCEN.SECOFER
AND PTADENDAS.YEAROFER = PTADENCEN.YEAROFER
AND PTADENDAS.NUMADEN = PTADENCEN.NUMADEN
AND PTADENCEN.PRVOFER = :PrvOferta
AND PTADENCEN.DELOFER = :DelOferta
AND PTADENCEN.SECOFER = :SecOferta
AND PTADENCEN.YEAROFER = :YearOferta
AND PTADENCEN.OPERACION = 'Q'
AND PTADENDAS.FEFECTO >= :FechIniRen;
EXEC SQL
OPEN CurCentrosElimin;
EXEC SQL FETCH CurCentrosElimin
INTO :NumAdenElim,
:FeFecToElim;
/* Si existen registros para cada fila (para cada adenda en la que se ha quitado centros) */
while(sqlca.sqlcode == 0)
{
/* Abrir cursor para obtener los centros eliminados y a partir de
ellos calcular los importes*/
EXEC SQL
DECLARE CurImportCenElimin CURSOR FOR
SELECT UNIQUE CTENDH.DELHACMOD, PTADENCEN.HORASPT, PTADENCEN.HORASVS,
PTADENCEN.REGPAT, PTADENCEN.PRVCTR, PTADENCEN.NUMCTR, PTADENCEN.CENTRACEN
FROM CTENDH, PTADENCEN, EICENT
WHERE CTENDH.CODPRV = EICENT.PRVCPCEN
AND PTADENCEN.PRVOFER = :PrvOferta
AND PTADENCEN.DELOFER = :DelOferta
AND PTADENCEN.SECOFER = :SecOferta
AND PTADENCEN.YEAROFER = :YearOferta
AND PTADENCEN.NUMADEN = :NumAdenElim
AND PTADENCEN.OPERACION = 'Q'
AND PTADENCEN.REGPAT = EICENT.REGPAT
AND PTADENCEN.PRVCTR = EICENT.PRVCTR
AND PTADENCEN.NUMCTR = EICENT.NUMCTR
AND PTADENCEN.CENTRACEN = EICENT.CENTRACEN
AND CTENDH.EJEMOD = YEAR(TODAY)
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.TIPPERMOD = 'T'
ORDER BY CTENDH.DELHACMOD;
EXEC SQL
OPEN CurImportCenElimin;
EXEC SQL FETCH CurImportCenElimin
INTO :DelHacModImportesElimin,
:SumaHorasPT,
:SumaHorasVS,
:RegPatElim,
:PrvCtrElim,
:NumCtrElim,
:CenTraCenElim :CenTraCenElim_IND;
/* Si no encontramos registros */
if (sqlca.sqlcode == 100)
{
/* Salir del servicio */
pOutputMsg->AQE_ERROR_SVC.explan_code=10600;
strcpy(pOutputMsg->AQE_ERROR_SVC.explan_data, "No se encuentran los importes de los centros eliminados.");
pOutputMsg->AQE_ERROR_SVC.severity=SEV_APPL;
AQ_FINALIZA_SVC(ERROR_APL)
}
/* Para cada registro obtenido */
iAux = 0;
while (sqlca.sqlcode == 0)
{
/* Clculo de los costes PT del centro eliminado en el periodo */
EXEC SQL
SELECT SUM(A.IMPORTE)
INTO :CosteTPCentro :CosteTPCentro_IND
FROM PTHOACTCEN A, PTACTCEN B
WHERE B.PRVOFER = :PrvOferta
AND B.DELOFER = :DelOferta
AND B.SECOFER = :SecOferta
AND B.YEAROFER = :YearOferta
AND B.REGPAT = :RegPatElim
AND B.PRVCTR = :PrvCtrElim
AND B.NUMCTR = :NumCtrElim
AND ((:CenTraCenElim_IND >= 0
AND B.CENTRACEN = :CenTraCenElim) OR
(:CenTraCenElim_IND < 0 AND B.CENTRACEN IS NULL))
AND A.PRVOFER = B.PRVOFER
AND A.DELOFER = B.DELOFER
AND A.SECOFER = B.SECOFER
AND A.YEAROFER = B.YEAROFER
AND A.REGPAT = B.REGPAT
AND A.PRVCTR = B.PRVCTR
AND A.NUMCTR = B.NUMCTR
AND ((:CenTraCenElim_IND >= 0
AND A.CENTRACEN = B.CENTRACEN) OR
(:CenTraCenElim_IND < 0 AND B.CENTRACEN IS NULL))
AND A.ACTPRVCREA = B.ACTPRVCREA
AND A.ACTDELCREA = B.ACTDELCREA
AND A.ACTSEC = B.ACTSEC
AND A.ACTYEAR = B.ACTYEAR
AND A.TIPOHORAS IN ('S', 'H', 'E', 'PT');
if (CosteTPCentro_IND < 0)
CosteTPCentro = 0;
/* Clculo de los costes VS del centro eliminado en el periodo */
EXEC SQL
SELECT SUM(A.IMPORTE)
INTO :CostePSCentro :CostePSCentro_IND
FROM PTHOACTCEN A, PTACTCEN B
WHERE B.PRVOFER = :PrvOferta
AND B.DELOFER = :DelOferta
AND B.SECOFER = :SecOferta
AND B.YEAROFER = :YearOferta
AND B.REGPAT = :RegPatElim
AND B.PRVCTR = :PrvCtrElim
AND B.NUMCTR = :NumCtrElim
AND ((:CenTraCenElim_IND >= 0
AND B.CENTRACEN = :CenTraCenElim) OR
(:CenTraCenElim_IND < 0 AND B.CENTRACEN IS NULL))
AND A.PRVOFER = B.PRVOFER
AND A.DELOFER = B.DELOFER
AND A.SECOFER = B.SECOFER
AND A.YEAROFER = B.YEAROFER
AND A.REGPAT = B.REGPAT
AND A.PRVCTR = B.PRVCTR
AND A.NUMCTR = B.NUMCTR
AND ((:CenTraCenElim_IND >= 0
AND A.CENTRACEN = B.CENTRACEN) OR
(:CenTraCenElim_IND < 0 AND B.CENTRACEN IS NULL))
AND A.ACTPRVCREA = B.ACTPRVCREA
AND A.ACTDELCREA = B.ACTDELCREA
AND A.ACTSEC = B.ACTSEC
AND A.ACTYEAR = B.ACTYEAR
AND A.TIPOHORAS = 'VS';
if (CostePSCentro_IND < 0)
CostePSCentro = 0;
YaIncluido=FALSE;
for (iAux=0; (iAux < 10) && (CostesAdenCen[iAux].Delegacion != 0 || CostesAdenCen[iAux].CostePT != 0 || CostesAdenCen[iAux].CosteVS != 0); iAux++)
{
if (CostesAdenCen[iAux].Delegacion == DelHacModImportesElimin)
{
CostesAdenCen[iAux].CostePT = CostesAdenCen[iAux].CostePT + CosteTPCentro;
CostesAdenCen[iAux].CosteVS = CostesAdenCen[iAux].CosteVS + CostePSCentro;
YaIncluido=TRUE;
break;
}
else
{
YaIncluido=FALSE;
}
}
if (!YaIncluido)
{
/*Informar nueva linea del array*/
CostesAdenCen[iAux].Delegacion = DelHacModImportesElimin;
CostesAdenCen[iAux].CostePT = CosteTPCentro;
CostesAdenCen[iAux].CosteVS = CostePSCentro;
}
EXEC SQL FETCH CurImportCenElimin
INTO :DelHacModImportesElimin,
:SumaHorasPT,
:SumaHorasVS,
:RegPatElim,
:PrvCtrElim,
:NumCtrElim,
:CenTraCenElim :CenTraCenElim_IND;
}
/* Cierro cursor */
EXEC SQL CLOSE CurImportCenElimin;
EXEC SQL FREE CurImportCenElimin;
EXEC SQL FETCH CurCentrosElimin
INTO :NumAdenElim,
:FeFecToElim;
}
/* Cierro cursor */
EXEC SQL CLOSE CurCentrosElimin;
EXEC SQL FREE CurCentrosElimin;
/* Se recorren los territorios y para cada territorio se crea una prefactura con */
/* la parte proporcional de importe en funcin del coste de los centros sobre */
/* el coste total del contrato, o en funcin del n de centros si no hay coste */
EXEC SQL
DECLARE CursorDH CURSOR FOR
SELECT UNIQUE CTENDH.DELHACMOD
FROM CTENDH, PTOFERCEN, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTOFERCEN.PRVOFER = :PrvOferta
AND PTOFERCEN.DELOFER = :DelOferta
AND PTOFERCEN.YEAROFER = :YearOferta
AND PTOFERCEN.SECOFER = :SecOferta
AND PTOFERCEN.REGPAT = EICENT.REGPAT
AND PTOFERCEN.PRVCTR = EICENT.PRVCTR
AND PTOFERCEN.NUMCTR = EICENT.NUMCTR
AND PTOFERCEN.CENTRACEN = EICENT.CENTRACEN
UNION
SELECT UNIQUE CTENDH.DELHACMOD
FROM CTENDH, PTADENCEN, PTADENDAS, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTADENCEN.PRVOFER = :PrvOferta
AND PTADENCEN.DELOFER = :DelOferta
AND PTADENCEN.SECOFER = :SecOferta
AND PTADENCEN.YEAROFER= :YearOferta
AND PTADENDAS.PRVOFER = PTADENCEN.PRVOFER
AND PTADENDAS.DELOFER = PTADENCEN.DELOFER
AND PTADENDAS.SECOFER = PTADENCEN.SECOFER
AND PTADENDAS.YEAROFER= PTADENCEN.YEAROFER
AND PTADENDAS.NUMADEN = PTADENCEN.NUMADEN
AND PTADENCEN.REGPAT = EICENT.REGPAT
AND PTADENCEN.PRVCTR = EICENT.PRVCTR
AND PTADENCEN.NUMCTR = EICENT.NUMCTR
AND PTADENCEN.CENTRACEN = EICENT.CENTRACEN
AND PTADENCEN.OPERACION = 'Q'
AND PTADENDAS.FEFECTO >= :FechIniRen
ORDER BY 1;
EXEC SQL OPEN CursorDH;
EXEC SQL FETCH CursorDH
INTO :DelHacModDH;
while(sqlca.sqlcode == 0)
{
ContadorCen=0;
ContadorCenAux=0;
/* Se cuentan los centros del territorio */
EXEC SQL
SELECT COUNT(*)
INTO :ContadorCen
FROM PTOFERCEN, CTENDH, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.DELHACMOD = :DelHacModDH
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTOFERCEN.PRVOFER = :PrvOferta
AND PTOFERCEN.DELOFER = :DelOferta
AND PTOFERCEN.YEAROFER = :YearOferta
AND PTOFERCEN.SECOFER = :SecOferta
AND PTOFERCEN.REGPAT = EICENT.REGPAT
AND PTOFERCEN.PRVCTR = EICENT.PRVCTR
AND PTOFERCEN.NUMCTR = EICENT.NUMCTR
AND PTOFERCEN.CENTRACEN = EICENT.CENTRACEN;
EXEC SQL
SELECT COUNT(*)
INTO :ContadorCenAux
FROM PTADENCEN, PTADENDAS, CTENDH, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.DELHACMOD = :DelHacModDH
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTADENCEN.PRVOFER = :PrvOferta
AND PTADENCEN.DELOFER = :DelOferta
AND PTADENCEN.YEAROFER = :YearOferta
AND PTADENCEN.SECOFER = :SecOferta
AND PTADENDAS.PRVOFER = PTADENCEN.PRVOFER
AND PTADENDAS.DELOFER = PTADENCEN.DELOFER
AND PTADENDAS.SECOFER = PTADENCEN.SECOFER
AND PTADENDAS.YEAROFER= PTADENCEN.YEAROFER
AND PTADENDAS.NUMADEN = PTADENCEN.NUMADEN
AND PTADENCEN.REGPAT = EICENT.REGPAT
AND PTADENCEN.PRVCTR = EICENT.PRVCTR
AND PTADENCEN.NUMCTR = EICENT.NUMCTR
AND PTADENCEN.CENTRACEN = EICENT.CENTRACEN
AND PTADENCEN.OPERACION = 'Q'
AND PTADENDAS.FEFECTO >= :FechIniRen;
ContadorCen += ContadorCenAux;
CostePTSum=0;
/* Se suma el coste PT de los centros del territorio */
/* Modificacion fac08 */
EXEC SQL
SELECT SUM(PTOFERCEN.COSTEPT)
INTO :CostePTSum
FROM PTOFERCEN, CTENDH, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.DELHACMOD = :DelHacModDH
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTOFERCEN.PRVOFER = :PrvOferta
AND PTOFERCEN.DELOFER = :DelOferta
AND PTOFERCEN.YEAROFER = :YearOferta
AND PTOFERCEN.SECOFER = :SecOferta
AND PTOFERCEN.REGPAT = EICENT.REGPAT
AND PTOFERCEN.PRVCTR = EICENT.PRVCTR
AND PTOFERCEN.NUMCTR = EICENT.NUMCTR
AND PTOFERCEN.CENTRACEN = EICENT.CENTRACEN
HAVING SUM(PTOFERCEN.COSTEPT) != 0 ;
CosteVSSum=0;
/* Se suma el coste VS de los centros del territorio */
/* Modificacion fac08 */
EXEC SQL
SELECT SUM(PTOFERCEN.COSTEVS)
INTO :CosteVSSum
FROM PTOFERCEN, CTENDH, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.DELHACMOD = :DelHacModDH
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTOFERCEN.PRVOFER = :PrvOferta
AND PTOFERCEN.DELOFER = :DelOferta
AND PTOFERCEN.YEAROFER = :YearOferta
AND PTOFERCEN.SECOFER = :SecOferta
AND PTOFERCEN.REGPAT = EICENT.REGPAT
AND PTOFERCEN.PRVCTR = EICENT.PRVCTR
AND PTOFERCEN.NUMCTR = EICENT.NUMCTR
AND PTOFERCEN.CENTRACEN = EICENT.CENTRACEN
HAVING SUM(PTOFERCEN.COSTEVS) != 0 ;
/* Recuperar el tipo para la delegacin */
/* Para el caso de Ceuta la DelHac va a ser 11 y IVA = 0%. */
if (DelHacModDH == 11 || DelHacModDH == 51)
{
TipImpFEmAux = 0;
strcpy(CodImpFEm, "I");
CodImpFEm_IND = 0;
}
else if (DelHacModDH == 52)
{
TipImpFEmAux = 4;
strcpy(CodImpFEm, "P");
CodImpFEm_IND = 0;
}
else
{
if (CMEMPRE_codemp == 1)
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEmAux, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 0
AND APLFEM = 'P'
AND CODCONFEM = 'P';
}
else
{
if (!strcmp(CodModal, "DISP"))
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEmAux, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 40
AND APLFEM = 'P'
AND CODCONFEM = 'T';
}
else if (!strncmp(CodModal, "AU", 2))
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEmAux, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 40
AND APLFEM = 'P'
AND CODCONFEM = 'N';
}
else
{
EXEC SQL
SELECT TIPIMPFEM, CODIMPFEM
INTO :TipImpFEmAux, :CodImpFEm
FROM CTFEMP
WHERE IDEFEM = 'P'
AND EJEFEM = :EjeMod
AND PRVFEM = :DelHacModDH
AND DELFEM = 40
AND APLFEM = 'P'
AND CODCONFEM = 'P';
}
}
/*if(!strcmp(CodImpFEm,"I") && TipImpFEmAux !=0.0 && (!strcmp(TipoPrefa,"C") || !strcmp(TipoPrefa,"F")))*/
if(TipImpFEmAux !=0.0 && (!strcmp(TipoPrefa,"C") || !strcmp(TipoPrefa,"F")))
{
ConvFecha_aFCP4(&(Fecha_Aux) , FDesde);
AnioDesde = Fecha_Aux.year;
EXEC SQL
SELECT UNIQUE A.PORTIP
INTO :TipImpFEmAux
FROM CTTIPF A
WHERE A.EJETIP = :AnioDesde
AND A.TIPTIP = "R"
AND A.PRVTIP = :DelHacModDH
AND A.DELTIP = 40
AND A.FECINITIP <= :FDesde
AND A.CODTIP = :CodImpFEm
AND NOT EXISTS (SELECT * FROM CTTIPF B
WHERE A.FECINITIP < B.FECINITIP
AND B.EJETIP = :AnioDesde
AND B.TIPTIP = "R"
AND B.PRVTIP = :DelHacModDH
AND B.DELTIP = 40
AND B.FECINITIP <= :FDesde
AND B.CODTIP = :CodImpFEm);
}
if(sqlca.sqlcode == 100)
{
CodImpFEm_IND = -1;
TipImpFEmAux = 0;
strcpy(CodImpFEm, "\0");
}
else
{
CodImpFEm_IND = 0;
}
}
/* Calcular importes de la prefactura a insertar */
BasePTAux = 0;
CuoImpFEmAux = 0;
BaseVSAux = 0;
/* Suma de los importes de territorios con centros eliminados */
YaIncluido=FALSE;
for (iAux=0; (iAux < 10) && CostesAdenCen[iAux].Delegacion != 0; iAux++)
{
if (CostesAdenCen[iAux].Delegacion == DelHacModDH)
{
CostePTSumElim = CostesAdenCen[iAux].CostePT;
CosteVSSumElim = CostesAdenCen[iAux].CosteVS;
YaIncluido=TRUE;
break;
}
else
{
YaIncluido=FALSE;
}
}
if (!YaIncluido)
{
/*Informar nueva linea del array*/
CostePTSumElim = 0;
CosteVSSumElim = 0;
}
/* prevencin t cnica */
if (pInputMsg->LIAP1601[i].BasImpFem[0] != 0)
{
if( CostePT > 0 )
{
BasePTAux = (BasePT * (CostePTSum+CostePTSumElim)) / CostePT;
}
else /* contrato abierto -> no tenemos costes en PTOFERTOT */
{
BasePTAux = (BasePT * ContadorCen) / NumCenTot;
}
CuoImpFEmAux = (TipImpFEmAux * BasePTAux) / 100;
}
/* vigilancia de la salud */
if (pInputMsg->LIAP1601[i].BasImpFem[1] != 0)
{
if( CosteVS > 0 )
{
BaseVSAux = (BaseVS * (CosteVSSum+CosteVSSumElim)) / CosteVS;
}
else /* contrato abierto -> no tenemos costes en PTOFERTOT */
{
BaseVSAux = (BaseVS * ContadorCen) / NumCenTot;
}
}
/* Ver prvfem/delfem a insertar: Si el territorio de los centros coincide */
/* con el de la oficina que crea el contrato, ser la oficina de gestion */
if (DelHacModDH == DelHacCod)
{
PrvFEm = PrvDMAux;
DelFEm = DelDMAux;
}
else
{
PrvFEm = DelHacModDH;
if (CMEMPRE_codemp == 1)
DelFEm = 0;
else
DelFEm = 40;
}
/* Si es Transferencia, se recupera la cuenta de la oficina */
if(!strcmp(FPago, "F") )
{
EXEC SQL
SELECT ENTCCC,OFICCC,DCCCC,CUECCC
INTO :EntCCC, :OfiCCC, :DcCCC, :CueCCC
FROM PTPARSPA
WHERE PRVPAR = :PrvFEm
AND DELPAR = :DelFEm;
if(sqlca.sqlcode == 0)
{
EntCCC_IND = 1;
OfiCCC_IND = 1;
DcCCC_IND = 1;
CueCCC_IND = 1;
}
}
/* Por ltimo se Crea la prefactura del territorio */
EXEC SQL
SELECT MAX(NUMPREFA)
INTO :NumPrefaNuevo :NumPrefaNuevo_IND
FROM PTPREFA
WHERE TIPOPREFA = :TipoPrefa
AND PRVCONTR = :PrvContr
AND DELCONTR = :DelContr
AND SECCONTR = :SecContr
AND YEARCONTR = :YearContr
AND FECVEN = :FechVen
AND USUARIO = :UsuarioI;
if (NumPrefaNuevo_IND < 0)
NumPrefaNuevo = 1;
else
NumPrefaNuevo++;
PrvFEm_IND = 0;
DelFEm_IND = 0;
EXEC SQL
INSERT INTO PTPREFA(TIPOPREFA, PRVCONTR, DELCONTR, YEARCONTR,
SECCONTR, FECVEN, NUMPREFA, USUARIO,
NUMRENOVA, FDESDE, FHASTA,
LNIFCLI, NIFCLI, CODIMPFEM,
BASEPT, TIPIMPFEM, CUOIMPFEM, BASEVS,
SREFER, FPAGO, OTRFPAGO,
ENTCCC, OFICCC, DCCCC,
CUECCC, DOMFAC, PRVFAC, LOCFAC, CPFAC,
DESFAC, IDEFEM, EJEFEM, PRVFEM,
DELFEM, SECFEM, FVENCIFA, FREMESA,
NUMREGCEN, OBSERVAC, ATT,SECINSCRI)
VALUES (:TipoPrefa, :PrvContr, :DelContr, :YearContr,
:SecContr, :FechVen, :NumPrefaNuevo, :UsuarioI,
:NumRenova, :FDesde :FDesde_IND, :FHasta :FHasta_IND,
:LNifCli_CodDni :LNifCli_CodDni_IND, :NifCli_CodDni, :CodImpFEm :CodImpFEm_IND,
:BasePTAux, :TipImpFEmAux, :CuoImpFEmAux, :BaseVSAux,
:SRefer :SRefer_IND, :FPago, :OtrFPago :OtrFPago_IND,
:EntCCC :EntCCC_IND, :OfiCCC :OfiCCC_IND, :DcCCC :DcCCC_IND,
:CueCCC :CueCCC_IND, :DomFac,:PrvFac,:LocFac,:CPFac,
:DesFac :DesFac_IND, NULL, NULL,:PrvFEm :PrvFEm_IND,
:DelFEm :DelFEm_IND, NULL, NULL, NULL,
:ContadorCen, :Observac :Observac_IND,
:att :att_IND, 0);
iFacturasRec = 0;
while(strlen(pInputMsg->LIAP1601[i].Des15[iFacturasRec]) > 0)
{
sscanf(pInputMsg->LIAP1601[i].Des15[iFacturasRec], "%c%4hd%2hd%2hd%6ld",
&IdeFemR[0], &EjeFemR, &PrvFemR, &DelFemR, &SecFemR);
EXEC SQL
INSERT INTO PTPREFARF (TIPOPREFA, PRVCONTR, DELCONTR,
YEARCONTR, SECCONTR, FECVEN,
NUMPREFA, USUARIO, IDEFEMR,
EJEFEMR, PRVFEMR, DELFEMR,
SECFEMR, TIPO, MOTANU)
VALUES (:TipoPrefa, :PrvContr, :DelContr,
:YearContr, :SecContr, :FechVen,
:NumPrefaNuevo, :UsuarioI, :IdeFemR,
:EjeFemR, :PrvFemR, :DelFemR,
:SecFemR, "R", NULL);
iFacturasRec++;
}
/*Enviamos la factura emitida a la ventana para que la imprima */
if (ContadorPrefa < FILAS_LBA)
{
ConvFecha_aFCP4(&(pOutputMsg->LOAP1601A[ContadorPrefa].FechVen), FechVen);
strcpy(pOutputMsg->LOAP1601A[ContadorPrefa].Usuario, UsuarioI);
pOutputMsg->LOAP1601A[ContadorPrefa].NumPrefa = NumPrefaNuevo;
ContadorPrefa ++;
}
else
{
/*De esta forma luego enviaremos en NumFilasA el nmero
de prefacturas creadas, pero la ventana slo tratar como m ximo 15. */
ContadorPrefa++;
}
EXEC SQL
DECLARE CursorPtofercen CURSOR FOR
SELECT PTOFERCEN.REGPAT, PTOFERCEN.PRVCTR, PTOFERCEN.NUMCTR,
PTOFERCEN.CENTRACEN, PTOFERCEN.PRVDMCCC, PTOFERCEN.DELDMCCC
FROM PTOFERCEN, CTENDH, EICENT
WHERE CTENDH.EJEMOD = :EjeMod
AND CTENDH.DELHACMOD = :DelHacModDH
AND CTENDH.CODMOD IN (320,420)
AND CTENDH.CODPRV = EICENT.PRVCPCEN
AND CTENDH.TIPPERMOD = 'T'
AND PTOFERCEN.PRVOFER = :PrvOferta
AND PTOFERCEN.DELOFER = :DelOferta
AND PTOFERCEN.YEAROFER = :YearOferta
AND PTOFERCEN.SECOFER = :SecOferta
AND PTOFERCEN.REGPAT = EICENT.REGPAT
AND PTOFERCEN.PRVCTR = EICENT.PRVCTR
AND PTOFERCEN.NUMCTR = EICENT.NUMCTR
AND PTOFERCEN.CENTRACEN = EICENT.CENTRACEN;
EXEC SQL OPEN CursorPtofercen;
EXEC SQL FETCH CursorPtofercen
INTO :Regpat_ptofercen, :PrvCtr_ptofercen,:NumCtr_ptofercen,
:CentraCen_ptofercen :CentraCen_ptofercen_IND, :PrvDMccc_ptofercen,
:DelDMccc_ptofercen;
while (sqlca.sqlcode == 0)
{
if (CentraCen_ptofercen_IND < 0)
strcpy(CentraCen_ptofercen,"");
/* Por ltimo se insertan los registros correspondientes en ptpreface
mediante un cursor */
EXEC SQL
INSERT INTO PTPREFACE(TIPOPREFA, PRVCONTR, DELCONTR, YEARCONTR,
SECCONTR, FECVEN, NUMPREFA, REGPAT,
PRVCTR, NUMCTR, CENTRACEN, USUARIO,
PRVDMCCC, DELDMCCC, SECINSCRI)
VALUES ("C" , :PrvContr, :DelContr, :YearContr,
:SecContr, :FechVen, :NumPrefaNuevo, :Regpat_ptofercen,
:PrvCtr_ptofercen,:NumCtr_ptofercen,:CentraCen_ptofercen, :UsuarioI,
:PrvDMccc_ptofercen, :DelDMccc_ptofercen, 0);
EXEC SQL FETCH CursorPtofercen
INTO :Regpat_ptofercen, :PrvCtr_ptofercen,:NumCtr_ptofercen,
:CentraCen_ptofercen :CentraCen_ptofercen_IND, :PrvDMccc_ptofercen,
:DelDMccc_ptofercen;
}
EXEC SQL CLOSE CursorPtofercen;
EXEC SQL FREE CursorPtofercen;
EXEC SQL FETCH CursorDH
INTO :DelHacModDH;
}/*Fin del while*/
EXEC SQL CLOSE CursorDH;
EXEC SQL FREE CursorDH;
}/*Fin desglosar*/
/* Enviamos el nmero de prefacturas creadas */
pOutputMsg->NumfilasA = ContadorPrefa;
}
} /* fin del for */
/* Buscar las actividades del contrato cuya fecha de inicio sea mayor o igual
que la fecha de efecto de la anulacin */
EXEC SQL
DECLARE CursorPTACTCEN CURSOR FOR
SELECT ACTPRVCREA, ACTDELCREA, ACTSEC, ACTYEAR
FROM PTACTCEN
WHERE PRVOFER = :PrvOferta
AND DELOFER = :DelOferta
AND SECOFER = :SecOferta
AND YEAROFER = :YearOferta
AND ((ACTFESTINI IS NOT NULL AND ACTFESTINI >= :FEfecto) OR
(ACTCOD = 23 AND ABIERTA = "S"));
EXEC SQL OPEN CursorPTACTCEN;
while ( 1 ) /* Bucle de Fetchs */
{
EXEC SQL FETCH CursorPTACTCEN INTO :ActPrvCrea, :ActDelCrea, :ActSec, :ActYear;
/* Si no hay ms datos, salir del bucle */
if ( sqlca.sqlcode ) break;
/* Buscar horas imputadas a esa actividad */
EXEC SQL
SELECT UNIQUE 1
FROM SATAR
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
if ( sqlca.sqlcode==100 ) /* No existe registro (no hay horas imputadas) */
{
/* Borrar la actividad */
EXEC SQL
DELETE FROM SAACTCEN
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
EXEC SQL
DELETE FROM SAACT
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
EXEC SQL
DELETE FROM SAACTOFER
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
EXEC SQL
DELETE FROM SAACTCONT
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
EXEC SQL
DELETE FROM SAACTEST
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
EXEC SQL
DELETE FROM SAACTSIT
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
EXEC SQL
DELETE FROM SAACTUSU
WHERE ACTPRVCREA = :ActPrvCrea
AND ACTDELCREA = :ActDelCrea
AND ACTYEAR = :ActYear
AND ACTSEC = :ActSec;
/*Mod.13, se borra el Delete sobre PTHOACTCEN y PTACTCEN*/
} /* End if ( sqlca.sqlcode==100 ) */
} /* Fin bucle de Fetchs */
EXEC SQL CLOSE CursorPTACTCEN;
EXEC SQL FREE CursorPTACTCEN;
pOutputMsg->NumFilas = Contador;
}
next reply other threads:[~2013-01-25 13:23 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-25 13:23 Dani Moncayo [this message]
2013-01-25 16:10 ` bug#13548: Error in show-paren-mode Bastien
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAH8Pv0jdxqb2qG5gdPuP57usF7+4vY7krCsngt8ooRFzo9TbMA@mail.gmail.com \
--to=dmoncayo@gmail.com \
--cc=13548@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.