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

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

?? sale2.c

?? 一款收款機C源代碼!因為是幾年前的代碼了
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*
 * Module: SALE2.C
 * Modified by: X.C.Zheng WeiHua
 * Modified on: Date: 2004-02-10 14:48
 * Copyright(c) WeiHua Tech Ltd.
 */
#include "ecrsys.h"
#include "ftype.h"
#include "sysdata.h"
#include "data.h"
#include "mathes.h"
#include "stdlib.h"
#include "disp.h"
#include "keydef.h"
#include <string.h>

void Sale_Test(void)
{
    InitTrans();
    TnsBf_Len = 0;

    transbuff[TnsBf_Len].ID = TS_DEPT;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 1300;
    transbuff[TnsBf_Len].quantity = 2000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;
    
    transbuff[TnsBf_Len].ID = TS_PER_ITEM_DEPT;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 2600;
    transbuff[TnsBf_Len].quantity = 20;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;
    
    transbuff[TnsBf_Len].ID = TS_RF_ITEM_DEPT;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 1300;
    transbuff[TnsBf_Len].quantity = 1000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;

    transbuff[TnsBf_Len].ID = TS_PLU;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 100;
    transbuff[TnsBf_Len].price = 1500;
    transbuff[TnsBf_Len].quantity = 10000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;
    transbuff[TnsBf_Len].ID = TS_PER_ITEM_PLU;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 100;
    transbuff[TnsBf_Len].price = 15000;
    transbuff[TnsBf_Len].quantity = 10;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    Wait(1000);
    TnsBf_Len++;
    transbuff[TnsBf_Len].ID = TS_RF_ITEM_PLU;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 100;
    transbuff[TnsBf_Len].price = 1500;
    transbuff[TnsBf_Len].quantity = 1000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    TnsBf_Len++;

    transbuff[TnsBf_Len].ID = TS_VD_PLU;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 1000;
    transbuff[TnsBf_Len].quantity = 1000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;

    transbuff[TnsBf_Len].ID = TS_VD_DEPT;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 2000;
    transbuff[TnsBf_Len].quantity = 1000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;

    transbuff[TnsBf_Len].ID = TS_RM_PLU;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 1300;
    transbuff[TnsBf_Len].quantity = 2000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;

    transbuff[TnsBf_Len].ID = TS_RM_DEPT;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 1300;
    transbuff[TnsBf_Len].quantity = 2000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;
    
    transbuff[TnsBf_Len].ID = TS_EC;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 13000;
    transbuff[TnsBf_Len].quantity = 1000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;
    
    transbuff[TnsBf_Len].ID = TS_RF_SUBT;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 13000;
    transbuff[TnsBf_Len].quantity = 1000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;
    
    transbuff[TnsBf_Len].ID = TS_PER_SUBT;
    transbuff[TnsBf_Len].flag = 0;
    transbuff[TnsBf_Len].nth = 20;
    transbuff[TnsBf_Len].price = 13000;
    transbuff[TnsBf_Len].quantity = 1000;
    Sale_Dsp(transbuff[TnsBf_Len]);
    Wait(1000);
    TnsBf_Len++;
}
/*----------------------------------------------------------------------*
 *					Do the sale mode multiplication.
 *			l1: 	 The multiplicand.
 *			dots1: The multiplicand's decimal dots (0~8).
 *			l2:	 The multiplier.
 *			dots2: The multiplier's decimal dots (0~8).
 *			round: The operation roundings.
 *					 0: round
 *					 1: Round up
 *					 2: Cut off
 *			dots3: The return data's decimal dots (0~8).
 *
 *				return:
 *			0x80000000: The result is illlegal or too big.
 *----------------------------------------------------------------------*/
long Sale_Mul(long l1, byte dots1, long l2, byte dots2, byte round, byte dots3)
{
	DoubleLong dl;
	long tmp;

	if((l1 == MIN_SIGNED_LONG) || (l2 == MIN_SIGNED_LONG))
		return (MIN_SIGNED_LONG);
	if((dots1 > 8) || (dots2 > 8) ||(dots3 > 8) || (dots1+dots2-dots3 > 9))
		return (MIN_SIGNED_LONG);
	if(round > 2)
		return (MIN_SIGNED_LONG);

	L2DL(l1, &dl, dots1);			/* Transform it to double long */
	Sale_Mul2(&dl, l2, dots2, round, dots3);
	if((dl.highlong != 0) || ((dl.lowlong&0x80000000) != 0))		/* Too big */
		tmp = MIN_SIGNED_LONG;
	else
		tmp = dl.lowlong;
	if(dl.sign == NEGATIVE)			/* Negative result */
		tmp = -tmp;

	return (tmp);
}


/*----------------------------------------------------------------------*
 *					Do the sale mode multiplication.
 *			ll:	 The multiplicand.
 *			l2:	 The multiplier.
 *			dots2: The multiplier's decimal dots (0~8).
 *			round: The operation roundings.
 *					 0: round
 *					 1: Round up
 *					 2: Cut off
 *			dots3: The return data's decimal dots (0~8).
 *
 *				return:
 *			NOTOK: The result is illlegal.
 *			OK:	 The result is legal.
 *----------------------------------------------------------------------*/
byte Sale_Mul2(DoubleLong *ll, long l2, byte dots2, byte round, byte dots3)
{
	long cal_round;

	if(l2 == MIN_SIGNED_LONG)
		return (NOTOK);
	if((dots2 > 8) || (dots3 > 8))
		return (NOTOK);
	if(round > 2)
		return (NOTOK);

	if(DL_Mul(ll, l2, dots2) == NOTOK)
		return (NOTOK);
	if(ll->dots > dots3)			/* Get the round operation data */
	{
		if(round == 0)
			cal_round = 5 * getLong(ll->dots - dots3 - 1);
		else if(round == 1)
			cal_round = 9 * getLong(ll->dots - dots3 - 1);
		else
			cal_round = 0;
	}
	else
		cal_round = 0;
	if(ll->sign == POSITIVE)				/* Add to the round */
		DL_Add(ll, cal_round, ll->dots);
	else
		DL_Add(ll, -cal_round, ll->dots);
	if(ll->dots > dots3)						/* Adjust the result */
		DL_Div(ll, getLong(ll->dots - dots3), ll->dots - dots3, 0, 0);
	else if(ll->dots < dots3)
	{
		if(DL_Mul(ll, getLong(ll->dots - dots3), ll->dots - dots3) == NOTOK)
			return (NOTOK);
	}
	return (OK);
}

/*----------------------------------------------------------------------*
 *					Do the sale mode division.
 *			l1: 	 The dividend.
 *			dots1: The dividend's decimal dots (0~8).
 *			l2:	 The divisor.
 *			dots2: The divisor's decimal dots (0~8).
 *			round: The operation roundings.
 *					 0: round
 *					 1: Round up
 *					 2: Cut off
 *			dots3: The return data's decimal dots (0~8).
 *
 *				return:
 *			0x80000000: The result is illlegal or too big.
 *----------------------------------------------------------------------*/
long Sale_Div(long l1, byte dots1, long l2, byte dots2, byte round, byte dots3)
{
	DoubleLong dl;
	long tmp;
	long cal_round;

	if((l1 == MIN_SIGNED_LONG) || (l2 == MIN_SIGNED_LONG))
		return (MIN_SIGNED_LONG);
	if((dots1 > 8) || (dots2 > 8) ||(dots3 > 8))
		return (MIN_SIGNED_LONG);
	if(round > 2)
		return (MIN_SIGNED_LONG);

	L2DL(l1, &dl, dots1);		/* Transform it to double long */
	if(DL_Exact_Div(&dl, l2, dots2) == NOTOK)
		return (MIN_SIGNED_LONG);
	while(dl.dots > 8)			/* Adjust it to max 8 dots */
		DL_Div(&dl, 10, 1, 0, 0);

	if(dl.dots > dots3)
	{
		if(round == 0)
			cal_round = 5 * getLong(dl.dots - dots3 - 1);
		else if(round == 1)
			cal_round = 9 * getLong(dl.dots - dots3 - 1);
		else
			cal_round = 0;
	}
	else
		cal_round = 0;
	if(dl.sign == POSITIVE)
		DL_Add(&dl, cal_round, dl.dots);
	else
		DL_Add(&dl, -cal_round, dl.dots);
	if(dl.dots > dots3)			/* Adjust the result */
		DL_Div(&dl, getLong(dl.dots - dots3), dl.dots - dots3, 0, 0);
	else if(dl.dots < dots3)
	{
		if(DL_Mul(&dl, getLong(dots3 - dl.dots), dots3 - dl.dots) == NOTOK)
			return (NOTOK);
	}

	if((dl.highlong != 0) || ((dl.lowlong&0x80000000) != 0))		/* Too big */
		tmp = MIN_SIGNED_LONG;
	else
		tmp = dl.lowlong;
	if(dl.sign == NEGATIVE)		/* Negative result */
		tmp = -tmp;
	return (tmp);
}

/*--------------------------------------------------------------------------*
				Calculate the transaction total quantity
 *--------------------------------------------------------------------------*/
long calTotQty(TRANSBUFFDEF *tsbf, byte tsbf_len)
{
	byte i;
	long Tot_Qty;

	Tot_Qty = 0;
	for(i = 0; i < tsbf_len; i ++)
	{
		switch((tsbf[i].ID&0x1F))
		{
			case TS_DEPT:			/* Department normal operation */
			case TS_PLU:			/* PLU normal normal operation */
					Tot_Qty += tsbf[i].quantity;		/* For the quantity is positive */
				break;

			case TS_RM_DEPT:		/* Department Return Merchandise operation */
			case TS_RM_PLU:		/* PLU Return Merchandise operation */
					Tot_Qty -= tsbf[i].quantity;		/* For the quantity is positive */
				break;

			default:
				break;
		}
	}
	return (Tot_Qty);
}

/*-------------------------------------------------------------------------*
 *				Calculate the transaction buffer part amount.
 *			Parameter:
 *					Flag:		The department or the PLU.
 *									DEPT:	Select the department.
 *									PLU:	Select the PLU.
 *					Idx:		The department or the PLU index number.
 *-------------------------------------------------------------------------*/
long calPrtAmt(byte Flag, word Idx)
{
	byte i;		/* The circular temporary variable */
	byte ID;
	long amount;
	long Tot_Amt;

	Tot_Amt = 0;
	for( i = 0; i < TnsBf_Len; i ++)
	{
		ID = (transbuff[i].ID)&0x1F;
		if(Flag == DEPT)
		{
			if((ID == TS_DEPT) || (ID == TS_VD_DEPT) || (ID == TS_RM_DEPT)
									 || (ID == TS_RF_ITEM_DEPT) || (ID == TS_PER_ITEM_DEPT)
									 #ifdef AUTO_PER			/* Support the department auto percent function */
									 || (ID == TS_AUTO_PER_DEPT)
									 #endif /* End AUTO_PER */
									 )
			{
				if((ID == TS_DEPT) || (ID == TS_RM_DEPT) || (ID == TS_RF_ITEM_DEPT))
					amount = Sale_Mul(transbuff[i].price, sysflag->sysdots, transbuff[i].quantity, 3, (transbuff[i].flag)>>4, sysflag->sysdots);
				else
					amount = transbuff[i].price;			/* The amount equal to the price */
				if(Idx == transbuff[i].nth)
					Tot_Amt += amount;
			}
		}
		else if(Flag == PLU)
		{
			if((ID == TS_PLU) || (ID == TS_VD_PLU) || (ID == TS_RM_PLU)
									 || (ID == TS_RF_ITEM_PLU) || (ID == TS_PER_ITEM_PLU)
									 #ifdef AUTO_PER			/* Support the department auto percent function */
									 || (TS_AUTO_PER_PLU)
									 #endif /* End AUTO_PER */
									 )
			{
				if((ID == TS_PLU) || (ID == TS_RM_PLU) || (ID == TS_RF_ITEM_PLU))
					amount = Sale_Mul(transbuff[i].price, sysflag->sysdots, transbuff[i].quantity, 3, (transbuff[i].flag)>>4, sysflag->sysdots);
				else
					amount = transbuff[i].price;			/* The amount equal to the price */
				if(Idx == transbuff[i].nth)
					Tot_Amt += amount;
			}
		}
	}
	return (Tot_Amt);
}


#ifdef STOCK		/* Support the PLU stock function */
/*----------------------------------------------------------------------*
				Calculate the total PLU inventory from transbuff.
 *----------------------------------------------------------------------*/
long calTotStk(word idx)
{
	byte i;
	byte ID;
	long inventory;

	inventory = plu[idx].inventory;
	for(i = 0; i < TnsBf_Len; i ++)
	{
		ID = (transbuff[i].ID)&0x1F;
		switch(ID)
		{
			case TS_PLU:			/* PLU normal operation */
				if(idx == transbuff[i].nth)		/* Right PLU index number */
					inventory -= transbuff[i].quantity;
				break;

#ifdef	REST_PLU_FUNC
			case TS_PLU_GIFT:			/* PLU gigt operation */
			case TS_RM_PLU_GIFT:			/* PLU gift operation */
				if(idx == transbuff[i].nth)		/* Right PLU index number */
					inventory -= transbuff[i].quantity;
				break;
#endif

			case TS_RM_PLU:		/* PLU Return Merchandise operation */
				if(idx == transbuff[i].nth)		/* Right PLU index number */
					inventory += transbuff[i].quantity;
				break;
		}
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久婷婷国产综合精品青草| av一区二区三区| 欧美日韩一区二区三区在线看 | 亚洲人吸女人奶水| 成人禁用看黄a在线| 久久国产免费看| 在线播放视频一区| 日本怡春院一区二区| 日韩免费电影网站| 国产成人综合亚洲网站| 欧美国产欧美综合| 色天使久久综合网天天| 香蕉久久一区二区不卡无毒影院| 69堂精品视频| 国内成人自拍视频| 国产精品入口麻豆九色| 色婷婷综合激情| 日日噜噜夜夜狠狠视频欧美人| 日韩三级在线观看| 国产成人免费在线观看| 亚洲九九爱视频| 制服.丝袜.亚洲.另类.中文| 国产综合色视频| 亚洲美女在线国产| 日韩一区二区电影在线| 国产91富婆露脸刺激对白| 亚洲色大成网站www久久九九| 欧美日韩在线直播| 国产毛片精品一区| 亚洲视频一区在线观看| 日韩一级成人av| 成人黄色大片在线观看| 亚洲影院在线观看| 欧美精品一区二| 在线欧美小视频| 精品影院一区二区久久久| 中文字幕一区二区三区精华液| 欧美午夜宅男影院| 国产成人亚洲综合a∨婷婷| 亚洲精品中文在线观看| 精品乱码亚洲一区二区不卡| 色综合天天性综合| 免费在线欧美视频| 成人久久18免费网站麻豆| 日日摸夜夜添夜夜添亚洲女人| 久久久精品天堂| 欧美欧美欧美欧美| 91在线观看地址| 国产一区二区看久久| 亚洲大片在线观看| 亚洲日本在线观看| 久久免费看少妇高潮| 欧美精品tushy高清| 99国产精品久久久| 国产馆精品极品| 日韩中文字幕不卡| 一区二区三区四区激情| 国产色婷婷亚洲99精品小说| 欧美一级片在线看| 欧美视频一区在线| 99久久综合99久久综合网站| 久久97超碰色| 石原莉奈在线亚洲二区| 一区二区三区加勒比av| 国产精品嫩草影院com| 久久久.com| 日韩写真欧美这视频| 欧美日韩一区不卡| 在线看不卡av| 色综合久久天天| 成人黄色片在线观看| 国产高清精品网站| 国产一区二区三区免费观看| 免费观看日韩电影| 日韩激情在线观看| 丝袜国产日韩另类美女| 午夜电影一区二区| 亚洲电影在线免费观看| 亚洲一区二三区| 亚洲线精品一区二区三区 | 18欧美乱大交hd1984| 国产精品久久久爽爽爽麻豆色哟哟| 精品国产sm最大网站免费看| 日韩你懂的电影在线观看| 日韩一区二区三区视频在线| 欧美一二三四区在线| 欧美一区二区久久| 91精品视频网| 日韩免费高清电影| 久久久亚洲高清| 久久狠狠亚洲综合| 久久精品国内一区二区三区| 美女被吸乳得到大胸91| 九九视频精品免费| 国产a级毛片一区| 99久久精品国产网站| 97se亚洲国产综合在线| 色88888久久久久久影院按摩| 色老汉一区二区三区| 欧美日韩黄色影视| 欧美一二三区在线观看| 蜜臀精品久久久久久蜜臀| 精品不卡在线视频| 欧美卡1卡2卡| 日韩一区二区三区视频在线| 久久久综合激的五月天| 国产精品第13页| 亚洲国产综合91精品麻豆| 欧美一级日韩一级| 2021中文字幕一区亚洲| 日本一区二区三区高清不卡| 欧美中文字幕一区| 欧美日本一区二区在线观看| 日韩午夜av一区| 免费观看久久久4p| av一二三不卡影片| 91论坛在线播放| 欧美精品乱码久久久久久| 欧美大片一区二区| 亚洲欧洲精品一区二区三区| 亚洲一区二区美女| 国产一区二区三区在线观看免费| 99视频精品免费视频| 欧美一区二区三区免费观看视频| 国产日韩欧美亚洲| 亚洲成年人影院| 处破女av一区二区| 欧美另类久久久品| 欧美国产综合色视频| 午夜视频久久久久久| 国产电影精品久久禁18| 欧美性猛片xxxx免费看久爱| 久久午夜电影网| 亚洲成人777| 91免费观看国产| 精品人在线二区三区| 亚洲最大的成人av| 国产一区亚洲一区| 欧美日韩久久一区二区| 国产精品理论在线观看| 久久精品国内一区二区三区| 在线免费观看日本欧美| 中文字幕精品一区| 男女男精品视频| 在线免费观看日韩欧美| 国产精品三级av| 国产精品一级在线| 日韩一级二级三级| 亚洲成人在线网站| 日本精品视频一区二区三区| 久久久美女毛片| 激情综合网激情| 欧美日韩在线综合| 亚洲国产精品久久久久秋霞影院| 精品久久久久99| 午夜视频一区二区| 色综合久久中文字幕| 综合亚洲深深色噜噜狠狠网站| 国产一区二区三区高清播放| 日韩欧美国产一区二区在线播放| 亚洲电影第三页| 欧美日韩视频第一区| 亚洲激情图片qvod| 91视视频在线直接观看在线看网页在线看| 久久久久久99久久久精品网站| 久草这里只有精品视频| 日韩欧美一区中文| 丝袜诱惑亚洲看片| 欧美一区二区三区四区在线观看| 视频一区在线视频| 日韩西西人体444www| 日本视频在线一区| 欧美成人国产一区二区| 精品亚洲欧美一区| 国产亚洲成av人在线观看导航 | 亚洲美女视频在线观看| 91在线观看高清| 一区二区三区91| 欧美视频在线观看一区二区| 一区二区三区波多野结衣在线观看 | 在线看一区二区| 一区二区三区免费观看| 欧美人伦禁忌dvd放荡欲情| 性欧美大战久久久久久久久| 91精品福利在线一区二区三区| 日日夜夜免费精品视频| 日韩一区二区三区视频在线 | 欧美日韩在线一区二区| 日韩电影在线一区二区三区| 欧美日韩在线三级| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩视频在线你懂得| 精品综合免费视频观看| 欧美电视剧在线看免费| 免费日韩伦理电影| 日本一区二区动态图| 成人福利视频网站| 国产精品麻豆99久久久久久| 国产一区二区三区日韩| 中文字幕欧美日韩一区|