Fork: recalc - c
Embed
You can embed this paste into a blog or website with this code:
<iframe class="codetidy" type="text/html" width="100%" src="http://codetidy.com/paste/embed/176" frameborder="0"></iframe>
void CSPDHProcessor
::RecalcTotals( TOTALS
* ptgTotals
)
{
LOG_ENTER_FUNCTION
(LOGGER_NAME
, "CSPDHProcessor::RecalcTotals");
//***************************************************************************
int signacher
= 1;
BATCHRECORD br
;
int ret
= 0;
memset( ptgTotals
, 0, sizeof(TOTALS
) );
//***************************************************************************
// Batch upload of all not sent to host transaction
//***************************************************************************
if ( !m_ptrPosDb
->getDBBatch
().
OpenBatchScrollCursorTotals(m_sTid
, m_iIdHost
)) 
{
LOG_PRINTF
("RecalcTotals: OpenBatchScrollCursor, %s", m_ptrPosDb
->getDBBatch
().
GetLastErrorMessage());
LOG_ERROR
(LOGGER_NAME
);
return;
}
while ((ret
=m_ptrPosDb
->getDBBatch
().
FetchRowByScrollCursor(&br
)) == 0)
{
// TODO: tole je itak del queryja
if ( br.
CurrentTransaction.
InvoiceNumber == 0 )
continue;
// TODO: tole je del queryja
if ( br.
tgFlags.
fFlags.
IsNotCompleted )
continue;
if(br.
TransactionStatus != TransactionApproved
&& br.
TransactionStatus != TransactionOfflineApproved
)
continue;
signacher
= 1;
if ( br.
tgFlags.
fFlags.
IsReversal )
signacher
= -1;
TRANSACTION_TT_DATA
* pCurrentTransaction
= GetTransactionSpec
( br.
CurrentTransaction.
TransactionType, br.
CurrentTransaction.
TransactionSubType );
if ( NULL
!= pCurrentTransaction
)
{
switch(pCurrentTransaction
->TotalsType
)
{
case TOTALS_DEBIT
:
{
ptgTotals
->db_amount
+=br.
Amount1*signacher
;
ptgTotals
->db_count
+=signacher
;
break;
}
case TOTALS_CREDIT
:
{
ptgTotals
->cr_amount
+=br.
Amount1*signacher
;
ptgTotals
->cr_count
+=signacher
;
break;
}
case TOTALS_ADJ_DEBIT
:
{
ptgTotals
->db_amount
+=br.
Amount3*signacher
;
ptgTotals
->db_count
+=signacher
;
ptgTotals
->ad_amount
+= br.
Amount1*signacher
;
ptgTotals
->ad_count
+=signacher
;
break;
}
case TOTALS_ADJ_CREDIT
:
{
ptgTotals
->cr_amount
+=br.
Amount3*signacher
;
ptgTotals
->cr_count
+=signacher
;
ptgTotals
->ad_amount
-= br.
Amount1*signacher
;
ptgTotals
->ad_count
+=signacher
;
break;
}
default:
LOG_PRINTF
("Unknown totals type, %d", pCurrentTransaction
->TotalsType
);
LOG_ERROR
(LOGGER_NAME
);
break;
}
}
}
if (ret
==-1)
{
LOG_PRINTF
("RecalcTotals: Fetch, %s", m_ptrPosDb
->getDBBatch
().
GetLastErrorMessage());
LOG_ERROR
(LOGGER_NAME
);
}
m_ptrPosDb
->getDBBatch
().
CloseBatchScrollCursor();
}
TRANSACTION_TT_DATA m_SPDH_DATA
[]={
{TT_Sale
, TST_Online
, TOTALS_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "00", TXN_NEXT
, 1, "BDGPSabhq"},
{TT_Sale
, TST_Offline
, TOTALS_DEBIT
, TXN_FINAN
, TXN_FORCED
, "00", TXN_NEXT
, 0, "BDFPSahq"},
{TT_Sale
, TST_OfflineDecline
, TOTALS_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "00", TXN_NEXT
, 1, "BDGPSabhq"}, // EMV ADDED FOR DECLINE SUPPORT
{TT_Preauth
, TST_Online
, NO_TOTALS
, TXN_FINAN
, TXN_ONLINE
, "01", TXN_NEXT
, 0, "BPSahq"},
{TT_PreauthComplete
, TST_Offline
, TOTALS_DEBIT
, TXN_FINAN
, TXN_FORCED
, "02", TXN_NEXT
, 0, "BDFPSahiq"},
{TT_PreauthComplete
, TST_ForcePostOnline
, TOTALS_DEBIT
, TXN_FINAN
, TXN_FORCED
, "02", TXN_NEXT
, 0, "BDFPSahiq"},
{TT_PreauthComplete
, TST_Online
, TOTALS_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "02", TXN_NEXT
, 1, "BDFPSahiq"},
{TT_MailPhone
, TST_Online
, TOTALS_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "03", TXN_NEXT
, 1, "BDPSahq6"},
{TT_Refund
, TST_Offline
, TOTALS_CREDIT
, TXN_FINAN
, TXN_FORCED
, "04", TXN_NEXT
, 0, "BFGPSahq"},
{TT_Refund
, TST_ForcePostOnline
, TOTALS_CREDIT
, TXN_FINAN
, TXN_FORCED
, "04", TXN_NEXT
, 0, "BFGPSahq"},
{TT_Refund
, TST_Online
, TOTALS_CREDIT
, TXN_FINAN
, TXN_ONLINE
, "04", TXN_NEXT
, 0, "BGPSahq"},
{TT_Cash
, TST_Online
, TOTALS_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "05", TXN_NEXT
, 1, "BDGPSabhq"},
{TT_Cash
, TST_Offline
, TOTALS_DEBIT
, TXN_FINAN
, TXN_FORCED
, "05", TXN_NEXT
, 0, "BDFPSahq"},
{TT_Tip
, TST_Offline
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_FORCED
, "11", TXN_NEXT
, 0, "BCFPThq"},
{TT_Tip
, TST_ForcePostOnline
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_FORCED
, "11", TXN_NEXT
, 0, "BCFPThq"},
{TT_Tip
, TST_Online
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "11", TXN_NEXT
, 0, "BCPTbhq"},
{TT_AdjustSale
, TST_Offline
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_FORCED
, "11", TXN_NEXT
, 0, "BCFPThq"},
{TT_AdjustSale
, TST_ForcePostOnline
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_FORCED
, "11", TXN_NEXT
, 0, "BCFPThq"},
{TT_AdjustSale
, TST_Online
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "11", TXN_NEXT
, 0, "BCPTbhq"},
{TT_AdjustRefund
, TST_Offline
, TOTALS_ADJ_CREDIT
, TXN_FINAN
, TXN_FORCED
, "12", TXN_NEXT
, 0, "BCFPThq"},
{TT_AdjustRefund
, TST_ForcePostOnline
, TOTALS_ADJ_CREDIT
, TXN_FINAN
, TXN_FORCED
, "12", TXN_NEXT
, 0, "BCFPThq"},
{TT_AdjustRefund
, TST_Online
, TOTALS_ADJ_CREDIT
, TXN_FINAN
, TXN_ONLINE
, "12", TXN_NEXT
, 0, "BCPTbhq"},
{TT_AdjustCash
, TST_Offline
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_FORCED
, "13", TXN_NEXT
, 0, "BCFPTbhq"},
{TT_AdjustCash
, TST_ForcePostOnline
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_FORCED
, "13", TXN_NEXT
, 0, "BCFPTbhq"},
{TT_AdjustCash
, TST_Online
, TOTALS_ADJ_DEBIT
, TXN_FINAN
, TXN_ONLINE
, "13", TXN_NEXT
, 0, "BCPTbhq"},
{TT_BatchUpload
, TST_Online
, BATCH_TOTALS
, TXN_ADMIN
, TXN_ONLINE
, "60", TXN_NEXT
, 0, "hl"},
{TT_AutoBatchUpload
, TST_Online
, BATCH_TOTALS
, TXN_ADMIN
, TXN_ONLINE
, "60", TXN_NEXT
, 0, "hl"},
{TT_ClearBatch
, TST_Offline
, CLEAR_TOTALS
, TXN_ADMIN
, TXN_FORCED
, "99", TXN_NEXT
, 0, ""},
{TT_Logon
, TST_Online
, NO_TOTALS
, TXN_ADMIN
, TXN_ONLINE
, "50", TXN_NEXT
, 0, "h"},
{TT_Logoff
, TST_Online
, NO_TOTALS
, TXN_ADMIN
, TXN_ONLINE
, "51", TXN_NEXT
, 0, "h"},
{TT_Handshake
, TST_Online
, NO_TOTALS
, TXN_ADMIN
, TXN_ONLINE
, "95", TXN_NEXT
, 0, "h"},
};