int Model_Splittransaction::update(const Data_Set& rows, int transactionID)
{

    Data_Set split = instance().find(TRANSID(transactionID));
    for (const auto& split_item : split)
    {
        instance().remove(split_item.SPLITTRANSID);
    }

    if (!rows.empty())
    {
        Data_Set split_items;
        for (const auto &item : rows)
        {
            Data *split_item = instance().create();
            split_item->TRANSID = transactionID;
            split_item->SPLITTRANSAMOUNT = item.SPLITTRANSAMOUNT;
            split_item->CATEGID = item.CATEGID;
            split_item->SUBCATEGID = item.SUBCATEGID;
            split_items.push_back(*split_item);
        }
        instance().save(split_items);
    }
    return rows.size();
}
Ejemplo n.º 2
0
/*====================================================================*/
int linkCommarea(DFHEIBLK *inDfheiptr,
                TraceParms* inTraceParms,
                CICSProgramDesc* pProgramDesc,
                Message* pRequestMessage,
                Message* pResponseMessage) {
    char* inputContent;
    dfheiptr = inDfheiptr;
    g_pTraceParms = inTraceParms;
    initLog(dfheiptr, inTraceParms);

    if (g_pTraceParms->traceMode == TRUE_CODE) {
       traceMessage(MODULE_NAME, "Entered linkCommarea");
    }

    if (OK_CODE != checkCommarea(pProgramDesc, pRequestMessage)) {
        return ERROR_CODE;
    }

    /* The commarea expected by the target program might be larger
     * than the content of the incoming message part. In this case,
     * we need to rebuild the commarea. */
    if (pProgramDesc->CICSLength >
              pRequestMessage->pParts->size.as_int) {
        reallocContent(pProgramDesc, pRequestMessage->pParts);
    }
    inputContent = pRequestMessage->pParts->content;

    /* COMMENT OUT UNLESS STORAGE DEBUGGING
    sprintf(g_traceMessage, "Storage before LINK PROGRAM(%s)",
          pProgramDesc->CICSProgram);
    traceMessage(MODULE_NAME, g_traceMessage);
    traceStorage(); */
    
     /*  Now link to CICS program and check for errors                */
    if (strlen(pProgramDesc->CICSSysID) == 0) {
        if (FALSE_CODE == pProgramDesc->CICSSyncOnReturn) {
            if (strlen(pProgramDesc->CICSTransID) == 0) {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            } else {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          TRANSID(pProgramDesc->CICSTransID)
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            }
        } else {
            if (strlen(pProgramDesc->CICSTransID) == 0) {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          SYNCONRETURN
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            } else {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          TRANSID(pProgramDesc->CICSTransID)
                          SYNCONRETURN
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            }
        }
    } else {
        if (FALSE_CODE == pProgramDesc->CICSSyncOnReturn) {
            if (strlen(pProgramDesc->CICSTransID) == 0) {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          SYSID(pProgramDesc->CICSSysID)
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            } else {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          SYSID(pProgramDesc->CICSSysID)
                          TRANSID(pProgramDesc->CICSTransID)
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            }
        } else {
            if (strlen(pProgramDesc->CICSTransID) == 0) {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          SYSID(pProgramDesc->CICSSysID)
                          SYNCONRETURN
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            } else {
                EXEC CICS LINK
                          PROGRAM(pProgramDesc->CICSProgram)
                          COMMAREA(inputContent)
                          LENGTH(pProgramDesc->CICSLength)
                          DATALENGTH(pProgramDesc->CICSDataLength)
                          SYSID(pProgramDesc->CICSSysID)
                          TRANSID(pProgramDesc->CICSTransID)
                          SYNCONRETURN
                          RESP(g_cicsResp) RESP2(g_cicsResp2);
            }
        }
    }

    if (g_cicsResp != DFHRESP(NORMAL)) {
        logCicsError(MODULE_NAME, "LINK COMMAREA",
                     g_cicsResp,g_cicsResp2);
        return ERROR_CODE;
    }

    /* COMMENT OUT UNLESS STORAGE DEBUGGING
    sprintf(g_traceMessage, "Storage after LINK PROGRAM(%s)",
          pProgramDesc->CICSProgram);
    traceMessage(MODULE_NAME, g_traceMessage);
    traceStorage(); */
    
    if (OK_CODE != formatCommareaResponse(
                   pProgramDesc, pRequestMessage, pResponseMessage)) {
        return ERROR_CODE;
    }

    if (g_pTraceParms->traceMode == TRUE_CODE) {
       traceMessage(MODULE_NAME, "Return from linkCommarea");
    }

    return OK_CODE;
}