EXPORT int update_abp_acct_code(ABP_DBHANDLE dbhandle, ABP_ACCT_CODE acct_code) { int retval, rowcount; Arb_connection *connection; if (WRONG_OBJ_TYPE(acct_code, ACCT_CODE)) return ABP_ARGERR; if (NotCustDbhandle(dbhandle)) return ABP_ARGERR; connection = dbhandle->cust_connection; ((ABP_ERR_DATA *)connection->user_data)->is_set = FALSE; /* The only updatable field is display_value--acg_tracking_id, acg_tracking_id_serv, and account_code are keys which must be set */ if (!IsSet(cmf_account_codes_acg_tracking_id,acct_code->cmf_account_codes_data)) { abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "acg_tracking_id"); return ABP_MISC_ERR; } if (IsNull(cmf_account_codes_acg_tracking_id_serv, acct_code->cmf_account_codes_data)) { abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "acg_tracking_id_serv"); return ABP_MISC_ERR; } if (IsNotSet(cmf_account_codes_acg_tracking_id_serv, acct_code->cmf_account_codes_data)) /*default it to current cust server id */ set_abp_acct_code_acg_tracking_id_serv(acct_code, dbhandle->cust_server_id); if (!IsSet(cmf_account_codes_account_code,acct_code->cmf_account_codes_data)) { abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "account_code"); return ABP_MISC_ERR; } if (IsNotSet(cmf_account_codes_display_value, acct_code->cmf_account_codes_data)) { /* Although display_value disallows null, we'll allow it. We'll give them a dberror rather than a misc.error */ abp_put_misc_message(connection, ABP_NO_FIELD_UPDATED, "acct_code"); return ABP_MISC_ERR; } if ((retval = abp_begin_transaction_inner(dbhandle, "abp_update_acct_code")) != ABP_STATUS_OK) return ABP_DBERR; if (update_cmf_account_codes(connection, acct_code->cmf_account_codes_data)==FAILURE) { retval = ABP_DBERR; goto rollback; } rowcount = arb_dbcount(connection); if (rowcount == 0) { abp_put_misc_message(connection, ABP_ROW_NOT_FOUND, "CMF_ACCOUNT_CODES"); retval = ABP_MISC_ERR; goto rollback; } if (rowcount >1) { abp_put_misc_message(connection, ABP_ROW_NOT_UNIQUE, "CMF_ACCOUNT_CODES"); retval = ABP_MISC_ERR; goto rollback; } return abp_commit_transaction_inner(dbhandle, "abp_update_acct_code"); rollback: abp_roll_back_transaction_inner(dbhandle, "abp_update_acct_code"); return retval; }
EXPORT int update_abp_acct_icb_rate(ABP_DBHANDLE dbhandle, ABP_ACCT_ICB_RATE acct_icb_rate) { int retval, rowcount; Arb_connection *connection; PRODUCT_RATE_OVERRIDE_DATA *cpod; if (WRONG_OBJ_TYPE(acct_icb_rate, ACCT_ICB_RATE)) return ABP_ARGERR; if (NotCustDbhandle(dbhandle)) return ABP_ARGERR; connection = dbhandle->cust_connection; ((ABP_ERR_DATA *)connection->user_data)->is_set = FALSE; cpod = acct_icb_rate->product_rate_override_data; /* Only three fields updatable are override_rate, currency_code and inactive_dt*/ if (!(IsSet(product_rate_override_override_rate,cpod)) && !(IsSet(product_rate_override_currency_code, cpod)) && IsNotSet(product_rate_override_inactive_dt,cpod)) { abp_put_misc_message(connection , ABP_NO_FIELD_UPDATED, "acct_icb_rate"); return ABP_MISC_ERR; } if ((retval = abp_begin_transaction_inner(dbhandle, "abp_update_acct_icb_rate")) != ABP_STATUS_OK) return ABP_DBERR; arb_setup_results(&proc_api_update_acct_icb_rate, ARB_TYPE_INT32, &rowcount); arb_setup_proc_exec(connection,&proc_api_update_acct_icb_rate, SQL_DEFER_EXECUTE, "tracking_id", cpod->tracking_id, ARG_NOT_NULL, "tracking_id_serv", cpod->tracking_id_serv, ARG_NOT_NULL, "override_rate", &(cpod->override_rate), IsSet(product_rate_override_override_rate, cpod) ? ARG_NOT_NULL : ARG_IS_NULL, "currency_code", cpod->currency_code, IsSet(product_rate_override_currency_code, cpod) ? ARG_NOT_NULL : ARG_IS_NULL, "start_dt", &(cpod->active_dt), ARG_NOT_NULL, "end_dt", &(cpod->inactive_dt), IsSet(product_rate_override_inactive_dt, cpod) ? ARG_NOT_NULL : ARG_IS_NULL, "update_end_dt_flag",IsNotSet(product_rate_override_inactive_dt, cpod) ? 0 : 1, ARG_NOT_NULL, NO_MORE_ARGS); while (arb_next_row(connection) == ARB_MORE_DATA) ; if (arb_query_status(connection) == FAILURE) { retval = ABP_DBERR; goto rollback; } if ((rowcount > 1) || (rowcount ==0)) { abp_put_misc_message(connection, rowcount ? ABP_ROW_NOT_UNIQUE : ABP_ROW_NOT_FOUND, "PRODUCT_RATE_OVERRIDE"); retval = ABP_MISC_ERR; goto rollback; } return abp_commit_transaction_inner(dbhandle, "abp_update_acct_icb_rate"); rollback: abp_roll_back_transaction_inner(dbhandle, "abp_update_acct_icb_rate"); return retval; }
Substyle::~Substyle() { if (IsNotSet()) return; if (IsCurrency()) delete AsCurrency(); else if (IsDate()) delete AsDate(); else if (IsDuration()) delete AsDuration(); else if (IsPercent()) delete AsPercent(); }
void Value::DeleteData() { if (IsNotSet()) return; if (IsDouble() || IsPercentage()) delete AsDouble(); else if (IsString()) delete AsString(); else if (IsDate()) delete AsDate(); else if (IsDuration()) delete AsDuration(); data_ = nullptr; type_ = ods::Type::NotSet; }
QString Value::toString() const { if (IsNotSet()) return QLatin1String(""); if (IsDouble() || IsPercentage()) return QString::number(*AsDouble()); if (IsString()) return *AsString(); if (IsDate()) return AsDate()->toString(Qt::ISODate); if (IsCurrency()) mtl_qline("Currency not supported yet"); if (IsDuration()) return AsDuration()->ToString(); return QLatin1String(""); }
void Value::CopyTo(ods::Value &v) { v.type_set(type_); if (IsNotSet()) return; if (IsDouble()) v.SetDouble(*AsDouble()); else if (IsString()) v.SetString(*AsString()); else if (IsCurrency()) v.SetCurrency(*AsCurrency()); else if (IsPercentage()) v.SetPercentage(*AsPercentage()); else if (IsDate()) v.SetDate(*AsDate()); else if (IsDuration()) v.SetDuration(*AsDuration()); else mtl_warn("Not implemented"); }
/* DENqa39707*/ EXPORT int update_abp_serv_inst_product_by_date(ABP_DBHANDLE dbhandle, ABP_SERV_INST_PRODUCT serv_inst_product, ABP_LOCSTR *a_effective_date) { int retval; PRODUCT_VIEW_DATA *pvd, *dpvd; PRODUCT_KEY_DATA *pkd; CUSTOMER_ID_EQUIP_MAP_DATA *cid; CUSTOMER_ID_ACCT_MAP_DATA *cida; Arb_connection *connection; ABP_SERV_INST_PRODUCT this_serv_inst_product; Arb_numeric view_id; if (NotCustDbhandle(dbhandle)) return ABP_ARGERR; connection = dbhandle->cust_connection; ((ABP_ERR_DATA *)connection->user_data)->is_set = FALSE; if (WRONG_OBJ_TYPE(serv_inst_product, SERV_INST_PRODUCT)) return ABP_ARGERR; pkd = serv_inst_product->product_key_data; pvd = serv_inst_product->product_view_data; cid = serv_inst_product->customer_id_equip_map_data; cida = serv_inst_product->customer_id_acct_map_data[0]; /* Error if the user tries to set component_id and prev_product_inactive_dt. */ if (IsSet (product_view_component_id, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "component_id"); return ABP_MISC_ERR; } if (IsSet (product_view_connect_reason, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "connect_reason"); return ABP_MISC_ERR; } if (IsSet (product_view_prev_product_inactive_dt, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "prev_end_dt"); return ABP_MISC_ERR; } /*DENqa13075, a product cannot be directly transferred, so parent_account_no and parent_subscr_no cannot be updated*/ /* if (get_abp_serv_inst_product_external_account_no(serv_inst_product, &a_external_id) == ABP_SET) { abp_put_misc_message (connection, ABP_RANGE_ERR, "external_account_no"); return ABP_MISC_ERR; }*/ /* Likewise for CUSTOMER_ID_EQUIP_MAP and subscr no */ /* if (get_abp_serv_inst_product_external_id(serv_inst_product, &a_external_id) == ABP_SET) { abp_put_misc_message (connection, ABP_RANGE_ERR, "external_id"); return ABP_MISC_ERR; }*/ /*DENqa13075, billing_account_no and open_item_id cannot be updated */ /* if (get_abp_serv_inst_product_external_account_no_bill_rc(serv_inst_product, &a_external_id) == ABP_SET) { abp_put_misc_message (connection, ABP_RANGE_ERR, "external_account_no_bill_rc"); return ABP_MISC_ERR; } if (IsSet(product_view_open_item_id, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "open_item_id"); return ABP_MISC_ERR; }*/ /* Check that tracking_id is set -- no update without tracking_id */ if (!(IsSet(product_key_tracking_id, pkd))) { abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "tracking_id"); return ABP_MISC_ERR; } set_product_view_tracking_id(pvd, pkd->tracking_id); if (IsNotSet(product_key_tracking_id_serv, pkd)) /* default this to current cust_server_id */ set_abp_serv_inst_product_tracking_id_serv(serv_inst_product, dbhandle->cust_server_id); if (IsNull(product_key_tracking_id_serv,pkd)) { /* If they take the trouble to null out tracking_id_serv, we spit at them*/ abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "tracking_id_serv"); return ABP_MISC_ERR; } set_product_view_tracking_id_serv(pvd, pkd->tracking_id_serv); this_serv_inst_product = new_abp_serv_inst_product(); if (this_serv_inst_product == NULL) return ABP_SYSERR; /* DENqa39707*/ retval = select_abp_serv_inst_product_by_date(dbhandle, pvd->tracking_id, pvd->tracking_id_serv, this_serv_inst_product, a_effective_date); if (retval<0) { delete_abp_serv_inst_product(this_serv_inst_product); return retval; } else if (retval == 0) { delete_abp_serv_inst_product(this_serv_inst_product); abp_put_misc_message(connection, ABP_ROW_NOT_FOUND, "PRODUCT_VIEW/CUSTOMRE_ID_EQUIP_MAP"); return ABP_MISC_ERR; } else if (retval > 1) { delete_abp_serv_inst_product(this_serv_inst_product); abp_put_misc_message(connection, ABP_ROW_NOT_UNIQUE, "PRODUCT_VIEW/CUSTOMRE_ID_EQUIP_MAP"); return ABP_MISC_ERR; } dpvd = this_serv_inst_product->product_view_data; /* Can't update has_product_keys, this field is managed by DB trigger */ Unset(product_view_has_product_keys, pvd); Unset(product_view_has_overrides, pvd); update_copy_product_view(dpvd, pvd); if (IsSet(product_view_product_active_dt, dpvd)) truncate_Arbdate(&(dpvd->product_active_dt)); if (IsSet(product_view_product_inactive_dt, dpvd)) truncate_Arbdate(&(dpvd->product_inactive_dt)); Unset(product_view_view_created_dt, dpvd); Unset(product_view_view_effective_dt, dpvd); Unset(product_view_intended_view_effective_dt, dpvd); Unset(product_view_chg_dt, dpvd); if ((retval = get_view_id(dbhandle, "PRODUCT_VIEW", dbhandle->cust_server_id, &view_id)) != ABP_STATUS_OK) { if (this_serv_inst_product != NULL) delete_abp_serv_inst_product(this_serv_inst_product); return retval; } set_product_view_prev_view_id(dpvd, &(dpvd->view_id)); set_product_view_view_id(dpvd, &view_id); set_product_view_view_status(dpvd, CURRENT_STATUS); set_product_view_chg_who(dpvd, "API"); if ((retval = abp_begin_transaction_inner(dbhandle, "abp_update_serv_inst_product")) != ABP_STATUS_OK) { if (this_serv_inst_product != NULL) delete_abp_serv_inst_product(this_serv_inst_product); return retval; } if (insert_into_product_view(connection, dpvd) == FAILURE) retval = ABP_DBERR; if (arb_query_status(connection) != SUCCESS) retval = ABP_DBERR; if (retval == ABP_STATUS_OK){ if ( IsSet(product_key_converted, pkd) || IsSet(product_key_arch_flag, pkd)) { if (update_product_key(connection, pkd) == FAILURE) retval = ABP_DBERR; if (arb_query_status(connection) != SUCCESS) retval = ABP_DBERR; } } if (retval == ABP_STATUS_OK) retval = abp_commit_transaction_inner(dbhandle, "abp_update_serv_inst_product"); else abp_roll_back_transaction_inner(dbhandle, "abp_update_serv_inst_product"); if (this_serv_inst_product != NULL) delete_abp_serv_inst_product(this_serv_inst_product); return retval; }
EXPORT int update_abp_acct_product_by_date(ABP_DBHANDLE dbhandle, ABP_ACCT_PRODUCT acct_product, ABP_LOCSTR *a_effective_date) { int retval; Arb_connection *connection; PRODUCT_VIEW_DATA *pvd, *dpvd; PRODUCT_KEY_DATA *pkd; CUSTOMER_ID_ACCT_MAP_DATA *cid, *cid_bill_rc; ABP_ACCT_PRODUCT orig_acct_product = NULL; short default_xid_type = 0; int tracking_id; unsigned char tracking_id_serv; Arb_numeric view_id; if (WRONG_OBJ_TYPE(acct_product, ACCT_PRODUCT)) return ABP_ARGERR; if (NotCustDbhandle(dbhandle)) return ABP_ARGERR; connection = dbhandle->cust_connection; ((ABP_ERR_DATA *)connection->user_data)->is_set = FALSE; pvd = acct_product->product_view_data; pkd = acct_product->product_key_data; cid = acct_product->customer_id_acct_map_data[0]; cid_bill_rc = acct_product->customer_id_acct_map_data[1]; if (IsSet(product_view_connect_reason, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "connect_reason"); return ABP_MISC_ERR; } if (IsSet(product_view_prev_product_inactive_dt, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "prev_end_dt"); return ABP_MISC_ERR; } /* This is probably not a good idea, but we let them change account_no or account_no_bill_rc---If this is improper, the database should be enforcing the data integrity, not the API */ /*DENqa13075, a product cannot be directly transferred, so parent_account_no cannot be updated*/ /* if (IsSet(customer_id_acct_map_external_id, cid)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "external_id"); return ABP_MISC_ERR; }*/ /* N.B. If external_id or external_id_account_no_bill_rc are not set then the account number fields will be ignored. This is true regardless of the value specified for external_id_type or external_id_type_bill_rc */ /*DENqa13075, external_id_account_no_bill_rc and open_item_id cannot be updated no longer*/ /* if (IsSet(customer_id_acct_map_external_id, cid_bill_rc)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "external_id_account_no_bill_rc"); return ABP_MISC_ERR; } if (IsSet(product_view_open_item_id, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "open_item_id"); return ABP_MISC_ERR; }*/ /* Check that tracking_id is set -- no update without tracking_id */ if (!(IsSet(product_key_tracking_id, pkd))) { abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "tracking_id"); return ABP_MISC_ERR; } /*set_product_view_tracking_id(pvd,pkd->tracking_id);*/ if (IsNotSet(product_key_tracking_id_serv, pkd)) /* default this to current cust_server_id */ set_abp_acct_product_tracking_id_serv(acct_product, dbhandle->cust_server_id); if (IsNull(product_key_tracking_id_serv,pkd)) { /* If they take the trouble to null out tracking_id_serv, we spit at them */ abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "tracking_id_serv"); return ABP_MISC_ERR; } /*set_product_view_tracking_id_serv(pvd, pkd->tracking_id_serv);*/ /* Error if the user tries to set component_id. */ if (IsSet (product_view_component_id, pvd)) { abp_put_misc_message (connection, ABP_RANGE_ERR, "component_id"); return ABP_MISC_ERR; } orig_acct_product = new_abp_acct_product(); if (orig_acct_product == NULL) return ABP_SYSERR; retval = select_abp_acct_product_by_date(dbhandle,pvd->tracking_id,pvd->tracking_id_serv, orig_acct_product, a_effective_date); if (retval < 0) { delete_abp_acct_product(orig_acct_product); return retval; } if (retval ==0) { delete_abp_acct_product(orig_acct_product); abp_put_misc_message(connection,ABP_ROW_NOT_FOUND, "PRODUCT_VIEW"); return ABP_MISC_ERR; } if (retval > 1) { delete_abp_acct_product(orig_acct_product); abp_put_misc_message(connection,ABP_ROW_NOT_UNIQUE, "PRODUCT_VIEW"); return ABP_MISC_ERR; } dpvd = orig_acct_product->product_view_data; /* Can't update sales_channel_id */ /* Unset(cmf_products_sales_channel_id, cmfp); */ /* Can't update has_product_keys,has_overrides, this field is managed by DB trigger */ Unset(product_view_has_product_keys, pvd); Unset(product_view_has_overrides, pvd); get_abp_acct_product_tracking_id(acct_product, &tracking_id); get_abp_acct_product_tracking_id_serv(acct_product, &tracking_id_serv); Unset(product_view_tracking_id, pvd); Unset(product_view_tracking_id_serv, pvd); Unset(product_key_tracking_id, pkd); Unset(product_key_tracking_id_serv, pkd); /* Check that some field is set or NULL in cmf_products_data --otherwise raise a misc error and return */ if (!HasSetFields(acct_product,product_view) && !HasSetFields(acct_product,product_key)) { if (orig_acct_product != NULL) delete_abp_acct_product(orig_acct_product); abp_put_misc_message(connection, ABP_NO_FIELD_UPDATED, "acct_product"); return ABP_MISC_ERR; } /* Put a transaction here to force a rollback in case row is not unique */ if ((retval = abp_begin_transaction_inner(dbhandle, "abp_update_acct_product")) != ABP_STATUS_OK) { if (orig_acct_product != NULL) delete_abp_acct_product(orig_acct_product); return retval; } if (HasSetFields(acct_product,product_view)) { set_abp_acct_product_tracking_id(acct_product, tracking_id); set_abp_acct_product_tracking_id_serv(acct_product, tracking_id_serv); update_copy_product_view(dpvd, pvd); Unset(product_view_view_created_dt, dpvd); Unset(product_view_view_effective_dt, dpvd); Unset(product_view_intended_view_effective_dt, dpvd); Unset(product_view_chg_dt, dpvd); if ((retval = get_view_id(dbhandle, "PRODUCT_VIEW", dbhandle->cust_server_id, &view_id)) != ABP_STATUS_OK) { if (orig_acct_product != NULL) delete_abp_acct_product(orig_acct_product); return retval; } set_product_view_prev_view_id(dpvd, &(dpvd->view_id)); set_product_view_view_id(dpvd, &view_id); set_product_view_view_status(dpvd, CURRENT_STATUS); set_product_view_chg_who(dpvd, "API"); if (insert_into_product_view(connection, dpvd) == FAILURE) retval = ABP_DBERR; if (arb_query_status(connection) != SUCCESS) retval = ABP_DBERR; } if (retval == ABP_STATUS_OK){ if ( IsSet(product_key_converted, pkd) || IsSet(product_key_arch_flag, pkd)) { set_abp_acct_product_tracking_id(acct_product, tracking_id); set_abp_acct_product_tracking_id_serv(acct_product, tracking_id_serv); if (update_product_key(connection, pkd) == FAILURE) retval = ABP_DBERR; if (arb_query_status(connection) != SUCCESS) retval = ABP_DBERR; } } if (retval != ABP_STATUS_OK) { abp_roll_back_transaction_inner(dbhandle, "abp_update_acct_product"); } else retval = abp_commit_transaction_inner(dbhandle, "abp_update_acct_product"); if (orig_acct_product != NULL) delete_abp_acct_product(orig_acct_product); return retval; }
static int really_list_abp_tax_icb_rates(ABP_DBHANDLE dbhandle, ABP_TAX_ICB_RATE keys, ABP_TAX_ICB_RATE *list, int active_only, char *pstrOrder, char *szeffective_date) { int status, use_where = TRUE, retval = 0; Arb_connection *dbcon; ABP_TAX_ICB_RATE databuf = new_abp_tax_icb_rate(), new_tax_icb_rate; ABP_TAX_ICB_RATE lb = NULL; ABP_TAX_ICB_RATE ub = NULL; int nfields; int inb, j, offset; short *nbbuf, xid_type; Arb_date effective_date; if (databuf == NULL) return ABP_SYSERR; if (keys && WRONG_OBJ_TYPE(keys, API_TAX_ICB_RATE)) { delete_abp_tax_icb_rate(databuf); return ABP_ARGERR; } if ((szeffective_date != NULL) && (*szeffective_date != '\0')) api_string_to_Arbdate(szeffective_date, &effective_date, 0); if (keys) { lb = keys; ub = next_abp_tax_icb_rate(lb); if (ub && WRONG_OBJ_TYPE(ub, API_TAX_ICB_RATE)) { delete_abp_tax_icb_rate(databuf); return ABP_ARGERR; } if (ub == NULL) { ub = lb; } else if (next_abp_tax_icb_rate(ub) != NULL) { delete_abp_tax_icb_rate(databuf); return ABP_ARGERR; } } if (NotCustDbhandle(dbhandle)) { delete_abp_tax_icb_rate(databuf); return ABP_ARGERR; } dbcon = dbhandle->cust_connection; nfields = sizeof(databuf->tax_univ_icb_data->bitfields) + sizeof(databuf->customer_id_acct_map_data->bitfields); nbbuf = (short *)calloc(nfields, sizeof(short)); if (nbbuf == NULL) { delete_abp_tax_icb_rate(databuf); return ABP_SYSERR; } if ((retval = find_default_external_id_type(dbcon, &xid_type)) != ABP_STATUS_OK) return retval; arb_dbfcmd(dbcon, "SELECT * from "); arb_dbfcmd(dbcon, "TAX_UNIV_ICB"); arb_dbfcmd(dbcon, ", CUSTOMER_ID_ACCT_MAP"); arb_dbfcmd(dbcon, " WHERE TAX_UNIV_ICB.account_no = CUSTOMER_ID_ACCT_MAP.account_no" ); if (!keys || (IsNotSet(customer_id_acct_map_external_id_type, lb->customer_id_acct_map_data) && IsNotSet(customer_id_acct_map_external_id_type, ub->customer_id_acct_map_data))) { arb_dbfcmd(dbcon, " AND CUSTOMER_ID_ACCT_MAP.external_id_type = %d", xid_type); } if ((szeffective_date != NULL) && (*szeffective_date != '\0')) { arb_dbfcmd(dbcon, " AND CUSTOMER_ID_ACCT_MAP.active_date <= %t AND (CUSTOMER_ID_ACCT_MAP.inactive_date is NULL OR CUSTOMER_ID_ACCT_MAP.inactive_date > %t) ", &effective_date, &effective_date); } else { arb_dbfcmd(dbcon, " AND CUSTOMER_ID_ACCT_MAP.active_date <= %s AND (CUSTOMER_ID_ACCT_MAP.inactive_date is NULL OR CUSTOMER_ID_ACCT_MAP.inactive_date > %s) ", arb_server_getdate(), arb_server_getdate()); } if (active_only) { arb_dbfcmd(dbcon, " AND TAX_UNIV_ICB.active_date <= %s AND (TAX_UNIV_ICB.inactive_date is NULL OR TAX_UNIV_ICB.inactive_date > %s) ", arb_server_getdate(), arb_server_getdate()); } if (keys) { int use_where = FALSE; if (IsNull(tax_univ_icb_tui_id, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_tui_id, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tui_id is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_tui_id, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_tui_id, ub->tax_univ_icb_data) && lb->tax_univ_icb_data->tui_id == ub->tax_univ_icb_data->tui_id) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tui_id = %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->tui_id); use_where = FALSE; } else { if (IsSet(tax_univ_icb_tui_id, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tui_id >= %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->tui_id); use_where = FALSE; } if (IsSet(tax_univ_icb_tui_id, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tui_id < %d", use_where ? "WHERE" : "AND", ub->tax_univ_icb_data->tui_id); use_where = FALSE; } } if (IsNull(tax_univ_icb_tax_pkg_inst_id, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_tax_pkg_inst_id, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_pkg_inst_id is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_tax_pkg_inst_id, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_tax_pkg_inst_id, ub->tax_univ_icb_data) && lb->tax_univ_icb_data->tax_pkg_inst_id == ub->tax_univ_icb_data->tax_pkg_inst_id) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_pkg_inst_id = %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->tax_pkg_inst_id); use_where = FALSE; } else { if (IsSet(tax_univ_icb_tax_pkg_inst_id, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_pkg_inst_id >= %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->tax_pkg_inst_id); use_where = FALSE; } if (IsSet(tax_univ_icb_tax_pkg_inst_id, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_pkg_inst_id < %d", use_where ? "WHERE" : "AND", ub->tax_univ_icb_data->tax_pkg_inst_id); use_where = FALSE; } } if (IsNull(tax_univ_icb_tax_class, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_tax_class, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_class is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_tax_class, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_tax_class, ub->tax_univ_icb_data) && lb->tax_univ_icb_data->tax_class == ub->tax_univ_icb_data->tax_class) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_class = %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->tax_class); use_where = FALSE; } else { if (IsSet(tax_univ_icb_tax_class, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_class >= %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->tax_class); use_where = FALSE; } if (IsSet(tax_univ_icb_tax_class, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.tax_class < %d", use_where ? "WHERE" : "AND", ub->tax_univ_icb_data->tax_class); use_where = FALSE; } } if (IsNull(tax_univ_icb_account_no, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_account_no, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.account_no is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_account_no, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_account_no, ub->tax_univ_icb_data) && lb->tax_univ_icb_data->account_no == ub->tax_univ_icb_data->account_no) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.account_no = %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->account_no); use_where = FALSE; } else { if (IsSet(tax_univ_icb_account_no, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.account_no >= %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->account_no); use_where = FALSE; } if (IsSet(tax_univ_icb_account_no, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.account_no < %d", use_where ? "WHERE" : "AND", ub->tax_univ_icb_data->account_no); use_where = FALSE; } } if (IsNull(tax_univ_icb_active_date, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_active_date, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.active_date is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_active_date, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_active_date, ub->tax_univ_icb_data) && Arbdate_compare(&lb->tax_univ_icb_data->active_date, &ub->tax_univ_icb_data->active_date) == 0) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.active_date = %t", use_where ? "WHERE" : "AND", &lb->tax_univ_icb_data->active_date); use_where = FALSE; } else { if (IsSet(tax_univ_icb_active_date, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.active_date >= %t", use_where ? "WHERE" : "AND", &lb->tax_univ_icb_data->active_date); use_where = FALSE; } if (IsSet(tax_univ_icb_active_date, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.active_date < %t", use_where ? "WHERE" : "AND", &ub->tax_univ_icb_data->active_date); use_where = FALSE; } } if (IsNull(tax_univ_icb_inactive_date, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_inactive_date, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.inactive_date is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_inactive_date, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_inactive_date, ub->tax_univ_icb_data) && Arbdate_compare(&lb->tax_univ_icb_data->inactive_date, &ub->tax_univ_icb_data->inactive_date) == 0) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.inactive_date = %t", use_where ? "WHERE" : "AND", &lb->tax_univ_icb_data->inactive_date); use_where = FALSE; } else { if (IsSet(tax_univ_icb_inactive_date, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.inactive_date >= %t", use_where ? "WHERE" : "AND", &lb->tax_univ_icb_data->inactive_date); use_where = FALSE; } if (IsSet(tax_univ_icb_inactive_date, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.inactive_date < %t", use_where ? "WHERE" : "AND", &ub->tax_univ_icb_data->inactive_date); use_where = FALSE; } } if (IsNull(tax_univ_icb_rate, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_rate, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.rate is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_rate, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_rate, ub->tax_univ_icb_data) && lb->tax_univ_icb_data->rate == ub->tax_univ_icb_data->rate) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.rate = %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->rate); use_where = FALSE; } else { if (IsSet(tax_univ_icb_rate, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.rate >= %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->rate); use_where = FALSE; } if (IsSet(tax_univ_icb_rate, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.rate < %d", use_where ? "WHERE" : "AND", ub->tax_univ_icb_data->rate); use_where = FALSE; } } if (IsNull(tax_univ_icb_implied_decimals, lb->tax_univ_icb_data) || IsNull(tax_univ_icb_implied_decimals, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.implied_decimals is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(tax_univ_icb_implied_decimals, lb->tax_univ_icb_data) && IsSet(tax_univ_icb_implied_decimals, ub->tax_univ_icb_data) && lb->tax_univ_icb_data->implied_decimals == ub->tax_univ_icb_data->implied_decimals) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.implied_decimals = %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->implied_decimals); use_where = FALSE; } else { if (IsSet(tax_univ_icb_implied_decimals, lb->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.implied_decimals >= %d", use_where ? "WHERE" : "AND", lb->tax_univ_icb_data->implied_decimals); use_where = FALSE; } if (IsSet(tax_univ_icb_implied_decimals, ub->tax_univ_icb_data)) { arb_dbfcmd(dbcon, " %s TAX_UNIV_ICB.implied_decimals < %d", use_where ? "WHERE" : "AND", ub->tax_univ_icb_data->implied_decimals); use_where = FALSE; } } if (IsNull(customer_id_acct_map_external_id, lb->customer_id_acct_map_data) || IsNull(customer_id_acct_map_external_id, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(customer_id_acct_map_external_id, lb->customer_id_acct_map_data) && IsSet(customer_id_acct_map_external_id, ub->customer_id_acct_map_data) && strcmp(lb->customer_id_acct_map_data->external_id, ub->customer_id_acct_map_data->external_id) == 0) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id = '%s'", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->external_id); use_where = FALSE; } else { if (IsSet(customer_id_acct_map_external_id, lb->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id >= '%s'", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->external_id); use_where = FALSE; } if (IsSet(customer_id_acct_map_external_id, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id < '%s'", use_where ? "WHERE" : "AND", ub->customer_id_acct_map_data->external_id); use_where = FALSE; } } if (IsNull(customer_id_acct_map_account_no, lb->customer_id_acct_map_data) || IsNull(customer_id_acct_map_account_no, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.account_no is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(customer_id_acct_map_account_no, lb->customer_id_acct_map_data) && IsSet(customer_id_acct_map_account_no, ub->customer_id_acct_map_data) && lb->customer_id_acct_map_data->account_no == ub->customer_id_acct_map_data->account_no) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.account_no = %d", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->account_no); use_where = FALSE; } else { if (IsSet(customer_id_acct_map_account_no, lb->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.account_no >= %d", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->account_no); use_where = FALSE; } if (IsSet(customer_id_acct_map_account_no, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.account_no < %d", use_where ? "WHERE" : "AND", ub->customer_id_acct_map_data->account_no); use_where = FALSE; } } if (IsNull(customer_id_acct_map_external_id_type, lb->customer_id_acct_map_data) || IsNull(customer_id_acct_map_external_id_type, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id_type is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(customer_id_acct_map_external_id_type, lb->customer_id_acct_map_data) && IsSet(customer_id_acct_map_external_id_type, ub->customer_id_acct_map_data) && lb->customer_id_acct_map_data->external_id_type == ub->customer_id_acct_map_data->external_id_type) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id_type = %d", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->external_id_type); use_where = FALSE; } else { if (IsSet(customer_id_acct_map_external_id_type, lb->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id_type >= %d", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->external_id_type); use_where = FALSE; } if (IsSet(customer_id_acct_map_external_id_type, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.external_id_type < %d", use_where ? "WHERE" : "AND", ub->customer_id_acct_map_data->external_id_type); use_where = FALSE; } } if (IsNull(customer_id_acct_map_is_current, lb->customer_id_acct_map_data) || IsNull(customer_id_acct_map_is_current, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.is_current is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(customer_id_acct_map_is_current, lb->customer_id_acct_map_data) && IsSet(customer_id_acct_map_is_current, ub->customer_id_acct_map_data) && lb->customer_id_acct_map_data->is_current == ub->customer_id_acct_map_data->is_current) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.is_current = %d", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->is_current); use_where = FALSE; } else { if (IsSet(customer_id_acct_map_is_current, lb->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.is_current >= %d", use_where ? "WHERE" : "AND", lb->customer_id_acct_map_data->is_current); use_where = FALSE; } if (IsSet(customer_id_acct_map_is_current, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.is_current < %d", use_where ? "WHERE" : "AND", ub->customer_id_acct_map_data->is_current); use_where = FALSE; } } if (IsNull(customer_id_acct_map_active_date, lb->customer_id_acct_map_data) || IsNull(customer_id_acct_map_active_date, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.active_date is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(customer_id_acct_map_active_date, lb->customer_id_acct_map_data) && IsSet(customer_id_acct_map_active_date, ub->customer_id_acct_map_data) && Arbdate_compare(&lb->customer_id_acct_map_data->active_date, &ub->customer_id_acct_map_data->active_date) == 0) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.active_date = %t", use_where ? "WHERE" : "AND", &lb->customer_id_acct_map_data->active_date); use_where = FALSE; } else { if (IsSet(customer_id_acct_map_active_date, lb->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.active_date >= %t", use_where ? "WHERE" : "AND", &lb->customer_id_acct_map_data->active_date); use_where = FALSE; } if (IsSet(customer_id_acct_map_active_date, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.active_date < %t", use_where ? "WHERE" : "AND", &ub->customer_id_acct_map_data->active_date); use_where = FALSE; } } if (IsNull(customer_id_acct_map_inactive_date, lb->customer_id_acct_map_data) || IsNull(customer_id_acct_map_inactive_date, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.inactive_date is NULL", use_where ? "WHERE" : "AND"); use_where = FALSE; } else if (IsSet(customer_id_acct_map_inactive_date, lb->customer_id_acct_map_data) && IsSet(customer_id_acct_map_inactive_date, ub->customer_id_acct_map_data) && Arbdate_compare(&lb->customer_id_acct_map_data->inactive_date, &ub->customer_id_acct_map_data->inactive_date) == 0) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.inactive_date = %t", use_where ? "WHERE" : "AND", &lb->customer_id_acct_map_data->inactive_date); use_where = FALSE; } else { if (IsSet(customer_id_acct_map_inactive_date, lb->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.inactive_date >= %t", use_where ? "WHERE" : "AND", &lb->customer_id_acct_map_data->inactive_date); use_where = FALSE; } if (IsSet(customer_id_acct_map_inactive_date, ub->customer_id_acct_map_data)) { arb_dbfcmd(dbcon, " %s CUSTOMER_ID_ACCT_MAP.inactive_date < %t", use_where ? "WHERE" : "AND", &ub->customer_id_acct_map_data->inactive_date); use_where = FALSE; } } } if((pstrOrder != NULL) && (strlen(pstrOrder)) ) { arb_dbfcmd(dbcon, " %s", pstrOrder); } if ((status = arb_exec_string(dbcon, "", SQL_DEFER_EXECUTE)) != SUCCESS) { free(nbbuf); delete_abp_tax_icb_rate(databuf); return ABP_DBERR; } offset = 0; if (tax_univ_icb_dbbind(dbcon, databuf->tax_univ_icb_data, nbbuf, &offset) == FAILURE) { free(nbbuf); delete_abp_tax_icb_rate(databuf); return ABP_DBERR; } if (customer_id_acct_map_dbbind(dbcon, databuf->customer_id_acct_map_data, nbbuf, &offset) == FAILURE) { free(nbbuf); delete_abp_tax_icb_rate(databuf); return ABP_DBERR; } *list = NULL; while ((status = arb_next_row(dbcon)) == ARB_MORE_DATA) { inb = 0; for (j = 0; j < sizeof(databuf->tax_univ_icb_data->bitfields); j++) { if (nbbuf[inb] == -1) databuf->tax_univ_icb_data->bitfields[j] = ABP_DB_NULL; else if (nbbuf[inb] == 0) databuf->tax_univ_icb_data->bitfields[j] = ABP_SET; inb++; } for (j = 0; j < sizeof(databuf->customer_id_acct_map_data->bitfields); j++) { if (nbbuf[inb] == -1) databuf->customer_id_acct_map_data->bitfields[j] = ABP_DB_NULL; else if (nbbuf[inb] == 0) databuf->customer_id_acct_map_data->bitfields[j] = ABP_SET; inb++; } if (*list == NULL) { *list = new_tax_icb_rate = new_abp_tax_icb_rate(); } else { new_tax_icb_rate->object_data.next = (API_OBJECT)new_abp_tax_icb_rate(); new_tax_icb_rate = (ABP_TAX_ICB_RATE)new_tax_icb_rate->object_data.next; } if (new_tax_icb_rate == NULL) { retval = ABP_SYSERR; break; } else { memcpy(new_tax_icb_rate->tax_univ_icb_data, databuf->tax_univ_icb_data, sizeof(TAX_UNIV_ICB_DATA)); memcpy(new_tax_icb_rate->customer_id_acct_map_data, databuf->customer_id_acct_map_data, sizeof(CUSTOMER_ID_ACCT_MAP_DATA)); } } delete_abp_tax_icb_rate(databuf); if (status == FAILURE) retval = ABP_DBERR; free(nbbuf); return retval ? retval : arb_dbcount(dbcon); }
EXPORT int update_abp_acct_hq_contract_by_date(ABP_DBHANDLE dbhandle, ABP_ACCT_HQ_CONTRACT acct_hq_contract, ABP_LOCSTR *a_effective_date) { int retval, account_no; Arb_connection *connection; CONTRACT_ASSIGNMENTS_HQ_DATA *cahd; CUSTOMER_ID_ACCT_MAP_DATA *cid; short default_xid_type = 0; char szeffective_date[DEF_STR_LEN]; Arb_date effective_date; api_convert_input_string(szeffective_date, a_effective_date, DEF_STR_LEN); if ((a_effective_date != NULL) && (*szeffective_date != '\0')) api_string_to_Arbdate(szeffective_date, &effective_date, 0); if (WRONG_OBJ_TYPE(acct_hq_contract, ACCT_HQ_CONTRACT)) return ABP_ARGERR; if (NotCustDbhandle(dbhandle)) return ABP_ARGERR; connection = dbhandle->cust_connection; ((ABP_ERR_DATA *)connection->user_data)->is_set = FALSE; cahd = acct_hq_contract->contract_assignments_hq_data; cid = acct_hq_contract->customer_id_acct_map_data; if (!(IsSet(contract_assignments_hq_tracking_id, cahd))) { abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "tracking_id"); return ABP_MISC_ERR; } if (IsNotSet(contract_assignments_hq_tracking_id_serv, cahd)) set_abp_acct_hq_contract_tracking_id_serv(acct_hq_contract, dbhandle->cust_server_id); if (!IsSet(contract_assignments_hq_start_dt, cahd)) { abp_put_misc_message(connection,ABP_NO_VALUE_ERR, "start date"); return ABP_MISC_ERR; } if (IsSet(customer_id_acct_map_external_id, cid)) { if (!IsSet(customer_id_acct_map_external_id_type, cid)) { retval = find_default_external_id_type(connection, &default_xid_type); if (retval != ABP_STATUS_OK) return retval; set_customer_id_acct_map_external_id_type(cid, default_xid_type); } if ((retval = find_account_no(connection, cid->external_id, cid->external_id_type, &account_no, (a_effective_date != NULL) && (*szeffective_date != '\0') ? &effective_date : NULL)) != ABP_STATUS_OK) return retval; set_contract_assignments_hq_account_no(cahd, account_no); } else { abp_put_misc_message(connection, ABP_NO_VALUE_ERR, "external_id"); return ABP_MISC_ERR; } if ((retval = abp_begin_transaction_inner(dbhandle, "abp_update_acct_hq_contract")) != ABP_STATUS_OK) return retval; if (update_contract_assignments_hq(connection, cahd) == FAILURE) { retval = ABP_DBERR; goto rollback; } else return abp_commit_transaction_inner(dbhandle, "abp_update_acct_hq_contract"); rollback: abp_roll_back_transaction_inner(dbhandle, "abp_update_acct_hq_contract"); return retval; }