selsettlefrm.~pas
来自「群星医药系统源码」· ~PAS 代码 · 共 752 行 · 第 1/2 页
~PAS
752 行
GotoBookmark(Mark1);
FreeBookmark(Mark1);
EnableControls;
end;
end;
end;
procedure TFmSelSettle.RzDBButtonEdit1ButtonClick(Sender: TObject);
Var sEmpNo,sEmpName:String;
begin
If FEditMode=0 Then Exit;
sEmpNo := CdsSelSettleEmpNO.Value;
If SelectEmp(sEmpNo,sEmpName) Then begin
CdsSelSettleEmpNO.Value := sEmpNo;
CdsSelSettleEmpName.Value := sEmpName;
End;
end;
procedure TFmSelSettle.edDepartNameButtonClick(Sender: TObject);
var iDepartID : Integer;
sDepartNo, sDepartName: String;
begin
iDepartID := CdsSelSettleDepartID.AsInteger;
If SelectDepart(iDepartID, sDepartNo, sDepartName, 0) then begin
CdsSelSettleDepartID.AsInteger := iDepartID;
CdsSelSettleDepartNo.AsString := sDepartNo;
CdsSelSettleDepartName.AsString := sDepartName;
end;
end;
procedure TFmSelSettle.CdsSelSettleNewRecord(DataSet: TDataSet);
begin
edProvName.Button.Click;
edDepartName.Button.Click;
CdsSelSettleBillNo.Value := BuildBillNo('SelSettle');
CdsSelSettleCreater.Value := LogonInfo^.UserID;
CdsSelSettleGrup.Value := LogonInfo^.UserGrupID;
CdsSelSettleFDate.Value:=Date;
CdsSelSettlePayDate.Value:=Date;
CdsSelSettleGoodsQty.Value := 0;
CdsSelSettleGoodsSum.Value := 0;
CdsSelSettleTaxSum.Value := 0;
CdsSelSettleAmount.Value := 0;
end;
procedure TFmSelSettle.CdsSelSettleCustNoChange(Sender: TField);
Var
sCustNo,sCustName,LogText:String;
begin
IF FEditMode=0 Then Exit;
sCustNo:=CdsSelSettleCustNo.Value;
if sCustNo=BeforeCustNo Then Exit;
If sCustNo='' Then Begin
CdsSelSettleCustName.Value:='';
Exit;
End;
BeforeCustNo:=sCustNO;
sCustName:=VarToStr(SvrCommon.AppServer.GetCustInfo(iClientID,sCustNo,1,'CustName',LogText));
CdsSelSettleCustName.Value:=sCustName;
If LogText<>'' Then Begin
Messagebox(Handle,Pchar(LogText),nil,16);
Abort;
End;
end;
procedure TFmSelSettle.SumCount;
Var
dUnTaxPrice,dQty,dAmount,D,E,T:Double;
begin
T:=CdsSelSettleDtlTaxRate.AsFloat; //税率
dQty:=CdsSelSettleDtlQty.AsFloat; //数量
CdsSelSettleDtlPrice.AsFloat:=D*(E/100); //实际售价 //实际售价
dUnTaxPrice:=D*(E/100)/(1+T/100); //未税单价
CdsSelSettleDtlUnTaxPrice.AsFloat:=dUnTaxPrice;
CdsSelSettleDtlGoodsSum.AsFloat:=dQty*dUnTaxPrice; //货款;
dAmount:=dQty*D*(E/100); //合计;
CdsSelSettleDtlAmount.AsFloat:=dAmount;
CdsSelSettleDtlTaxSum.AsFloat:=dAmount-dQty*dUnTaxPrice; //税款
end;
procedure TFmSelSettle.ShowPayModes;
Var
A:Variant;
iClientID, I, k,iIndex:Integer;
begin
Try
iClientID := IFmMain.IFmMainEx.ClientID;
A:=SvrPchSettle.AppServer.GetNeedValue(iClientID,3,sPayModes);
If (Not VarIsNull(A)) And (VarIsArray(A)) Then
Begin
slPayModes.Clear;
cbPayModes.Items.Clear;
k := VarArrayHighBound(A,2);
for i:=VarArrayLowBound(A,2) to k do
Begin
slPayModes.Add(A[0,i]);
cbPayModes.Items.Add(A[0,i]+':'+A[1,i]+'('+A[2,i]+')');
End;
End;
iIndex := CdsSelSettleInOutKind.Value;
cbInOutKind.ItemIndex := iIndex;
iIndex := CdsSelSettleInvoiceType.Value;
cbInvoiceType.ItemIndex := iIndex;
Except
On E:Exception Do
Messagebox(Handle,Pchar(E.Message),'',16);
End;
end;
procedure TFmSelSettle.ActSaveExecute(Sender: TObject);
Var iIndex:Integer;
begin
If FEditMode=0 Then Exit;
iIndex:=cbPayModes.ItemIndex;
if iIndex<>-1 Then
CdsSelSettlePayModeNo.Value:=slPayModes[iIndex];
iIndex := cbInOutKind.ItemIndex;
if iIndex <> -1 Then
CdsSelSettleInOutKind.Value := iIndex;
iIndex := cbInvoiceType.ItemIndex;
If iIndex <> -1 Then
CdsSelSettleInvoiceType.Value := iIndex;
If (CdsSelSettleDtl.State In dsEditModes) Then
CdsSelSettleDtl.Post;
Inherited;
end;
procedure TFmSelSettle.CdsSelSettleReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
Messagebox(Handle,Pchar(E.Message),'',16);
Action:=RaAbort;
end;
procedure TFmSelSettle.dbgPchOrderDtlEditButtonClick(Sender: TObject);
var sField: String;
dPrice: Double;
begin
if FEditMode=0 then Exit;
sField := LowerCase(dbgPchOrderDtl.SelectedField.FieldName);
if sField='goodsid' then begin
ParseGoodsInfo;
end else if sField='price' then begin
dPrice := ViewGoodsPrice(CdsSelSettleDtlGoodsID.Value, CdsSelSettleDtlUnit.Value);
if dPrice>=0 then begin
CdsSelSettleDtl.Edit;
CdsSelSettleDtlPrice.Value := dPrice;
end;
end;
end;
procedure TFmSelSettle.CdsSelSettleEmpNOChange(Sender: TField);
Var
sEmpNo,sEmpName,LogText:String;
begin
IF FEditMode=0 Then Exit;
sEmpNo:=CdsSelSettleEmpNo.Value;
If sEmpNo='' Then Exit;
if sEmpNo=BeforeEmpNo Then Exit;
BeforeEmpNo:=sEmpNO;
sEmpName:=VarToStr(SvrCommon.AppServer.GetEmpInfo(iClientID,sEmpNo,1,'Name',LogText));
CdsSelSettleEmpName.Value:=sEmpName;
If LogText<>'' Then Begin
Messagebox(Handle,Pchar(LogText),nil,16);
Abort;
End;
end;
procedure TFmSelSettle.ActAuditExecute(Sender: TObject);
Var
sUserID,Str,sBranchMachine,sBillNo,MatchBillNo:String;
sSysInfo : Variant;
iBranchID,iMachineID : Integer;
begin
Try
If CdsSelSettle.IsEmpty Then Exit;
If FEditMode>0 then Exit;
Inherited;
If Application.MessageBox('确实要审核当前数据吗?','提示',4+32)<>6 Then Exit;
str := 'CurrMonth';
sSysInfo := SvrCommon.AppServer.GetSysInfo(iClientID,Str,1);
If Not(VarIsNull(sSysInfo)) Then Begin
If CdsSelSettleFDate.Value<VarToDateTime(sSysInfo) Then Begin
Messagebox(Handle,Pchar('单据日期不符,该月已完成月度结算...'),nil,16);
Exit;
End;
End Else Begin
Messagebox(Handle,Pchar('请先设置开帐日期...'),nil,16);
Exit;
End;
sBillNo := CdsSelSettleBillNo.AsString;
If sBillNo='' then Exit;
iBranchID := IFmMain.IFmMainEx.GetLocSetting^.BranchNo;
iMachineId := IFmMain.IFmMainEx.GetLocSetting^.MachineNo;
sBranchMachine := FormatFloat('000',iBranchID)+FormatFloat('00',iMachineID);
IF SvrPchSettle.AppServer.BillTurn(iClientID,'SelSettle','SellPay',sBillNo,sBranchMachine, MatchBillNo) Then
Begin
ActAudit.Enabled:=False and CanAudit;
ActRevert.Enabled:=True and CanRevert;
Lab_State.Caption:='单据状态:已审核';
Lab_State.Font.Color:=clRed;
ActRefreshExecute(NIL);
str := sBillNo+'号销售结算已成功转出到['+MatchBillNo+']号销售收款单,要查看该单据吗?';
if Application.MessageBox(PChar(str), '消息', MB_YESNO+MB_ICONINFORMATION)=IDYES then
IFmMain.DoSome(ActAudit.ModuleFile, 'ViewBill', MatchBillNo);
end Else
Messagebox(Handle,Pchar('[审核]数据不成功,可能是转单错误!'),nil,16);
Except
On E:Exception Do
Messagebox(Handle,Pchar(E.Message),nil,16);
End;
end;
procedure TFmSelSettle.ActRevertExecute(Sender: TObject);
Var BillNo: String;
begin
Try
If CdsSelSettle.IsEmpty Then Exit;
If FEditMode>0 then Exit;
Inherited;
If Application.MessageBox('确实要还原当前已审核过的数据吗?','提示',4+32)<>6 Then Exit;
BillNo := CdsSelSettleBillNo.Value;
If Not(SvrPchSettle.AppServer.BillRevert(iClientID,'PchOrder',BillNo,'')) Then
Messagebox(Handle,Pchar('还原数据不成功!'),nil,16)
Else Begin
ActAudit.Enabled:=True;
ActRevert.Enabled:=False;
Lab_State.Caption:='单据状态:未审核';
Lab_State.Font.Color:=clHotLight;
ActRefreshExecute(Nil);
End;
Except
On E:Exception Do
Messagebox(Handle,Pchar(E.Message),nil,16);
End;
End;
procedure TFmSelSettle.ActFieldLayoutExecute(Sender: TObject);
begin
SetFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name,
[dbgPchOrderDtl],'采购合同明细');
end;
procedure TFmSelSettle.ActDataExportExecute(Sender: TObject);
begin
ExportData([CdsSelSettle, CdsSelSettleDtl],'采购合同;采购合同明细', '');
end;
function TFmSelSettle.DoSome(cType: PChar; Values: Variant): Variant;
const
cTypes = 'viewbill'#13'query';
// 查看某单 查询
var sTypes: TStrings;
i, k: integer;
str, str2: String;
begin
sTypes := TStringList.Create;
sTypes.Text := cTypes;
i := sTypes.IndexOf(cType);
case i of
0: begin//ViewBill
if VarIsArray(Values) then begin
str := Values[0];
str2:= Values[1];
end else begin
str := Values;
str2:= '';
end;
if str2='' then begin
if sBillNoList.IndexOf(str)<0 then
sBillNoList.Add(str);
end else
sBillNoList.Text := str2;
self.BringToFront;
SetCurrBillNo(str);
end;
end;
end;
procedure TFmSelSettle.edProvNameButtonClick(Sender: TObject);
Var sCustNo,sCustName,sEmpNo,sPayModeNo:String;
begin
If FEditMode=0 Then Exit;
sCustNo := CdsSelSettleCustNo.Value;
If SelectCust(sCustNo,sCustName,sEmpNo,sPayModeNo) Then
Begin
CdsSelSettleCustNO.Value := sCustNo;
CdsSelSettleCustName.Value := sCustName;
CdsSelSettleEmpNO.Value := sEmpNo;
cbPayModes.ItemIndex := slPayModes.IndexOf(sPayModeNo);
End;
End;
procedure TFmSelSettle.ActBillTurnExecute(Sender: TObject);
var sBillNo, sToBillNo, str,MatchBillNo: String;
begin
if FEditMode>0 then Exit;
If Not(CdsSelSettleTransfer.Value) Then Begin
Messagebox(handle,Pchar('当前单据尚没[审核],不能进行转单操作!'),'警告',64);
Exit;
End;
sBillNo := CdsSelSettleBillNo.AsString;
if sBillNo='' then Exit;
if Application.MessageBox('确定要将此合同转出到来货登记吗?', '消息', MB_YESNO+MB_ICONQUESTION)=IDNO then
Exit;
sToBillNo := BuildBillNo('PchCheckIn');
If SvrPchSettle.AppServer.BillTurn(iClientID, 'PchOrder', 'PchCheckIn', sBillNo, sToBillNo,MatchBillNo) then begin
ActRefresh.Execute;
str := sBillNo+'号合同已成功转出到['+MatchBillNo+']号来货登记单,要查看该单据吗?';
If Application.MessageBox(PChar(str), '消息', MB_YESNO+MB_ICONINFORMATION)=IDYES then
IFmMain.DoSome(ActBillTurn.ModuleFile, 'ViewBill', MatchBillNo);
end;
end;
procedure TFmSelSettle.RzDBButtonEdit2ButtonClick(Sender: TObject);
Var
sCustNo,sLinkMan : String;
begin
If FEditMode=0 Then Exit;
If RzDBEdit9.Text='' Then Begin
MessageBox(Handle,Pchar('请先指定供应厂商!'),nil,16);
Exit;
End;
sCustNo := CdsSelSettleCustNo.Value;
If SelectCustLinkMan(sCustNo,sLinkMan) Then
CdsSelSettleLinkMan.Value := sLinkMan ;
end;
procedure TFmSelSettle.ActQueryExecute(Sender: TObject);
begin
IFmMain.OnAction(Sender);
end;
procedure TFmSelSettle.ParseGoodsInfo;
var sGoodsID,sCustNo,sUnit:string;
dPrice: Double;
b1: Boolean;
begin
if FEditMode=0 then Exit;
if bBrowGoods then Exit;
bBrowGoods := true;
try
b1:=SelectGoods(CdsSelSettleDtl, CdsSelSettleDtlGoodsID, CdsSelSettleDtlUnit, true, False, False);
if not b1 then abort;
sGoodsID := CdsSelSettleDtlGoodsID.Value;
sCustNo := CdsSelSettleCustNo.Value;
sUnit := CdsSelSettleDtlUnit.Value;
if (sGoodsID<>'') And (sUnit<>'') Then Begin
dPrice := SvrCommon.AppServer.GetGoodsPrice(IClientID,'S',sCustNo,sGoodsID,sUnit);
if dPrice<>0 Then
CdsSelSettleDtlPrice.Value := dPrice;
End;
finally
bBrowGoods := false;
end;
end;
procedure TFmSelSettle.CdsSelSettleDtlGoodsIDChange(Sender: TField);
begin
ParseGoodsInfo;
end;
procedure TFmSelSettle.CdsSelSettleDtlAfterCancel(DataSet: TDataSet);
begin
FCanInsert := false;
end;
initialization
RegisterClass(TFmSelSettle);
finalization
UnRegisterClass(TFmSelSettle);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?