inv_otherin_b.pas
来自「一个MRPII系统源代码版本」· PAS 代码 · 共 1,071 行 · 第 1/3 页
PAS
1,071 行
tmp_InvBillnotaxAmount+','+
tmp_InvBillPricec+','+
tmp_InvBillAmountc+','+
tmp_InvBillnotaxPricec+','+
tmp_InvBillnotaxAmountc+')' );
AdoQry_tmp.ExecSQL;
//更改当前库存 更改Item表的库存数据
{ UpdateInv(AdoQry_tmp,
tmp_WhCode,
tmp_WhPositionCode,
fieldbyname('ItemCode').asstring,
'('+fieldbyname('InvBillqty').asstring+')',
NeedChangePrice); }
Tempstr:=UpdateInv(AdoQry_tmp,
tmp_WhCode,
tmp_WhPositionCode,
fieldbyname('ItemCode').asstring,
'('+fieldbyname('InvBillqty').asstring+')',
NeedChangePrice,True);
if Tempstr<>'' then
begin
//DispStr:=Tempstr;
Abort;
end;
//更改批次库存数量
if fieldbyname('Batchno').asstring<>'' then
begin
ChangeBatchInv(AdoQry_tmp,fieldbyname('Batchno').asstring,
'R',
medt_Date.text,
tmp_WhCode,
tmp_WhPositionCode,
fieldbyname('InvBillqty').asfloat);
end;
next;
end;
end;
if OtherIncheck=0 then //是否需要核价,如果否,则
begin
//更改当前应收应付
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.Add('select ChangeAp from BillType2 where BillType2Code='''+getCode(cmbbx_BillType2Code.text)+'''');
open;
if (fieldbyname('ChangeAp').asinteger=1) and (cmbbx_OutType.text='供应商') then
begin
Close;
sql.clear;
sql.Add('if not exists (select VendorCode '+
' from CurrentAp '+
' where VendorCode='''+Extedt_OutCode.text+''' and '+
' currencyCode='''+currencyCode+''') '+
' insert CurrentAp(VendorCode,currencyCode) '+
' Values('''+Extedt_OutCode.text+''','''+currencyCode+''') '+
' update CurrentAp '+
' set ApNoInvoice=ApNoInvoice+'+floattostr(Amount)+
' where VendorCode='''+Extedt_OutCode.text+''' and '+
' currencyCode='''+currencyCode+''' ');
execsql;
end;
end;
end;
AdoQry_Body.Connection.CommitTrans;
//状态控制
//-----------
AdoQry_Body.EnableControls ;
Billmemo:=Extedt_memo.text;
BillwhCode:=getCode(cmbbx_WhCode.text);
BillWhPositionCode:=getCode(cmbbx_WhPositionCode.text);
BillBillType2Code:=getCode(cmbbx_BillType2Code.text);
BilloutType:=getCode(Cmbbx_OutType.text);
BilloutCode:=Extedt_OutCode.text;
BilloutName:=lbl_OutName.text;
BillLoginDate:=medt_Date.text;
Frm_Inv_OtherIn_H.InvBillid:=Billid;
act_insertline.Enabled :=False;
act_Deleteline.Enabled :=False;
act_Save.Enabled :=False;
act_Modify.Enabled :=False;
// DispInfo('保存成功!',3);
//---------
except
begin
AdoQry_Body.Connection.RollBackTrans;
AdoQry_Body.EnableControls ;
if not BeforeSaveError then
begin
DispInfo(' 存盘不成功,请稍后再试! ',1);
abort;
end;
end;
end;
end;
procedure TFrm_Inv_OtherIn_B.DateCheck(Sender: TObject);
begin
inherited;
//日期是否为结帐日期
if not whclsperiodcheck(AdoQry_tmp,getCode(cmbbx_WhCode.text),copy(medt_Date.text,1,7)) then
begin
medt_Date.setfocus;
abort;
end;
end;
procedure TFrm_Inv_OtherIn_B.Act_QuitExecute(Sender: TObject);
begin
// inherited;
Close;
end;
procedure TFrm_Inv_OtherIn_B.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
// inherited;
//退出检验
if(Act_Save.Enabled)then
begin
if(DispInfo('数据有改动,需要保存吗?',2)='y')then
begin
Act_SaveExecute(Sender);
Self.ModalResult:=mrOk;
end
else
begin
if(AdoQry_Head.State in [dsInsert,dsEdit])then
AdoQry_Head.Cancel;
Self.ModalResult:=mrCancel;
end;
end
else
begin
if(AdoQry_Head.State in [dsInsert,dsEdit])then
AdoQry_Head.Cancel;
Self.ModalResult:=mrOk;
end;
end;
procedure TFrm_Inv_OtherIn_B.cmbbx_WhCodeChange(Sender: TObject);
begin
inherited;
initcmbbx_WhPositionCode(getCode(cmbbx_WhCode.text));
end;
procedure TFrm_Inv_OtherIn_B.Extedt_OutCode1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
if key=vk_F9 then
begin
if cmbbx_OutType.text='供应商' then VendorHint(sender,key,shift);
if cmbbx_OutType.text='部门' then DeptHint(sender,key,shift);
end
end;
procedure TFrm_Inv_OtherIn_B.AdoQry_BodyAfterPost(DataSet: TDataSet);
begin
inherited;
//为正负向参数付值
IoType:=AdoQry_Body.fieldbyname('InvBillqty').asfloat;
end;
procedure TFrm_Inv_OtherIn_B.AdoQry_BodyBeforePost(DataSet: TDataSet);
begin
inherited;
//调用正负同向检验程序
checkIoType;
end;
procedure TFrm_Inv_OtherIn_B.Act_PreviewExecute(Sender: TObject);
begin
//inherited;
if Trim(cmbbx_WhCode.text)='' then
begin
DispInfo('仓库不能为空!',3);
abort;
end;
BillPrint(AdoQry_Tmp.Connection,GetCode(cmbbx_WhCode.text),Extedt_Billno.text,Param1,ModuleCode,True,False,True,'');
end;
procedure TFrm_Inv_OtherIn_B.Act_PrintExecute(Sender: TObject);
begin
//inherited;
if Trim(cmbbx_WhCode.text)='' then
begin
DispInfo('仓库不能为空!',3);
abort;
end;
IsAfterprint:=True;
BillPrint(AdoQry_Tmp.Connection,GetCode(cmbbx_WhCode.text),Extedt_Billno.text,Param1,ModuleCode,False,False,True,'');
IsAfterprint:=False;
end;
procedure TFrm_Inv_OtherIn_B.cmbbx_BillType2CodeExit(Sender: TObject);
begin
inherited;
if Trim(cmbbx_BillType2Code.text)='' then
begin
DispInfo('请选择入库类型!',1);
twincontrol(sender).setfocus;
abort;
end;
end;
procedure TFrm_Inv_OtherIn_B.cmbbx_OutTypeExit(Sender: TObject);
begin
inherited;
//入库对象为空,则自动让入库对象代码,对象名称清空
if Trim(cmbbx_OutType.text)='' then
begin
lbl_OutName.text:='';
Extedt_OutCode.Text:='';
end;
end;
procedure TFrm_Inv_OtherIn_B.Act_InsertLineExecute(Sender: TObject);
begin
//把Detail中要用到的参数从BODY传过去
Frm_Entry_Detail.SetFormParam(cmbbx_OutType.text,Extedt_OutCode.text,currencyCode,Vendortaxrate_Percent,ExchRate,'');
TFrm_Inv_OtherIn_D(Frm_Entry_Detail).setformParam1(getCode(cmbbx_WhCode.text),getCode(cmbbx_WhPositionCode.text));
inherited;
end;
procedure TFrm_Inv_OtherIn_B.Act_ModifyExecute(Sender: TObject);
begin
//把Detail中要用到的参数从BODY传过去
Frm_Entry_Detail.SetFormParam(cmbbx_OutType.text,Extedt_OutCode.text,currencyCode,Vendortaxrate_Percent,ExchRate,'');
TFrm_Inv_OtherIn_D(Frm_Entry_Detail).setformParam1(getCode(cmbbx_WhCode.text),getCode(cmbbx_WhPositionCode.text));
inherited;
end;
procedure TFrm_Inv_OtherIn_B.FormActivate(Sender: TObject);
begin
if IsAfterprint=False then
begin
inherited;
end;
end;
procedure TFrm_Inv_OtherIn_B.Act_NewExecute(Sender: TObject);
begin
IsAfterprint:=False;
issecondinsert:=True;
outTypeposition:=cmbbx_OutType.ItemIndex;
outCode:=Extedt_OutCode.Text;
outName:=lbl_OutName.text;
inherited;
end;
procedure TFrm_Inv_OtherIn_B.Extedt_OutCodeExit(Sender: TObject);
var
currencyName:string;
begin
//inherited;
//如果是供应商,则选出供应产的税率,币种,如果币种为外币,还要取当前最近月份的汇率
//如果是部门或空,则不用取币种或税率
if cmbbx_OutType.text='供应商' then
begin
UsableVendorCodecheck(sender);
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.Add(' select Vendor.currencyCode,Vendor.VendorName,'+
' currency.currencyCode,currency.currencyName,'+
' Vendortaxrate_Percent '+
' from Vendor '+
' left join currency '+
' on Vendor.currencyCode=currency.currencyCode '+
' where Vendor.VendorCode='''+Extedt_OutCode.text+'''');
open;
lbl_OutName.text:=fieldbyname('VendorName').asstring;
currencyCode:=fieldbyname('currencyCode').asstring;
Vendortaxrate_Percent:=fieldbyname('Vendortaxrate_Percent').asstring;
lb_Vendortaxrate_Percent.text:=fieldbyname('Vendortaxrate_Percent').asstring+'%';
lbl_CurrencyName.text:=fieldbyname('currencyCode').asstring+' '+fieldbyname('currencyName').asstring;
currencyName:=fieldbyname('currencyCode').asstring+' '+fieldbyname('currencyName').asstring;
if currencyCode<>'00' then
begin
Close;
sql.clear;
sql.Add('select ExchRate from ExchRate where exchMonth='''+copy(medt_Date.text,1,7)+''' and currencyCode='''+currencyCode+'''');
open;
if not eof then
begin
ExchRate:=fieldbyname('ExchRate').asstring;
end
else
begin
//这里将存在一个问题,暂不考虑
DispInfo('该供应商主控货币'+currencyCode+' '+currencyName+'在'+copy(medt_Date.text,1,7)+' 月没有定义!',3);
ExchRate:='1';
end;
end;
end;
end
else
begin
if cmbbx_OutType.text='部门' then
begin
DeptCodecheck(sender);
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=' select DeptName from Dept where DeptCode='''+Trim(Extedt_OutCode.text)+''' ';
open;
lbl_OutName.text:=fieldbyname('DeptName').asstring;
end;
end
else
begin
lbl_OutName.text:='';
Extedt_OutCode.Text:='';
end;
lb_Vendortaxrate_Percent.text:='0'+'%';
Vendortaxrate_Percent:='0';
end;
Frm_Entry_Detail.SetFormParam(cmbbx_OutType.text,Extedt_OutCode.text,currencyCode,Vendortaxrate_Percent,ExchRate,medt_Date.text);
TFrm_Inv_OtherIn_D(Frm_Entry_Detail).setformParam1(getCode(cmbbx_WhCode.text),getCode(cmbbx_WhPositionCode.text));
end;
procedure TFrm_Inv_OtherIn_B.Extedt_OutCodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
if key=vk_F9 then
begin
if cmbbx_OutType.text='供应商' then VendorHint(sender,key,shift);
if cmbbx_OutType.text='部门' then DeptHint(sender,key,shift);
end
end;
procedure TFrm_Inv_OtherIn_B.Extedt_OutCodeButtonClick(Sender: TObject);
begin
inherited;
if cmbbx_OutType.text='供应商' then
CommonHint(Sender,AdoQry_Tmp,'VendorName','供应商名称','VendorCode',
'供应商代码','Vendor','VendorUsable=1');
if cmbbx_OutType.text='部门' then
CommonHint(Sender,AdoQry_Tmp,'DeptName','部门名称','DeptCode','部门代码','Dept');
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?