📄 purcomm.pas.svn-base
字号:
unit PurComm;
interface
uses
Classes, SysUtils, Controls, Windows, Forms, ComCtrls, CommCtrl, DBGrids,
Messages, Graphics, ADODB, ActiveX, SYSDATA, Dialogs, atScript, Variants,
StdCtrls, DB;
//采购价格取值函数
procedure GetPurPrice(AItemNo,AUnitNo,ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty:Double;var APrice,ADiscount,AAmount:Double);
//取得标准采购价格
function GetStandardPurPrice(ACustNo,AItemNo,ACurrNo,AUnitNo:Integer;ADate:TDateTime):Double;
//取得總額折扣
procedure GetPurDiscount(ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty,AAmount:Double; var ADiscount:Double);
implementation
uses CommFun;
//采购价格取值函数
procedure GetPurPrice(AItemNo,AUnitNo,ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty:Double;var APrice,ADiscount,AAmount:Double);
var
AStdPrice:Double;
begin
APrice:=0;
ADiscount:=0;
AAmount:=0;
if not IsExists('select 1 from ORD150 where O150_001='+IntToStr(ACustNo)) then
begin
Screen.Cursor:=crDefault;
ShowMsg('UMS10000563'); //供应商号没有输入或输入不正确
Abort;
end;
//1.取得标准价格
AStdPrice:=GetStandardPurPrice(ACustNo,AItemNo,ACurrNo,AUnitNo,ADate);
APrice:=AStdPrice;
//特殊价格仅适用于指定的币别及条件,不作币别的转换
//5.取得特殊价格
//6A.取得特殊价格的设置脚本
// if ASpecPrice<>0 then APrice:=ASpecPrice else APrice:=AStdPrice;
AAmount:=AQty*APrice-ADiscount;
end;
//取得标准采购价格
function GetStandardPurPrice(ACustNo,AItemNo,ACurrNo,AUnitNo:Integer;ADate:TDateTime):Double;
var
AUnitRate,ARate,APrice:Double;
AItemID:String;
begin
//1.取得计量单位换算率
AUnitRate:=GetUnitRate(ACustNo,AItemNo,AUnitNo);
//2.取得幣別彙率
ARate:=GetCurrencyRate(ACurrNo);
AItemID:=GetValue('select I150_002 from INV150 where I150_001='+IntToStr(AItemNo));
//3.取得价格
//3A.取得需求币别的价格
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 P120_005 from PUR120,GLD100');
SYSDM.qryQuery.SQL.Add('where P120_003=G100_001 and P120_001='+IntToStr(ACustNo)+' and P120_002='+IntToStr(AItemNo));
SYSDM.qryQuery.SQL.Add(' and P120_004<='+GetDateString(ADate));
SYSDM.qryQuery.SQL.Add(' and G100_001='+IntToStr(ACurrNo));
SYSDM.qryQuery.SQL.Add('order by P120_004 desc');
SYSDM.qryQuery.Open;
if not SYSDM.qryQuery.IsEmpty then
begin
APrice:=SYSDM.qryQuery.FieldByName('P120_005').Value;
ARate:=1;
end else
//3B.取得本位币的价格,并换算成需求的币别价格,即价格=本位币价格/币别汇率
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 P120_005 from PUR120,GLD100');
SYSDM.qryQuery.SQL.Add('where P120_003=G100_001 and P120_001='+IntToStr(ACustNo)+' and P120_002='+IntToStr(AItemNo));
SYSDM.qryQuery.SQL.Add(' and P120_004<='+GetDateString(ADate));
SYSDM.qryQuery.SQL.Add(' and G100_002='+''''+ACurrID+'''');
SYSDM.qryQuery.SQL.Add('order by P120_004 desc');
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then
begin
Screen.Cursor:=crDefault;
ShowMsg(AItemID+' '+GetDBString('UMS10000423'),1); //该产品的本位币价格没有设置
Abort;
end;
APrice:=SYSDM.qryQuery.FieldByName('P120_005').Value;
end;
//4.计算价格
APrice:=APrice*AUnitRate;
APrice:=APrice/ARate;
Result:=APrice;
end;
//取得總額折扣
procedure GetPurDiscount(ACurrNo,ACustNo,ASaleNo:Integer;ADate:TDateTime;AQty,AAmount:Double; var ADiscount:Double);
//var
// APrice:Double;
begin
ADiscount:=0;
//取得總額折扣金額
// GetSpecPrice(ASpecID,0,ACurrNo,ACustNo,ASaleNo,ADate,AQty,APrice,ADiscount,AAmount);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -