📄 indepot_unit.pas
字号:
unit InDepot_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids, Buttons,
DB, ADODB, RpRender, RpRenderCanvas, RpRenderPreview, RpRave, RpDefine,
RpCon, RpConDS, RpBase, RpSystem;
type
TfrmInDepot = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
cmbxType: TComboBox;
cmbxStockID: TComboBox;
lblInDepotID: TLabel;
lblProviderID: TLabel;
InDepotDatetime: TDateTimePicker;
memRemark: TMemo;
Panel2: TPanel;
Panel3: TPanel;
DBGrid1: TDBGrid;
lblAuditing: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
cmbxMedicineID: TComboBox;
edtBuyPrice: TEdit;
edtJobPrice: TEdit;
edtRetailPrice: TEdit;
edtAmount: TEdit;
ValidityDatetime: TDateTimePicker;
edtBatchCode: TEdit;
btnAuditing: TBitBtn;
btnPrint: TBitBtn;
btnSave: TBitBtn;
btnFind: TBitBtn;
btnAdd: TBitBtn;
btnDel: TBitBtn;
dsrInDepotHeader: TDataSource;
qryInDepotHeader: TADOQuery;
qryInDepotBody: TADOQuery;
qryMedicine: TADOQuery;
qryStock: TADOQuery;
dsrInDepotBody: TDataSource;
dsrMedicine: TDataSource;
dsrStock: TDataSource;
qryPrint: TADOQuery;
RvDataSetConnection1: TRvDataSetConnection;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
procedure btnAddClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure cmbxMedicineIDExit(Sender: TObject);
procedure cmbxStockIDChange(Sender: TObject);
procedure btnFindClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure btnDelClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnAuditingClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnPrintClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmInDepot: TfrmInDepot;
implementation
uses Common_Unit, LeechdomMain_Unit;
{$R *.dfm}
procedure TfrmInDepot.btnAddClick(Sender: TObject);
var
InsertHeaderStr, MaxID: string;
begin
qryInDepotBody.Close;
cmbxType.Text := '';
cmbxStockID.Text := '';
cmbxMedicineID.Text := '';
edtBuyPrice.Text := '';
edtJobPrice.Text := '';
edtRetailPrice.Text := '';
edtAmount.Text := '';
edtBatchCode.Text := '';
lblAuditing.Caption := '未审核';
lblProviderID.Caption := '自动带出';
MaxID := 'Exec proc_InDepot @Flag=''SelectMaxID''';
OpenDataSQL(frmLeechdomMain.qryMaxID, MaxID);
if frmLeechdomMain.qryMaxID.FieldByName('MaxID').AsString = '' then
lblInDepotID.Caption := 'SL' + FormatDatetime('yyyymm',Date) + '0001'
else
lblInDepotID.Caption := 'SL' + frmLeechdomMain.qryMaxID.FieldByName('MaxID').AsString;
end;
procedure TfrmInDepot.FormShow(Sender: TObject);
var
SelectStrSto,SelectStrMed, sID, sName: string;
begin
InDepotDatetime.Date := Date;
SelectStrSto := 'Select * From StockHeader';
cmbxStockID.Items.Clear;
OpenDataSQL(qryStock, SelectStrSto);
with qryStock do
begin
while not Eof do
begin
sID := FieldByName('StockID').AsString;
cmbxStockID.Items.Add(sID);
Next;
end;
end;
SelectStrMed := 'Select * From Medicine';
cmbxMedicineID.Items.Clear;
OpenDataSQL(qryMedicine, SelectStrMed);
with qryMedicine do
begin
while not Eof do
begin
sID := FieldByName('MedicineID').AsString;
sName := FieldByName('MedName').AsString;
cmbxMedicineID.Items.Add(sID + '.' + sName);
Next;
end;
end;
end;
procedure TfrmInDepot.cmbxMedicineIDExit(Sender: TObject);
begin
cmbxMedicineID.Text := Copy(cmbxMedicineID.Text,1,Pos('.',cmbxMedicineID.Text)-1);
end;
procedure TfrmInDepot.cmbxStockIDChange(Sender: TObject);
var
ProviderID: string;
begin
ProviderID := 'Select * From StockHeader where StockID=' + Quotedstr(cmbxStockID.Text);
OpenDataSQL(qryStock, ProviderID);
lblProviderID.Caption := qryStock.FieldByName('ProviderID').AsString;
end;
procedure TfrmInDepot.btnFindClick(Sender: TObject);
var
SelectAll, FindID: string;
FindBool: Boolean;
begin
try
FindID := lblInDepotID.Caption;
FindBool := InputQuery('查询', '输入查询的编号', FindID);
if FindBool then
begin
SelectAll := 'Exec proc_InDepot @Flag=''SelectInDepot'''
+',@InDepotID=' + Quotedstr(FindID);
OpenDataSQL(qryInDepotHeader, SelectAll);
OpenDataSQL(qryInDepotBody, SelectAll);
cmbxType.Text := qryInDepotHeader.FieldByName('InDepotType').AsString;
cmbxStockID.Text := qryInDepotHeader.FieldByName('StockID').AsString;
InDepotDatetime.Date := StrToDate(qryInDepotHeader.FieldByName('InTime').AsString);
lblInDepotID.Caption := qryInDepotHeader.FieldByName('InDepotID').AsString;
lblProviderID.Caption := qryInDepotHeader.FieldByName('ProviderID').AsString;
memRemark.Text := qryInDepotHeader.FieldByName('Remark').AsString;
lblAuditing.Caption := qryInDepotHeader.FieldByName('Auditing').AsString;
end;
except
Application.MessageBox('查询错误,请核实后重新查询!','错误',16);
lblInDepotID.Caption := '自动生成';
end;
end;
procedure TfrmInDepot.DBGrid1CellClick(Column: TColumn);
begin
if DBGrid1.DataSource.DataSet.IsEmpty then
Exit;
if qryInDepotBody.Active then
begin
cmbxMedicineID.Text := DBGrid1.DataSource.DataSet.FieldByName('MedicineID').AsString;
edtBuyPrice.Text := DBGrid1.DataSource.DataSet.FieldByName('ByPrice').AsString;
edtJobPrice.Text := DBGrid1.DataSource.DataSet.FieldByName('JobPrice').AsString;
edtRetailPrice.Text := DBGrid1.DataSource.DataSet.FieldByName('RetailPrice').AsString;
edtAmount.Text := DBGrid1.DataSource.DataSet.FieldByName('Amount').AsString;
ValidityDatetime.Date := DBGrid1.DataSource.DataSet.FieldByName('ValidityDatetime').AsDateTime;
edtBatchCode.Text := DBGrid1.DataSource.DataSet.FieldByName('BatchCode').AsString;
end;
end;
procedure TfrmInDepot.btnDelClick(Sender: TObject);
var
DelBodyStr, DelHeadStr, SelectBody, SelectAll: string;
begin
if lblAuditing.Caption = '已审核' then
begin
Application.MessageBox('已审核不能修改!','提示',16);
Exit;
end;
if DBGrid1.DataSource.DataSet.IsEmpty then
Exit;
if Application.MessageBox('确定要删除此条信息吗?','提示',68) = IDYes then
begin
DelBodyStr := 'Exec proc_InDepot @Flag=''DelInDepot'''
+ ',@InDepotID=' + Quotedstr(lblInDepotID.Caption)
+ ',@MedicineID=' + Quotedstr(cmbxMedicineID.Text)
+ ',@ValidityDatetime=' + Quotedstr(DateToStr(ValidityDatetime.Date));
DelHeadStr := 'Exec proc_InDepot @Flag=''DeleteHeader'''
+ ',@InDepotID = ' + QuotedStr(lblInDepotID.Caption);
ExecSQL(qryInDepotBody,DelBodyStr);
if FindSQL('Select * From InDepotBody where InDepotID=' + QuotedStr(lblInDepotID.Caption)) = False then
ExecSQL(qryInDepotHeader,DelHeadStr);
Application.MessageBox('明细删除成功!','提示',64);
SelectAll := 'Exec proc_InDepot @Flag=''SelectInDepot'''
+',@InDepotID=' + Quotedstr(lblInDepotID.Caption);
OpenDataSQL(qryInDepotBody, SelectAll);
end;
end;
procedure TfrmInDepot.btnSaveClick(Sender: TObject);
var
InsertHeader, InsertBody, SelectBody: string;
begin
try
if lblAuditing.Caption = '已审核' then
begin
Application.MessageBox('已审核不能再保存数据!','提示',16);
Exit;
end;
if (cmbxMedicineID.Text = '') or (edtBuyPrice.Text = '') or (edtJobPrice.Text = '') or (edtRetailPrice.Text = '') then
begin
Application.MessageBox('明细数据不能为空!','错误',16);
cmbxMedicineID.SetFocus;
Exit;
end;
if lblInDepotID.Caption = '自动生成' then
begin
Application.MessageBox('主项数据没有单号,请添加!','错误',16);
Exit;
end;
InsertHeader := 'Exec proc_InDepot @Flag=''InsertHeader'''
+ ',@StockID=' + Quotedstr(cmbxStockID.Text)
+ ',@InDepotID=' + Quotedstr(lblInDepotID.Caption)
+ ',@ProviderID=' + Quotedstr(lblProviderID.Caption)
+ ',@InTime=' + Quotedstr(DateToStr(InDepotDatetime.Date))
+ ',@InDepotType=' + Quotedstr(cmbxType.Text)
+ ',@AuditingPeople=' + Quotedstr(LoginID)
+ ',@Remark=' + Quotedstr(memRemark.Text);
InsertBody := 'Exec proc_InDepot @Flag=''InsertBody'''
+ ',@InDepotID=' + Quotedstr(lblInDepotID.Caption)
+ ',@ValidityDatetime=' + Quotedstr(DateToStr(ValidityDatetime.Date))
+ ',@MedicineID=' + Quotedstr(cmbxMedicineID.Text)
+ ',@ByPrice=' + edtBuyPrice.Text
+ ',@JobPrice=' + edtJobPrice.Text
+ ',@RetailPrice=' + edtRetailPrice.Text
+ ',@Amount=' + edtAmount.Text
+ ',@BatchCode=' + Quotedstr(edtBatchCode.Text);
SelectBody := 'Exec proc_InDepot @Flag=''SelectInDepot'''
+',@InDepotID=' + QUotedstr(lblInDepotID.Caption);
ExecSQL(qryInDepotHeader,InsertHeader);
ExecSQL(qryInDepotbody,InsertBody);
OpenDataSQL(qryInDepotBody, SelectBody);
except
Application.MessageBox('保存数据错误,请查实!','错误',16);
end;
end;
procedure TfrmInDepot.btnAuditingClick(Sender: TObject);
var
Auditing, Update: string;
begin
if lblAuditing.Caption = '已审核' then
begin
Application.MessageBox('不能重复审核!','提示',16);
Exit;
end;
if DBGrid1.DataSource.DataSet.IsEmpty then
Exit;
if Application.MessageBox('确定要审核此单吗?','提示',68) = IDNo then
Exit;
Auditing := 'Exec proc_InDepot @Flag=''UpdateAuditing'''
+',@InDepotID=' + Quotedstr(lblInDepotID.Caption);
Update := 'Exec proc_Storage @Flag=''InUpdateStorage'''
+ ',@InDepotID=' + Quotedstr(lblInDepotID.Caption);
ExecSQL(qryInDepotHeader,Update);
ExecSQL(qryInDepotHeader,Auditing);
Application.MessageBox('审核成功!','提示',64);
lblAuditing.Caption := '已审核';
end;
procedure TfrmInDepot.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
frmInDepot := nil;
end;
procedure TfrmInDepot.btnPrintClick(Sender: TObject);
var
PrintSQL: string;
begin
PrintSQL := 'Select A.*,B.*,C.*,D.*,E.* From InDepotHeader A'
+' Left Join InDepotBody B on A.InDepotID=B.InDepotID'
+' Left Join Medicine C on B.MedicineID=C.MedicineID'
+' Left Join Provider D on A.ProviderID=D.ProviderID'
+' Left Join StockHeader E on A.StockID=E.StockID'
+ ' where A.InDepotID =' + QuotedStr(lblInDepotID.Caption);
if lblInDepotID.Caption = '自动生成' then Exit;
OpenDataSQL(qryPrint, PrintSQL);
RvProject1.ProjectFile :='.\InDepotReport.rav';
RvProject1.Execute;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -