int compare_dates(char *str1, char *str2){				//returns which transaction occures first.
	if (str1 == NULL || str2 == NULL){
		return -1;
	}
	int d1, d2, m1, m2, y1, y2,res=0;
	to_date(str1, &d1, &m1, &y1);					//conversion of srting form to numeric form
	to_date(str2, &d2, &m2, &y2);
	if (y1 < y2){									//checking
		res=1;
	}
	else if (y1>y2){
		res= 2;
	}
	else{
		if (m1 < m2){
			res = 1;
		}
		else if (m1>m2){
			res = 2;
		}
		else{
			if (d1 <= d2){
				res = 1;
			}
			else{
				res = 2;
			}
		}
	}
	return res;
}
示例#2
0
void Model_Checking::getEmptyTransaction(Data &data, int accountID)
{
    data.TRANSID = -1;
    wxDateTime trx_date = wxDateTime::Today();
    if (mmIniOptions::instance().transDateDefault_ != 0)
    {
        auto trans = instance().find(ACCOUNTID(accountID), TRANSDATE(trx_date, LESS_OR_EQUAL));
        std::stable_sort(trans.begin(), trans.end(), SorterByTRANSDATE());
        std::reverse(trans.begin(), trans.end());
        if (!trans.empty())
            trx_date = to_date(trans.begin()->TRANSDATE);

        wxDateTime trx_date_b = wxDateTime::Today();
        auto trans_b = instance().find(TOACCOUNTID(accountID), TRANSDATE(trx_date_b, LESS_OR_EQUAL));
        std::stable_sort(trans_b.begin(), trans_b.end(), SorterByTRANSDATE());
        std::reverse(trans_b.begin(), trans_b.end());
        if (!trans_b.empty())
        {
            trx_date_b = to_date(trans_b.begin()->TRANSDATE);
            if (!trans.empty() && (trx_date_b > trx_date))
                trx_date = trx_date_b;
        }
    }

    data.TRANSDATE = trx_date.FormatISODate();
    data.ACCOUNTID = accountID;
    data.STATUS = toShortStatus(all_status()[mmIniOptions::instance().transStatusReconciled_]);
    data.TRANSCODE = all_type()[WITHDRAWAL];
    data.CATEGID = -1;
    data.SUBCATEGID = -1;
    data.FOLLOWUPID = -1;
    data.TRANSAMOUNT = 0;
    data.TOTRANSAMOUNT = 0;
    data.TRANSACTIONNUMBER = "";
    if (mmIniOptions::instance().transPayeeSelectionNone_ != 0) 
    {
        auto trx = instance().find(TRANSCODE(TRANSFER, NOT_EQUAL)
            , ACCOUNTID(accountID, EQUAL), TRANSDATE(trx_date, LESS_OR_EQUAL));

        if (!trx.empty())
        {
            std::stable_sort(trx.begin(), trx.end(), SorterByTRANSDATE());
            Model_Payee::Data* payee = Model_Payee::instance().get(trx.rbegin()->PAYEEID);
            if (payee) data.PAYEEID = payee->PAYEEID;
            if (payee && mmIniOptions::instance().transCategorySelectionNone_ != 0)
            {
                data.CATEGID = payee->CATEGID;
                data.SUBCATEGID = payee->SUBCATEGID;
            }
        }
    }
}
示例#3
0
文件: query.cpp 项目: skyformat99/acl
query& query::set_date(const char* name, time_t value,
	const char* fmt /* = "%Y-%m-%d %H:%M:%S" */)
{
	string key(name);
	key.lower();
	del_param(key);

	string buf(128);
	if (to_date(value, buf, fmt) == NULL)
	{
		logger_error("to_date_time failed, time: %ld", (long) value);
		return *this;
	}

	size_t len = buf.length();
	query_param* param = (query_param*)
		acl_mymalloc(sizeof(query_param) + len + 1);
	param->type = DB_PARAM_STR;
	memcpy(param->v.S, buf.c_str(), len);
	param->v.S[len] = 0;
	param->dlen = (int) len;

	params_[key] = param;
	return *this;
}
示例#4
0
void get_shadow_properties(MYLDAP_ENTRY *entry, long *lastchangedate,
                           long *mindays, long *maxdays, long *warndays,
                           long *inactdays, long *expiredate,
                           unsigned long *flag)
{
  char buffer[64];
  const char *tmpvalue;
  char *tmp;
  /* get lastchange date */
  tmpvalue = attmap_get_value(entry, attmap_shadow_shadowLastChange,
                              buffer, sizeof(buffer));
  if (tmpvalue == NULL)
    tmpvalue = "";
  *lastchangedate = to_date(myldap_get_dn(entry), tmpvalue, attmap_shadow_shadowLastChange);
  /* get other shadow properties */
  GET_OPTIONAL_LONG(*mindays, shadowMin, -1);
  GET_OPTIONAL_LONG(*maxdays, shadowMax, -1);
  GET_OPTIONAL_LONG(*warndays, shadowWarning, -1);
  GET_OPTIONAL_LONG(*inactdays, shadowInactive, -1);
  GET_OPTIONAL_LONG(*expiredate, shadowExpire, -1);
  GET_OPTIONAL_LONG(*flag, shadowFlag, 0);
  /* if we're using AD handle the flag specially */
  if (strcasecmp(attmap_shadow_shadowLastChange, "pwdLastSet") == 0)
  {
    if (*flag & UF_DONT_EXPIRE_PASSWD)
      *maxdays = -1;
    *flag = 0;
  }
}