亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
97精品国产露脸对白| 久久综合久久综合九色| 一区二区三区在线播放| 欧美亚洲国产bt| 性做久久久久久| 91免费国产视频网站| 香蕉久久一区二区不卡无毒影院| 欧美精品第一页| 国产一区二区三区黄视频 | 国产乱码一区二区三区| 国产欧美久久久精品影院| 91蝌蚪porny九色| 久久激情五月婷婷| 亚洲另类色综合网站| 欧美一区二区三区视频| 91亚洲男人天堂| 午夜伊人狠狠久久| 国产女主播视频一区二区| 欧美调教femdomvk| 成人av网在线| 捆绑紧缚一区二区三区视频| 国产精品夜夜嗨| 久久99精品国产| 亚洲人成小说网站色在线| 久久这里只有精品6| 欧美性受xxxx| 91免费观看在线| 成人午夜电影网站| 国产精品一区在线| 精品亚洲aⅴ乱码一区二区三区| 一区二区三区在线免费视频| 久久精品一区四区| 久久精品男人天堂av| 日韩三级高清在线| 欧美精品日日鲁夜夜添| 在线观看精品一区| 91福利区一区二区三区| 91丨porny丨国产| 一本大道久久a久久精品综合| 国产精品99精品久久免费| 久久国产夜色精品鲁鲁99| 日本va欧美va精品发布| 欧美a级理论片| 国产精品亚洲人在线观看| 久久国产精品99精品国产| 国产一区二区三区不卡在线观看 | 色乱码一区二区三区88| av网站一区二区三区| 91麻豆免费视频| 色噜噜久久综合| 欧美一级夜夜爽| 国产69精品久久久久777| 狠狠狠色丁香婷婷综合激情| 国产超碰在线一区| 99riav久久精品riav| 91精品国产欧美日韩| 久久亚洲一区二区三区明星换脸| 中文字幕国产一区| 亚洲一区二区三区小说| 国产精品羞羞答答xxdd| 国产精品自拍一区| 国产曰批免费观看久久久| 亚洲精品日产精品乱码不卡| 亚洲欧美激情视频在线观看一区二区三区 | 一本一道久久a久久精品| 欧美一区三区四区| 国产精品福利影院| 精品在线播放午夜| 91久久精品国产91性色tv| 欧美疯狂做受xxxx富婆| 中文字幕av一区二区三区| 五月天激情小说综合| 成熟亚洲日本毛茸茸凸凹| 欧美一卡在线观看| 一区二区三区毛片| 色综合天天综合在线视频| 51精品秘密在线观看| 亚洲激情图片小说视频| 国产成人福利片| 337p日本欧洲亚洲大胆精品 | 成人va在线观看| 日韩免费视频一区二区| 亚洲成av人影院| 91麻豆精品秘密| 国产精品网曝门| 豆国产96在线|亚洲| 国产亚洲欧美激情| 国产成人a级片| 国产欧美视频一区二区| 国产成人日日夜夜| 国产精品免费人成网站| 成人在线综合网| 亚洲六月丁香色婷婷综合久久| av一区二区三区| 亚洲自拍偷拍麻豆| 欧美日本一区二区三区四区| 丝袜美腿一区二区三区| 欧美大尺度电影在线| 国产乱子伦视频一区二区三区| 久久女同性恋中文字幕| av亚洲精华国产精华精| 亚洲午夜影视影院在线观看| 91精品国产综合久久久久久久久久| 亚洲成人免费视| 久久久久久久久免费| caoporen国产精品视频| 亚洲图片欧美色图| 精品久久国产老人久久综合| 成人一区在线看| 天天综合色天天| 久久久久99精品一区| 色偷偷久久人人79超碰人人澡 | 日韩av在线免费观看不卡| 久久久久久97三级| 在线国产电影不卡| 国产成人av影院| 五月激情丁香一区二区三区| 久久一区二区三区四区| 欧美中文字幕一区二区三区 | 日韩精品五月天| 中文字幕成人网| 亚洲精品在线免费播放| 91麻豆福利精品推荐| 国产老妇另类xxxxx| 蜜桃av一区二区三区| 亚洲一区二区综合| 国产69精品久久久久毛片| 亚洲黄色小说网站| 久久精品视频一区二区三区| 欧美人xxxx| 欧美在线免费视屏| 亚洲一二三专区| 中文字幕一区二区三区蜜月| 久久先锋资源网| 精品久久国产字幕高潮| 欧美成人a∨高清免费观看| 欧美亚男人的天堂| 色婷婷精品大在线视频 | 国产精品情趣视频| 中文成人综合网| 国产精品美女久久久久av爽李琼| 26uuu另类欧美亚洲曰本| 精品国产3级a| 国产日韩欧美亚洲| 国产精品福利影院| 亚洲在线观看免费视频| 午夜天堂影视香蕉久久| 免费成人性网站| 国产一区二区在线电影| 国产成人福利片| 色av一区二区| 欧美变态tickling挠脚心| 精品日韩99亚洲| 国产精品久久久久久妇女6080 | 日韩精品一区二区三区视频在线观看 | 丝袜国产日韩另类美女| 九九在线精品视频| 91在线国产观看| 91精品视频网| 国产精品传媒入口麻豆| 丝瓜av网站精品一区二区| 经典一区二区三区| 91福利在线看| 国产人妖乱国产精品人妖| 亚洲 欧美综合在线网络| 国产成人丝袜美腿| 日韩一区二区电影网| 中文字幕二三区不卡| 蜜臀av一级做a爰片久久| 成人激情黄色小说| 日韩女优毛片在线| 一区二区在线观看免费视频播放| 国产乱码精品一区二区三区av| 欧美午夜精品理论片a级按摩| 久久久久综合网| 日本欧美肥老太交大片| 欧美一区二区成人| 亚洲精品国产视频| 不卡视频一二三四| 中文字幕电影一区| 国产在线不卡一卡二卡三卡四卡| 欧美日韩国产大片| 亚洲国产日产av| 欧美日韩一区三区| 亚洲一区免费观看| 欧美日韩视频一区二区| 亚洲激情中文1区| 欧美主播一区二区三区| 亚洲激情中文1区| 在线一区二区三区四区五区| 一区二区三区四区激情| 在线观看av不卡| 亚洲电影一级片| 日韩欧美中文字幕制服| 久久99精品国产.久久久久久| 精品久久国产97色综合| 成人精品在线视频观看| 亚洲裸体xxx| 日韩美女视频在线| 国产福利不卡视频|