📄 sell.~pas
字号:
unit sell;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ImgList, ComCtrls, StdCtrls, Buttons, Grids, DBGrids,
ToolWin;
type
TfrmSell = class(TForm)
CoolBar3: TCoolBar;
SpeedButton43: TSpeedButton;
SB_Save: TSpeedButton;
SpeedButton45: TSpeedButton;
SB_Add: TSpeedButton;
SB_Delete: TSpeedButton;
SpeedButton48: TSpeedButton;
SpeedButton49: TSpeedButton;
TVSell: TTreeView;
PC_Stock: TPageControl;
TB_Contract_List: TTabSheet;
DB_Sell_hdr: TDBGrid;
TB_Contract_Detail: TTabSheet;
GroupBox2: TGroupBox;
Label19: TLabel;
Label20: TLabel;
Label23: TLabel;
Label24: TLabel;
Label27: TLabel;
Label34: TLabel;
Label1: TLabel;
Label2: TLabel;
Label8: TLabel;
Cb_OutType: TComboBox;
Cb_CName: TComboBox;
Cb_UserName: TComboBox;
Cb_State: TComboBox;
Ed_RecMoeny: TEdit;
Ed_SellNo: TEdit;
Ed_TotalMoney: TEdit;
Memo: TMemo;
DT_SellDate: TDateTimePicker;
GroupBox1: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Cb_PType: TComboBox;
Cb_PName: TComboBox;
Cb_Unit: TComboBox;
BtAdd: TBitBtn;
BtDelete: TBitBtn;
Ed_Qty: TEdit;
Ed_Price: TEdit;
Ed_Rebate: TEdit;
DB_Sell_Detail: TDBGrid;
StatusBar4: TStatusBar;
ImageList1: TImageList;
DS_Sell_hdr: TDataSource;
DS_Sell_Detail: TDataSource;
ADO_Sell_hdr: TADOQuery;
ADO_Sell_Detail: TADOQuery;
Label9: TLabel;
procedure FormShow(Sender: TObject);
procedure TVSellClick(Sender: TObject);
procedure DS_Sell_hdrDataChange(Sender: TObject; Field: TField);
procedure SB_AddClick(Sender: TObject);
procedure SB_SaveClick(Sender: TObject);
procedure BtAddClick(Sender: TObject);
procedure Cb_OutTypeChange(Sender: TObject);
procedure Cb_OutTypeEnter(Sender: TObject);
procedure Cb_OutTypeExit(Sender: TObject);
procedure Cb_CNameExit(Sender: TObject);
procedure Cb_PTypeChange(Sender: TObject);
procedure Cb_PNameChange(Sender: TObject);
procedure SB_DeleteClick(Sender: TObject);
procedure BtDeleteClick(Sender: TObject);
procedure Ed_RebateChange(Sender: TObject);
procedure SpeedButton43Click(Sender: TObject);
private
procedure InitComboBoxValue();
function CheckEditValue():boolean;
procedure ClearEditValue();
function GetTotal_Money():string;
public
bEdit,bInsert,bSave:boolean;
sOldValue,sNewValue:string;
end;
var
frmSell: TfrmSell;
implementation
uses unit_main_dm;
{$R *.dfm}
procedure TfrmSell.FormShow(Sender: TObject);
var _sql,_sqldetail:string;
newcol:TColumn;
begin
InitComboBoxValue(); //初始化窗口中的CBX里的初始值
_sql:='exec sp_cjh_query_sell_hdr';
Main_DM.IniTreeView_OpenADOQuery(TVSell,ADO_Sell_hdr,'销售信息','Sell_No',_sql);
/////开始取出Stock_Detail表里的数据
//设置Stock_hdr里的字段和GRID里显示顺序
DB_Sell_hdr.Columns.Items[0].FieldName:='Sell_no';
DB_Sell_hdr.Columns.Items[1].FieldName:='Sell_Date';
DB_Sell_hdr.Columns.Items[2].FieldName:='Cust_ID';
DB_Sell_hdr.Columns.Items[3].FieldName:='Out_Type';
DB_Sell_hdr.Columns.Items[4].FieldName:='Total_Moeny';
DB_Sell_hdr.Columns.Items[5].FieldName:='Rec_Money';
DB_Sell_hdr.Columns.Items[6].FieldName:='handle';
DB_Sell_hdr.Columns.Items[7].FieldName:='Status';
DB_Sell_hdr.Columns.Items[8].FieldName:='note';
DB_Sell_detail.Columns.Items[0].FieldName:='Sell_no';
DB_Sell_detail.Columns.Items[1].FieldName:='Prod_ID';
DB_Sell_detail.Columns.Items[2].FieldName:='Unit_ID';
DB_Sell_detail.Columns.Items[3].FieldName:='Price';
DB_Sell_detail.Columns.Items[4].FieldName:='Qty';
DB_Sell_detail.Columns.Items[5].FieldName:='Rebate';
DB_Sell_detail.Columns.Items[6].FieldName:='Total_Moeny';
bEdit:=false;
bInsert:=false;
bSave:=false;
end;
procedure TfrmSell.TVSellClick(Sender: TObject);
begin
Main_DM.ClickTreeView(TVSell,ADO_Sell_hdr,'Sell_No');
end;
procedure TfrmSell.DS_Sell_hdrDataChange(Sender: TObject; Field: TField);
var _sql:string;
DT:TDate;
begin
if not ADO_Sell_hdr.IsEmpty then
begin
Ed_SellNo.Text:= Trim(ADO_Sell_hdr.FieldByName('Sell_no').AsString);
// TVStockIn.
if(ADO_Sell_hdr.FieldByName('Sell_Date').AsString='') then
DT_SellDate.Date:=Now()
else
DT_SellDate.DateTime:= StrToDate(Trim(ADO_Sell_hdr.FieldByName('Sell_Date').AsString));
Cb_OutType.Text:= Trim(ADO_Sell_hdr.FieldByName('Out_type').AsString);
Cb_CName.Text:= Trim(ADO_Sell_hdr.FieldByName('cust_id').AsString);
Ed_TotalMoney.Text:= Trim(ADO_Sell_hdr.FieldByName('total_moeny').AsString);
Ed_RecMoeny.Text:= Trim(ADO_Sell_hdr.FieldByName('Rec_money').AsString);
Cb_UserName.Text:= Trim(ADO_Sell_hdr.FieldByName('handle').AsString);
Cb_State.Text:= Trim(ADO_Sell_hdr.FieldByName('status').AsString);
Memo.Lines.Text:= Trim(ADO_Sell_hdr.FieldByName('note').AsString);
ADO_Sell_detail.Close;
ADO_Sell_detail.SQL.Clear;
_sql:='exec sp_cjh_query_sell_detail '''+Ed_SellNo.Text+'''';
ADO_Sell_detail.SQL.Add(_sql) ;
ADO_Sell_detail.Open;
SB_Save.Enabled:=false;
SB_Add.Enabled:=true;
bInsert:=false; //移动数据记录时把增加标志置为FALSE
end;
end;
procedure TfrmSell.SB_AddClick(Sender: TObject);
begin
ADO_Sell_hdr.Append;
Ed_SellNo.Text:=Main_DM.AutoCreateDateTimeNo(); //取得自动进货编号
if(PC_Stock.ActivePageIndex=0) then
PC_Stock.ActivePageIndex:=1;
SB_Save.Enabled:=true; //设置按纽使能状态
SB_Add.Enabled:=false;
//清空编辑框
Cb_Outtype.Text:='';
Cb_CName.Text:='';
DT_SellDate.Date:=Now();
Ed_RecMoeny.Text:='0';
Cb_UserName.Text:=Main_DM.sCurrentUser;
Ed_TotalMoney.Text:='0';
Memo.Text:='';
bInsert:=true;
end;
procedure TfrmSell.SB_SaveClick(Sender: TObject);
var newado:TADOQuery;i:integer;
_sql,newstockno:string;
E: EDatabaseError;
begin
newado:=TADOQuery.Create(self);
newado.Connection:=Main_DM.ADOConn;
newado.Close;
newado.SQL.Clear;
newstockno:= Ed_SellNO.Text;
_sql:='exec sp_cjh_insert_sell_hdr';
_sql:=_sql+' '+''''+Ed_SellNO.Text+'''';
_sql:=_sql+', '+''''+DateTimeToStr(DT_SellDate.Date)+'''';
_sql:=_sql+', '+''''+Cb_CName.Text+'''';
_sql:=_sql+', '+''''+Ed_RecMoeny.Text+'''';
_sql:=_sql+', '+''''+Cb_UserName.Text+'''';
_sql:=_sql+', '+''''+Cb_OutType.Text+'''';
_sql:=_sql+', '+''''+Memo.Text+'''';
newado.SQL.Add(_sql);
try
begin
newado.ExecSQL;
newado.Free;
bEdit:=true;
if bInsert then
begin
Main_DM.NewTreeNode(TVSell,newstockno);
SB_Save.Enabled:=false;
SB_Add.Enabled:=true;
end;
bInsert:=false; //增加按纽状态标志
ADO_Sell_hdr.Close;
ADO_Sell_hdr.Open;
///////如果没有选择中TV的话则下面就会出错,所以要这样处理一下,
for i:=0 to TVSell.Items.Count do
if TVSell.Items.Item[i].Text= newstockno then
begin
TVSell.Items.Item[i].Selected:=true;
Main_DM.ClickTreeView(TVSell,ADO_Sell_hdr,'Sell_No');//定位记录指针
break;
end;
end;
except
ShowMessage(E.Message);
bInsert:=false;
end;
end;
///////////
procedure TfrmSell.InitComboBoxValue(); //下拉列表框的数据初始化
var tmpado:TADOQuery;
_sql:string;
iProdID :integer;
begin
tmpado:=TADOQuery.Create(self);
tmpado.Connection:=Main_DM.ADOConn;
tmpado.Close;
tmpado.SQL.Clear;
Cb_OutType.Items.Clear;
Cb_CName.Items.Clear;
Cb_UserName.Items.Clear;
Cb_PType.Items.Clear;
Cb_PName.Items.Clear;
_sql:='select * from ms_out_type'; //进货类型
tmpado.SQL.Add(_sql);
tmpado.Open;
while not tmpado.Eof do
begin
Cb_OutType.Items.Add(Trim(tmpado.fieldbyname('out_type').AsString));
tmpado.Next;
end;
tmpado.SQL.Clear;
tmpado.Close;
_sql:='select * from ms_custer_hdr'; //客户主表
tmpado.SQL.Add(_sql);
tmpado.Open;
while not tmpado.Eof do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -