📄 stock_pay.pas
字号:
unit Stock_Pay;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, XPMenu;
type
Tfrm_Stock_Pay = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
Cmd_Exit: TSpeedButton;
Panel3: TPanel;
Edit1: TLabeledEdit;
GroupBox1: TGroupBox;
SpeedButton7: TSpeedButton;
SpeedButton9: TSpeedButton;
Label4: TLabel;
Label5: TLabel;
SpeedButton6: TSpeedButton;
Edit9: TLabeledEdit;
Edit10: TLabeledEdit;
Edit11: TLabeledEdit;
Edit12: TLabeledEdit;
Edit6: TComboBox;
Edit7: TComboBox;
Edit4: TLabeledEdit;
Edit5: TLabeledEdit;
Edit2: TLabeledEdit;
Panel5: TPanel;
Panel6: TPanel;
Panel8: TPanel;
Label2: TLabel;
Label3: TLabel;
Panel7: TPanel;
Panel10: TPanel;
Cmd_Delete: TSpeedButton;
Cmd_Add: TSpeedButton;
P_Check: TPanel;
StringGrid1: TStringGrid;
lbjs: TLabel;
lbwj: TLabel;
Label1: TLabel;
procedure Cmd_ExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure Cmd_AddClick(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure Cmd_DeleteClick(Sender: TObject);
procedure StringGrid1DblClick(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
private
{ Private declarations }
pcol,prow:integer;
iColcount,Total_Count:Integer;
ss,tempstr:string;
procedure init;
procedure ChangGRID(btypes:boolean);
function READGoodsORBill(Accountid:string;BILLTYPE:boolean):boolean;
public
{ Public declarations }
end;
var
frm_Stock_Pay: Tfrm_Stock_Pay;
implementation
uses Public_Don, Data, func, untdatadm, Uinputselect, Login_Man,
Unt_PubStrGrid, Supply_Monad, Unitreportxf;
{$R *.dfm}
////////////////////////////////////////////////////
procedure Tfrm_Stock_Pay.ChangGRID(btypes:boolean);
var
i:integer;
begin
for i:=1 to stringgrid1.RowCount-1 do
begin
stringgrid1.Rows[i].Clear;
end;
stringgrid1.RowCount:=2;
if btypes then
begin
StringGrid1.Cells[0,0]:='序号';
StringGrid1.Cells[1,0]:='商品编号';
StringGrid1.Cells[2,0]:='商品名称';
end else
begin
StringGrid1.Cells[0,0]:='序号';
StringGrid1.Cells[1,0]:='单据编号';
StringGrid1.Cells[2,0]:='单据日期';
end;
StringGrid1.Cells[3,0]:='应付金额';
StringGrid1.Cells[4,0]:='本次结算金额';
StringGrid1.ColWidths[4]:=90;
StringGrid1.Cells[5,0]:='已结算金额';
StringGrid1.Cells[6,0]:='未结算金额';
end;
function tfrm_Stock_Pay.READGoodsORBill(Accountid:string;BILLTYPE:boolean):boolean; //按行或按单;
var
i:integer;
sql:widestring;
begin
if billtype then
begin
sql:='EXEC FILLGRIDS '+''''+trim('1')+''''+','+''''+TRIM(ACCOUNTID)+'''';
dmmain.CDSquery2.Close;
dmmain.CDSquery2.Data:=adisp.resultrecord(sql);
dmmain.CDSquery2.Open;
end else
begin
sql:='EXEC FILLGRIDS '+''''+trim('0')+''''+','+''''+TRIM(ACCOUNTID)+'''';
dmmain.CDSquery2.Close;
dmmain.CDSquery2.Data:=adisp.resultrecord(sql);
dmmain.CDSquery2.Open;
end;
if not dmmain.CDSquery2.IsEmpty then
begin
if stringgrid1.RowCount>2 then
stringgrid1.RowCount:=stringgrid1.RowCount+dmmain.CDSquery2.RecordCount-1;
i:=stringgrid1.RowCount-1;
while not dmmain.CDSquery2.Eof do
begin
stringgrid1.Cells[0,i]:=inttostr(i);
stringgrid1.Cells[1,i]:=trim(dmmain.CDSquery2.fieldbyname('account_no').AsString);
stringgrid1.Cells[2,i]:=trim(dmmain.CDSquery2.fieldbyname('account_name').AsString);
//stringgrid1.Cells[3,i]:=trim(dmmain.CDSquery2.fieldbyname('baseprice').AsString);
stringgrid1.Cells[3,i]:=trim(dmmain.CDSquery2.fieldbyname('account_money').AsString);
stringgrid1.Cells[4,i]:='0';
stringgrid1.Cells[5,i]:=trim(dmmain.CDSquery2.fieldbyname('foot').AsString);
stringgrid1.Cells[6,i]:=trim(dmmain.CDSquery2.fieldbyname('UNfoot').AsString);
dmmain.CDSquery2.Next;
inc(i);
end;
end;
end;
///////////////////////////
procedure tfrm_stock_pay.init;
var
i:integer;
TEMP,MAKE:STRING;
begin
ChangGRID(false);
EDIT1.Text:=FORMATDATETIME('YYYY''-''MM''-''DD',DATE);
StringGrid1.Cells[0,1]:='1';
temp:='select max(right(stock_no,4)) from PayReciveBill where copy_date='+''''+formatdatetime('yyyy''-''mm''-''dd',date)+'''';
make:='FK-'+trim(Handle_Part)+trim(handle_no); //编码中为部门编号;
edit2.Text:=setcode(temp,make);
edit10.Text:=trim(Handle_Man);
end;
procedure Tfrm_Stock_Pay.Cmd_ExitClick(Sender: TObject);
var
i,j,icol,t:integer;
Check_Flag:string;
sql:widestring;
begin
frm_Public_Don:=Tfrm_Public_Don.Create(self);
frm_Public_Don.ShowModal;
if Public_Do='Stock_0005' then
begin
if func.Public_Do_Result='02' then //保存草稿
begin
if Trim(Edit1.Text)='' then
begin
Application.MessageBox('操作错误,【录单日期】不能为空!,请确认!',pchar(application.Title),mb_iconwarning);
Edit1.SetFocus;
Exit;
end;
if Trim(Edit2.Text)='' then
begin
Application.MessageBox('操作错误,【单据编号】不能为空!,请确认!',pchar(application.Title),mb_iconwarning);
Edit2.SetFocus;
Exit;
end;
if Trim(Edit4.Text)='' then
begin
Application.MessageBox('操作错误,【票据编号】不能为空!,请确认!',pchar(application.Title),mb_iconwarning);
Edit4.SetFocus;
Exit;
end;
if Trim(Edit5.Text)='' then
begin
Application.MessageBox('操作错误,【入库单号】不能为空!,请确认!',pchar(application.Title),mb_iconwarning);
Edit5.SetFocus;
Exit;
end;
for j:=1 to StringGrid1.RowCount-1 do
begin
if StringGrid1.Cells[5,j]='' then
begin
Application.MessageBox('操作错误,【结算金额】不能为空!,请确认!',pchar(application.Title),mb_iconwarning);
Exit;
end;
end;
sql:='SELECT * FROM PayReciveBill where Copy_date='''+Trim(Edit1.Text)+''' and Stock_No='''+Trim(Edit2.Text)+''' and billtype=0';
dmmain.CDSquery2.Close;
dmmain.CDSquery2.Data:=null;
dmmain.CDSquery2.Data:=adisp.resultrecord(sql);
dmmain.CDSquery2.Open;
if dmmain.CDSquery2.RecordCount>0 then
begin
Application.MessageBox('添加失败,该记录已经存在,请确认!',pchar(application.Title),mb_iconwarning);
Exit;
end else
begin
if not dmmain.cdspay.Active then dmmain.cdspay.Open;
if not dmmain.cdspaydetail.Active then dmmain.cdspaydetail.Open;
if not dmmain.cdsreceipt.Active then dmmain.cdsreceipt.Open;
dmmain.cdspay.Insert;
dmmain.cdspay.FieldByName('billtype').AsString:='0';
dmmain.cdspay.FieldByName('copy_date').AsString:=trim(edit1.Text);
dmmain.cdspay.FieldByName('stock_no').AsString:=trim(edit2.Text);
dmmain.cdspay.FieldByName('stock_name').AsString:='采购付款单';
dmmain.cdspay.FieldByName('Contract_NO').AsString:=trim(edit6.Text); //付款方式
dmmain.cdspay.FieldByName('bill_no').AsString:=trim(edit4.Text);
dmmain.cdspay.FieldByName('join_no').AsString:=trim(wldwno);//往来单位编号
dmmain.cdspay.FieldByName('Balance_Modal').AsString:=trim(edit7.Text);
dmmain.cdspay.FieldByName('gather_Name').AsString:=trim(edit5.Text);
dmmain.cdspay.FieldByName('transactor').AsString:=trim(edit9.Text );
dmmain.cdspay.FieldByName('proposer').AsString:=trim(edit10.Text);
dmmain.cdspay.FieldByName('AccountId').AsString:=trim(edit2.Text);
dmmain.cdspay.FieldByName('Condense').AsString:=trim(edit11.Text);
dmmain.cdspay.FieldByName('remark').AsString:=trim(edit12.Text);
dmmain.cdspay.FieldByName('type').Asinteger:=edit7.ItemIndex;
dmmain.cdspay.Post;
dmmain.cdsReceipt.Open;
dmmain.cdsReceipt.Append;
dmmain.cdsReceipt.FieldByName('Receipt_NO').AsString:=trim(edit2.Text);
dmmain.cdsReceipt.FieldByName('Receipt_Name').AsString:='采购付款单';
dmmain.cdsReceipt.FieldByName('Copy_Date').AsString:=trim(edit1.Text);
dmmain.cdsReceipt.FieldByName('Proposer').AsString:=trim(edit10.Text);
dmmain.cdsReceipt.FieldByName('Condense').AsString:=trim(edit11.Text);
dmmain.cdsReceipt.FieldByName('Check_Result').Asinteger:=0;
dmmain.cdsReceipt.FieldByName('Flag_Sign').AsString:='草稿';
dmmain.cdsReceipt.FieldByName('Re_part').AsString:=trim(Handle_Part);
dmmain.cdsReceipt.Post;
for i:=1 to StringGrid1.RowCount-1 do
begin
dmmain.cdspaydetail.Insert;
dmmain.cdspaydetail.FieldByName('ord').Asinteger:=i;
dmmain.cdspaydetail.FieldByName('stock_no').AsString:=trim(edit2.Text);
dmmain.cdspaydetail.FieldByName('Account_NO').AsString:=trim(StringGrid1.Cells[1,i]);
dmmain.cdspaydetail.FieldByName('Account_name').AsString:=trim(StringGrid1.Cells[2,i]);
dmmain.cdspaydetail.FieldByName('Account_money').AsString:=trim(StringGrid1.Cells[3,i]);
dmmain.cdspaydetail.FieldByName('good_id').AsString:=trim(StringGrid1.Cells[1,i]);
dmmain.cdspaydetail.FieldByName('Settlemented_money').AsString:=trim(StringGrid1.Cells[4,i]);//已结算
dmmain.cdspaydetail.FieldByName('NonSettlemented_money').AsString:=trim(StringGrid1.Cells[6,i]);//未结算
dmmain.cdspaydetail.FieldByName('Account_Remark').AsString:=trim(StringGrid1.Cells[3,i]);
dmmain.cdspaydetail.Post;
end;
try
dmmain.cdsReceipt.ApplyUpdates(-1);
dmmain.cdspay.ApplyUpdates(-1);
dmmain.cdspaydetail.ApplyUpdates(-1);
setnull(frm_Stock_Pay);
init;
except
application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
exit;
end;
end;
end;
if func.Public_Do_Result='03' then // 废弃退出
begin
frm_data.ClientDataSet_Add.Active:=False;
frm_data.ClientDataSet_Add.Close;
frm_data.ClientDataSet2.Active:=False;
frm_data.ClientDataSet2.Close;
Close;
end;
end;
//草稿单据的操作
if Public_Do<>'Stock_0005' then
begin
if Public_Do_Result='02' then //保存审核后的草稿
begin
if not bedit then
begin
if trim(Handle_Man)<>trim(edit10.Text) then
begin
Application.MessageBox('不能修改数据!',pchar(application.Title),mb_iconinformation);
exit;
end;
end;
dmmain.cdspay.edit;
dmmain.cdspay.FieldByName('Contract_NO').AsString:=trim(edit4.Text);
dmmain.cdspay.FieldByName('bill_no').AsString:=trim(edit4.Text);
dmmain.cdspay.FieldByName('join_no').AsString:=trim(wldwno);
dmmain.cdspay.FieldByName('Balance_Modal').AsString:=trim(edit7.Text);
dmmain.cdspay.FieldByName('gather_Name').AsString:=trim(edit5.Text);
dmmain.cdspay.FieldByName('transactor').AsString:=trim(edit9.Text );
dmmain.cdspay.FieldByName('proposer').AsString:=trim(edit10.Text);
dmmain.cdspay.FieldByName('AccountId').AsString:=trim(edit2.Text);
dmmain.cdspay.FieldByName('Condense').AsString:=trim(edit11.Text);
dmmain.cdspay.FieldByName('remark').AsString:=trim(edit12.Text);
dmmain.cdspay.Post;
for i:=1 to StringGrid1.RowCount-1 do
begin
dmmain.cdspaydetail.edit;
dmmain.cdspaydetail.FieldByName('ord').Asinteger:=i;
dmmain.cdspaydetail.FieldByName('stock_no').AsString:=trim(edit2.Text);
dmmain.cdspaydetail.FieldByName('Account_NO').AsString:=trim(StringGrid1.Cells[1,i]);
dmmain.cdspaydetail.FieldByName('Account_name').AsString:=trim(StringGrid1.Cells[2,i]);
dmmain.cdspaydetail.FieldByName('Account_money').AsString:=trim(StringGrid1.Cells[3,i]);
dmmain.cdspaydetail.FieldByName('good_id').AsString:=trim(StringGrid1.Cells[1,i]);
dmmain.cdspaydetail.FieldByName('Settlemented_money').AsString:=trim(StringGrid1.Cells[4,i]);
dmmain.cdspaydetail.FieldByName('NonSettlemented_money').AsString:=trim(StringGrid1.Cells[6,i]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -