亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fee_rec.c

?? BC3.1編譯,小交換機計費系統.使用Dos做出如此好的界面,少有.
?? C
?? 第 1 頁 / 共 2 頁
字號:

   FILE *in_fp, *na_fp, *lo_fp;

   SpecLen[0] = special_tbl_len(0);  /* local */
   SpecLen[1] = special_tbl_len(1);  /* information */

    temp_list.year1 = cbcd_uc(CmdBuf[port]+1);
    temp_list.year1 += 1900;
    temp_list.mon1  = cbcd_uc(CmdBuf[port]+2);
    temp_list.day1  = cbcd_uc(CmdBuf[port]+3);

    temp_list.year2 = temp_list.year1;
    temp_list.mon2  = temp_list.mon1;
    temp_list.day2  = temp_list.day1;

    if(CmdBuf[port][5] != 0x0a) {
	for(i=5;i<8;i++) {
	  if( (CmdBuf[port][i]&0xF0) == 0xa0) CmdBuf[port][i] = CmdBuf[port][i] & 0x0F;
	  if( (CmdBuf[port][i]&0x0F) == 0x0a) CmdBuf[port][i] = CmdBuf[port][i] & 0xF0;
		  }
	cbcd_hex(&temp_list.auth_code, CmdBuf[port]+5, 6);
	 }
    else if(CmdBuf[port][5] == 0x0a)
		  temp_list.auth_code = 0xaaaaaa;

/*    cbcd_hex(&temp_list.caller1, CmdBuf[port]+4, 2);*/
    cbcd_hex(&temp_list.caller2, CmdBuf[port]+4, 2);
    temp_list.caller2 += port*PhonesPerPort;
    InnerToExt();
    temp_list.caller1 =   temp_list.caller2;

    for(k = 0, i = 14; i < 21; i ++)
    {
	if( (CmdBuf[port][i] & 0xf0) == 0)
	    break;
	else
	{
	    temp_list.callee[k] = (CmdBuf[port][i] & 0xf0) >> 4;

	  if( temp_list.callee[k] > 0x0a)
	      return(FALSE);

	    if(temp_list.callee[k] == 0x0a)
					 temp_list.callee[k] = 0;
	    k ++;

	    if((CmdBuf[port][i] & 0x0f) == 0)
					 break;
	    else                  /* if((CmdBuf[i] & 0x0f) != 0) */
	    {
		temp_list.callee[k] = CmdBuf[port][i] & 0x0f;

	      if( temp_list.callee[k] > 0x0a)
		  return(FALSE);

	      if(temp_list.callee[k] == 0x0a)
		    temp_list.callee[k] = 0;
					 k++;

	      if(k >= 14)       /* 14 bytes are enough for callee number */
		    break;
	    }                     /* end of "if((CmdBuf[i] & 0x0f) != 0)" */
	}                         /* end of "else if((CmdBuf[i] & 0xf0) != 0)" */
    }                             /* end of "for(k=0,i=11;i<19;i++)" */

    if(k > 14)
	k = 14;
	 for(; k<16; k++)
	temp_list.callee[k] = 0xfd;

    if(temp_list.callee[0] == 0)
    {
	if(temp_list.callee[1] == 0)   /* InterNational */
	    mark = IDD;
	else
	    mark = DDD;                                                         /* National */
    }
    else
	mark = LDD;

    temp_list.hour1 = cbcd_uc(CmdBuf[port]+8);
    temp_list.min1  = cbcd_uc(CmdBuf[port]+9);
    temp_list.sec1  = cbcd_uc(CmdBuf[port]+10);

    temp_list.hour2 = cbcd_uc(CmdBuf[port]+11);
    temp_list.min2  = cbcd_uc(CmdBuf[port]+12);
    temp_list.sec2  = cbcd_uc(CmdBuf[port]+13);

    if(delay_proc(mark) == FALSE)
	return(FALSE);

    just_date();

    /* compute week day of day1 and day2 */
    week1 = weekday(temp_list.year1,temp_list.mon1,temp_list.day1);
    week2 = weekday(temp_list.year2,temp_list.mon2,temp_list.day2);

    if(mark==IDD)
    {
	Intern_charge();
	in_fp = fopen("idd.tmp","ab");
	fwrite(&temp_list, sizeof(RECORD_STRUCT), 1, in_fp);
	fclose(in_fp);

	/* handle cash in pledge */
	if(temp_list.auth_code !=  0xaaaaaa) /* auth*/
	    update_cash(AUTH_CASH);
	else
	{
	    ltoa(temp_list.caller2, user, 10);   /* int to ASCII string */
	    phone = binary_search(user);         /* locate the phone No */
	    if( (phone != NULL) && phone->feeflag[4])  	/* IDD fee */
		update_cash(PHONE_CASH);
	}

	rate_tmp = get_rate(&temp_list.callee[2],IDD);   /* get charge rate */
	if(rate_tmp == NULL)              /* the area No. does not exist    */
		strcpy(rate1.area_name, a_name);
	else
		rate1 =*rate_tmp;

	if(Intern_prn && check_prn())        /* printer is ready */
	{
	    ltoa( temp_list.caller2, phone_no, 10 );
	    phone = binary_search( phone_no );
	    if( phone != NULL && phone->flag)
	    {
		auth_usr_proc(auth_name);
		flag=print_a_record(auth_name, IMTRCount);
		if(flag==FALSE)
		    return(TRUE);
	     }
	}
    }
    else if(mark==DDD)
    {
	Nation_charge();
	na_fp = fopen("ddd.tmp","ab");
	fwrite(&temp_list,sizeof(RECORD_STRUCT),1,na_fp);
		  fclose(na_fp);

		  /* handle cash in pledge */
		  if(temp_list.auth_code !=  0xaaaaaa) /* auth*/
				 update_cash(AUTH_CASH);
		  else
		  {
				ltoa(temp_list.caller2, user, 10);   /* int to ASCII string */
				phone = binary_search(user);         /* locate the phone No */
				if( (phone != NULL) && phone->feeflag[3])  	/* DDD fee */
					 update_cash(PHONE_CASH);
		  }

		  rate_tmp = get_rate(&temp_list.callee[1],DDD);   /* get charge rate */
		  if(rate_tmp == NULL)                             /* the area No. does not exist    */
				strcpy(rate1.area_name, a_name);
		  else
				rate1 =*rate_tmp;

		  if(Nation_prn && check_prn())        /* printer is ready */
		  {
				ltoa( temp_list.caller2, phone_no, 10 );
				phone = binary_search( phone_no );
				if( phone != NULL && phone->flag)
				{
					 auth_usr_proc(auth_name);
					 flag=print_a_record(auth_name, IMTRCount);
					 if(flag==FALSE)
						  return(TRUE);
				}
		  }
	 }
	 else if(mark==LDD)
	 {
		  Local_charge();
		  lo_fp = fopen("ldd.tmp","ab");
		  fwrite(&temp_list,sizeof(RECORD_STRUCT),1,lo_fp);
		  fclose(lo_fp);

		  /* handle cash in pledge */
		  if(Usr_typ == NORMAL_USR || Ldd_fflg == YES)
				if(temp_list.auth_code !=  0xaaaaaa) /* auth*/
					 update_cash(AUTH_CASH);
				else
				{
					 ltoa(temp_list.caller2, user, 10);   /* int to ASCII string */
					 phone = binary_search(user);         /* locate the phone No */
					 if( phone != NULL)
					 {
						  f1 = IsSpecialCall(temp_list.callee,SpecLen[0],0);
						  f2 = IsSpecialCall(temp_list.callee,SpecLen[1],1);

						  if(   (phone->feeflag[1] && f1)
								||(phone->feeflag[2] && f2)
								||(phone->feeflag[0] && !(f1 && f2) ))
				  update_cash(PHONE_CASH);
					 }
				}

		  rate_tmp = get_rate(temp_list.callee,LDD);   /* get charge rate */
		  if(rate_tmp == NULL)                             /* the area No. does not exist    */
				strcpy(rate1.area_name, a_name);
		  else
				rate1 =*rate_tmp;

		  if(Local_prn && check_prn())        /* printer is ready */
		  {
				ltoa( temp_list.caller2, phone_no, 10 );
				phone = binary_search( phone_no );
				if( phone != NULL && phone->flag)
				{
					 auth_usr_proc(auth_name);
					 flag=print_a_record(auth_name, IMTRCount);
					 if(flag==FALSE)
						  return(TRUE);
				}
		  }
	 }

	 // check overcash
	 if( (temp_cash != NULL) && (temp_cash->flag ==CASH_ON) &&
		  (temp_cash->cash < temp_cash->limit ) )/* overflow */
	 {
		  if(temp_list.auth_code !=  0xaaaaaa) /* auth*/
		  {
				if(   Auth_cd_top[(UI)temp_list.auth_code].auth_class != 0
				 || Auth_cd_top[(UI)temp_list.auth_code].auth_set_flag == 1)
				{
					Auth_cd_top[(UI)temp_list.auth_code].auth_class = 0;
					Auth_cd_top[(UI)temp_list.auth_code].auth_set_flag = 1;
				}
				sprintf(tmp, "099999%04d00", temp_list.auth_code);
				err = 0;
				for(port=0; port<PORT_NUM; port++)
					 if(Sys_mode.com_m[port])
						  if(DownloadCode(tmp, 6, 6, 0xBA, port) != 0) err=1;
				if(!err)
					Auth_cd_top[(UI)temp_list.auth_code].auth_set_flag = 0;
		  }
		  else
		  {
				ltoa(temp_list.caller2, user, 10);   /* int to ASCII string */
				phone = binary_search(user);         /* locate the phone No */
				if(phone != NULL)
				{
					phone->class = 1;
					phone->set_flag = 1;
				}
				sprintf(tmp, "%02d%02d%02d", phone->code%PhonesPerPort, (int)(phone->class),(int)(phone->max_min));
				if(DownloadCode(tmp, 0, 6, 0xC0, phone->code/PhonesPerPort) == 0)
					phone->set_flag = 0;
		  }
	 }

	 return(TRUE);
}

/* function  : convert a compacted BCD string to unsinged char
 * called by : all_record_transfer(), imm_record_transfer()
 * input     : *c_bcd -- the compacted BCD string
 * output    : the converted unsinged char
 * date      : 1993.9.28
 */
UC cbcd_uc(UC *c_bcd)
{
	 UC tmp;

    tmp = 0;
	 tmp = ((*c_bcd) & 0xf0)>>4;
	 tmp = tmp*10+((*c_bcd) & 0x0f);

    return(tmp);
}


UC delay_proc(UC mode)
{
    int   dh, dm, ds;
    UL    dl;

    dh = temp_list.hour2 - temp_list.hour1;
    dm = temp_list.min2  - temp_list.min1;
    ds = temp_list.sec2  - temp_list.sec1;
    if(ds < 0)
    {
	ds += 60;
	dm --;
    }

    if(dm < 0)
    {
	dm += 60;
	dh --;
    }

    if(dh < 0)
    {
	dh += 24;
    }

    dl = ds + 60*dm + 60*60*dh;

    if(mode == IDD)
    {
	if(dl <= (UL)Delay.delay_idd)
	    return(FALSE);
	else
	    temp_list.sec1 += (UC)Delay.delay_idd;
    }
    else if(mode == DDD)
    {
	if(dl <= (UL)Delay.delay_ddd)
	    return(FALSE);
	else
	    temp_list.sec1 += (UC)Delay.delay_ddd;
    }
    else
    {
	if(dl <= (UL)Delay.delay_ldd)
	    return(FALSE);
	else
	    temp_list.sec1 += (UC)Delay.delay_ldd;
    }

    if(temp_list.sec1 > 60)
    {
	temp_list.sec1 -= 60;
	temp_list.min1 ++;
    }
    if(temp_list.min1 > 60)
    {
	temp_list.min1 -= 60;
	temp_list.hour1 ++;
    }
    if(temp_list.hour1 > 24)
    {
	temp_list.hour1 -= 24;
	temp_list.day1 ++;
    }
    switch(temp_list.mon1)
    {
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	     if(temp_list.day1 > 31)
	     {
		  temp_list.day1 = 1;
		  temp_list.mon1 ++;
	     }
	     break;
	case 4:
	case 6:
	case 9:
	case 11:
	     if(temp_list.day1 > 30)
	     {
		 temp_list.day1 = 1;
		 temp_list.mon1 ++;
	      }
	      break;
	case 2:
	     if(leap_year(temp_list.year1))
	     {
		  if(temp_list.day1 > 29)
		  {
		     temp_list.day1 = 1;
		     temp_list.mon1 = 3;
		  }
	     }
	     else
	     {
		 if(temp_list.day1 > 28)
		 {
		     temp_list.day1 = 1;
		     temp_list.mon1 = 3;
		  }
	     }
	     break;
	case 12:
	     if(temp_list.day1 > 31)
	     {
		 temp_list.day1  = 1;
		 temp_list.mon1  = 1;
		 temp_list.year1 ++;
	     }
	     break;
	default:
	     break;
	 }
/*
    if(dl < 225)
	return TRUE;
    else if(dl < 300)
	temp_list.sec2 += 20;
    else if(dl < 400)
		  temp_list.sec2 += 30;
    else if(dl < 500)
	temp_list.sec2 += 40;
    else if(dl < 600)
		  temp_list.sec2 += 50;
    else if(dl < 1200)
	temp_list.min2 += 1;
    else
	temp_list.min2 += 2;

    if(temp_list.sec2 > 60)
	 {
		  temp_list.sec2 -= 60;
	temp_list.min2 ++;
    }
    if(temp_list.min2 > 60)
	 {
		  temp_list.min2 -= 60;
	temp_list.hour2 ++;
    }
	 if(temp_list.hour2 > 24)
    {
	temp_list.hour2 -= 24;
		  temp_list.day2 ++;
	 }
    switch(temp_list.mon2)
    {
	case 1:
		  case 3:
		  case 5:
	case 7:
	case 8:
		  case 10:
	     if(temp_list.day2 > 31)
	     {
					  temp_list.day2 = 1;
					  temp_list.mon2 ++;
	     }
	     break;
	case 4:
		  case 6:
		  case 9:
	case 11:
	     if(temp_list.day2 > 30)
				 {
		 temp_list.day2 = 1;
		 temp_list.mon2 ++;
				 }
				 break;
	case 2:
	     if(leap_year(temp_list.year2))
	     {
					  if(temp_list.day2 > 29)
					  {
		     temp_list.day2 = 1;
		     temp_list.mon2 = 3;
					  }
	     }
	     else
				 {
					  if(temp_list.day2 > 28)
		 {
                     temp_list.day2 = 1;
                     temp_list.mon2 = 3;
					  }
				 }
             break;
        case 12:
				 if(temp_list.day2 > 31)
             {
                 temp_list.day2  = 1;
					  temp_list.mon2  = 1;
					  temp_list.year2 ++;
	     }
	     break;
	default:
				 break;
	 }
*/
    return(TRUE);
}

void update_cash(UC mode)
{
	 UC phone_no[10];

	 if( mode == PHONE_CASH )
		  ltoa(temp_list.caller2, phone_no, 10);
	 else
		  sprintf(phone_no, "%03ld",temp_list.auth_code);

	 if(Cashflg[mode])
	 {
		  temp_cash = binary_cash(phone_no,mode);
		  if( (temp_cash != NULL) && (temp_cash->flag ==CASH_ON) )
				temp_cash->cash -= temp_list.charge;
	 }

}

void InnerToExt()
{
	 UC    pcflg;
    PHONE_STRUCT *pcode;
	 UI    pclen;

           pcode = Phone_top;
            pcflg = 0;
            for(pclen = 0; pclen < Newlen; pclen++)
            {
                if(pcode->code == temp_list.caller2)
                {
                    pcflg = 1;
                    break;
					 }
                pcode ++;
				}

            if( pcflg == 1)
		temp_list.caller1 = temp_list.caller2 = atol(pcode->phone_no);
            else
            {
            	message_disp(8, "存在未設定分機內碼!");
                outf(MES_LEFT+168, MES_TOP+1, LIGHTRED, YELLOW, "%-7lu", temp_list.caller2);
                sound_alarm();
                message_end();
		temp_list.caller1 = temp_list.caller2 = 999999;
            }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产999精品久久久久久绿帽| 日韩一区二区在线免费观看| 欧美国产精品一区二区| 国产电影一区二区三区| 国产精品欧美经典| 91福利在线播放| 午夜国产不卡在线观看视频| 91精品国产色综合久久不卡电影 | 午夜亚洲福利老司机| 欧美在线播放高清精品| 青青草成人在线观看| 日韩美女天天操| 不卡的av电影| 高清不卡一二三区| 一区二区三区精品视频在线| 4438x成人网最大色成网站| 久久电影网站中文字幕| 国产精品女上位| 91福利小视频| 国产一区二区精品久久99| 中文字幕佐山爱一区二区免费| 欧美性色欧美a在线播放| 久久狠狠亚洲综合| 1区2区3区精品视频| 欧美日韩不卡一区| 国产成人精品1024| 亚洲国产成人av好男人在线观看| 日韩欧美一级二级三级久久久| 成a人片亚洲日本久久| 五月激情综合色| 国产视频在线观看一区二区三区 | 亚洲一区免费观看| 久久亚洲精品小早川怜子| 色综合激情久久| 精品一区二区三区影院在线午夜 | 午夜不卡av在线| 国产日韩欧美不卡在线| 91麻豆精品国产自产在线观看一区 | 亚洲午夜私人影院| 久久人人爽人人爽| 在线不卡a资源高清| 成人av在线观| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲综合免费观看高清完整版在线| 亚洲精品在线观| 欧美精品久久天天躁| 成人黄色综合网站| 激情五月激情综合网| 午夜在线成人av| 亚洲欧洲色图综合| 国产偷v国产偷v亚洲高清| 69堂精品视频| 欧美亚洲免费在线一区| 成人sese在线| 国产精品中文欧美| 蜜桃精品视频在线| 五月婷婷久久丁香| 亚洲综合色区另类av| 亚洲色图一区二区| 最新国产の精品合集bt伙计| 久久久精品欧美丰满| 欧美不卡视频一区| 欧美一级艳片视频免费观看| 欧美日韩精品专区| 在线观看日韩国产| 日本黄色一区二区| 色八戒一区二区三区| 一本色道久久综合狠狠躁的推荐 | 欧美视频一二三区| 日本韩国视频一区二区| 色噜噜狠狠一区二区三区果冻| k8久久久一区二区三区| 99国产精品国产精品毛片| 国产成人精品影院| 国产精品18久久久久久vr| 国产精品一区二区免费不卡| 国产制服丝袜一区| 国产一区不卡视频| 成人午夜在线视频| 不卡在线视频中文字幕| 99久久99久久久精品齐齐 | 色综合天天在线| 91亚洲精品一区二区乱码| 99精品视频一区二区三区| 99久久99久久精品国产片果冻 | 天天综合日日夜夜精品| 午夜视频久久久久久| 蜜桃视频一区二区三区在线观看| 日韩国产欧美视频| 麻豆精品久久久| 国产不卡在线视频| 91啪亚洲精品| 欧美精三区欧美精三区| 欧美一级午夜免费电影| 国产午夜精品久久| 亚洲日本在线看| 亚洲成av人在线观看| 老司机精品视频线观看86| 国产99久久久国产精品| 一本大道综合伊人精品热热| 欧美午夜片在线看| 欧美电视剧免费观看| 中文字幕免费在线观看视频一区| 亚洲日本免费电影| 日本sm残虐另类| 风间由美性色一区二区三区| 欧美中文字幕一区二区三区亚洲| 欧美一级电影网站| 一区免费观看视频| 蜜乳av一区二区| 成人h动漫精品一区二区| 欧美日韩午夜在线视频| 久久综合精品国产一区二区三区| 国产精品国产三级国产a| 日韩福利电影在线| 97久久精品人人澡人人爽| 欧美日韩成人一区二区| 国产蜜臀av在线一区二区三区| 亚洲综合自拍偷拍| 国产精品18久久久久久久网站| 欧美在线综合视频| 久久久精品日韩欧美| 偷拍日韩校园综合在线| 国产a级毛片一区| 欧美精品久久天天躁| **性色生活片久久毛片| 蜜臀久久99精品久久久久宅男| 风间由美一区二区三区在线观看 | 26uuu久久天堂性欧美| 玉足女爽爽91| 国产成人在线视频免费播放| 欧美日韩一级片在线观看| 国产精品亚洲综合一区在线观看| 91女人视频在线观看| 久久久99精品免费观看不卡| 亚洲高清免费一级二级三级| 国产99精品在线观看| 欧美成人video| 日韩电影免费在线| 色先锋久久av资源部| 欧美激情在线看| 精品无人码麻豆乱码1区2区| 欧美日韩综合一区| 亚洲欧洲国产专区| 国产精华液一区二区三区| 欧美一区二区三区公司| 亚洲福中文字幕伊人影院| 91麻豆文化传媒在线观看| 国产欧美日韩精品一区| 国内精品视频666| 精品三级av在线| 日本sm残虐另类| 欧美二区乱c少妇| 亚洲国产精品人人做人人爽| 99久久精品免费看| 中文字幕第一区第二区| 国产丶欧美丶日本不卡视频| 精品国产电影一区二区| 奇米色一区二区三区四区| 欧美日韩不卡在线| 三级影片在线观看欧美日韩一区二区| 91在线免费视频观看| 中文字幕一区三区| 91年精品国产| 亚洲欧美国产77777| 91免费视频网址| 亚洲九九爱视频| 日本二三区不卡| 午夜影院在线观看欧美| 欧美一卡二卡三卡| 精品一区二区精品| 久久理论电影网| 国产 欧美在线| 国产精品初高中害羞小美女文| 成人精品视频一区二区三区尤物| 欧美经典一区二区| av网站免费线看精品| 一区二区三区日韩| 欧美日本在线观看| 久久99国产精品久久99果冻传媒| 精品国精品自拍自在线| 国产精品一区二区在线观看不卡| 亚洲国产高清aⅴ视频| av电影在线观看完整版一区二区| 一区二区三区电影在线播| 欧美日韩精品一区二区| 免费久久99精品国产| 久久综合色天天久久综合图片| 风间由美一区二区三区在线观看 | 99re66热这里只有精品3直播| 中文字幕亚洲电影| 91福利社在线观看| 青青草97国产精品免费观看无弹窗版 | 精品中文字幕一区二区 | 国产精品剧情在线亚洲| 色综合久久久网| 日本不卡一区二区三区| 久久久久国产精品厨房| 色综合久久中文字幕综合网| 青青草国产精品97视觉盛宴 |