本文整理汇总了C++中Pos::IsPosFree方法的典型用法代码示例。如果您正苦于以下问题:C++ Pos::IsPosFree方法的具体用法?C++ Pos::IsPosFree怎么用?C++ Pos::IsPosFree使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pos
的用法示例。
在下文中一共展示了Pos::IsPosFree方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessIt
//.........这里部分代码省略.........
sprintf(szCriptograma, "%03d%s", strlen(mensaje_price->GetField(34)), mensaje_price->GetField(34));
mensaje_iso->PutField(55, szCriptograma);
}
sprintf(szVersionEMV, "%03d%s", strlen(mensaje_price->GetField(35)), mensaje_price->GetField(35));
mensaje_iso->PutField(60, szVersionEMV);
mensaje_iso->PutField(19, "032");
strcat(szEMVProductList, "016 02100010040705");
/*szEMVProductList[3] = 0x0;
szEMVProductList[4] = 0x14;*/
szEMVProductList[3] = 1;
szEMVProductList[4] = 4;
/*if(strlen(mensaje_price->GetField(36)))
{
strcat(szEMVProductList, "");
} */
mensaje_iso->PutField(59, szEMVProductList);
///mensaje_iso->PutField(22, "052");
///mensaje_iso->PutField(23, mensaje_price->GetField(37));
//mensaje_iso->ClearField(12);
//mensaje_iso->ClearField(13);
///mensaje_iso->PutField(46, "0011");
/*if(!strlen(mensaje_price->GetField(30)))
{
mensaje_iso->PutField(46, "0011");
}*/
}
/* Verifica si hay transacciones en vuelo */
pos_ocup = P.IsPosFree(term_data.nro_ca, term_data.nro_suc, term_data.nro_caj);
if (pos_ocup)
{
TrxEnVuelo=0;
}
else
{
TrxEnVuelo=1;
}
/* Verificamos el estado del canal X.25 */
/* Modificacion: 3/2/98
Autor: Rolando Loustric
Objetivo: Se utiliza un flag interno para el estado del canal. Este flag
es utilizado antes del Insert y para resolver la peticion.
Antes se consultaba CACS.IsDown, y en caso de cambiar el
estado del canal en medio del evento se producia un error de
consistencia */
channel_down = CACS.IsDown(atoi(term_data.nro_ca));
/* Si el canal esta caido o hay transacciones en vuelo */
if (channel_down||TrxEnVuelo)
{
LogAlarm.Put(0, "PriceOn: Centro abajo [%d] Trx en vuelo [%d]. Autoriza localmente. CAut [%s]\n",
channel_down, TrxEnVuelo, term_data.nro_ca);
if (iTipoOperacion != T_PAGO)
{
/* Intenta aprobar localmente */
str_get_total opers_data;
str_get_limit limit_data;
示例2: ProcessIt
/*
+-----------------+------------------------------------------------------------+
| FUNCION | SndTrxOffLine::ProcessIt |
+-----------------+------------------------------------------------------------+
| DESCRIPCION | Proceso del objeto |
| | |
+-----------------+------------------------------------------------------------+
*/
int SndTrxOffLine::ProcessIt()
{
int len;
int ret;
int iCont;
str_sel_cadata term_data;
char msg_str[2000];
char aux_str[20];
trxOffHeap infoHeap;
DBInfoEnvio InfoEnvio;
str_fet_bu_trx trxOff;
int pos_ocup;
str_tarjeta data_tar;
char aux_str1[100];
DBTrxPk trxPk;
char idHeap[20];
char szFechaEnvio[16];
int iErrorBD;
int iNroCuotas;
/* Carga estructura para busqueda de transaccion offline */
strncpy(trxOff.cod_tar , CodTarjeta, sizeof(trxOff.cod_tar));
strncpy(trxOff.cod_est , "00" , sizeof(trxOff.cod_est));
strncpy(trxOff.nro_caj_ca, NroCajCa , sizeof(trxOff.nro_caj_ca));
strncpy(trxOff.nro_trx , NroTrx , sizeof(trxOff.nro_trx));
trxOff.nro_caj_ca[sizeof(trxOff.nro_caj_ca)-1]='\0';
trxOff.cod_tar [sizeof(trxOff.cod_tar) -1]='\0';
trxOff.cod_est [sizeof(trxOff.cod_est) -1]='\0';
trxOff.nro_trx [sizeof(trxOff.nro_trx) -1]='\0';
/* Busca en BD una transaccion offline */
LogAlarm.Put(0, "TrxOff: Lee offline [%s] [%s] [%s] [%s]\n", trxOff.nro_caj_ca, trxOff.cod_tar, trxOff.cod_est, trxOff.nro_trx);
ret=DBGetNextTrx(&trxOff, &iErrorBD);
if (ret!=OK)
{
LogAlarm.Put( 0, "TrxOff: Retorno de recuperacion de offline:%d Errno:%d\n", ret, iErrorBD);
EnviarMsg(orig_pid, "ERROR", 5);
return OK;
}
//LogAlarm.Put(0, "TrxOff: Rowid a enviar [%s]\n",trxOff.rowid);
/* Obtiene datos del centro autorizador */
LogAlarm.Put(5, "TrxOff: Obtiene codigo de centro\n");
strcpy(data_tar.cod_tar, trxOff.cod_tar);
ret = ObtCA(&data_tar);
if (ret!=OK)
{
LogAlarm.Put(0, "TrxOff: ERROR al obtener CA. Tar:[%s]\n", trxOff.cod_tar);
EnviarMsg(orig_pid, "ERROR", 5);
return OK;
}
/* Verifica si la caja esta libre */
strcpy(term_data.nro_caj, trxOff.nro_caj);
pos_ocup = P.IsPosFree(data_tar.nro_ca, trxOff.nro_suc, trxOff.nro_caj);
if (pos_ocup)
{
/* Marca la caja como ocupada */
ret = P.SetPosBusy(data_tar.nro_ca, trxOff.nro_suc, trxOff.nro_caj);
if (ret!=OK)
{
LogAlarm.Put(0, "TrxOff: ERROR al setear caja como ocupada\n");
}
}
else
{
/* Retorna envio de caja bloqueada */
LogAlarm.Put(0, "TrxOff: ERROR. Caja bloqueada\n");
EnviarMsg(orig_pid, "BLOCK", 5);
return NOOK;
}
/* Arma el mensaje base de acuerdo al codigo de transaccion */
switch (atoi(trxOff.cod_trx))
{
case T_VENT:
IsoMsg=new Iso_Msg(TYPE_VISA_VENTA_LOCAL);
break;
case T_DEVO:
IsoMsg=new Iso_Msg(TYPE_VISA_DEVOL_LOCAL);
break;
case T_PAGO:
IsoMsg=new Iso_Msg(TYPE_VISA_VENTA_LOCAL);
sprintf(aux_str1, "%06d", OPCODE_VISA_PAGO_RESUMEN);
IsoMsg->PutField(3, aux_str1);
break;
case T_DEVP:
IsoMsg=new Iso_Msg(TYPE_VISA_DEVOL_LOCAL);
sprintf(aux_str1, "%06d", OPCODE_VISA_DEVO_RESUMEN);
IsoMsg->PutField(3, aux_str1);
break;
default: /* Tipo de transaccion desconocida */
//.........这里部分代码省略.........