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 + -
显示快捷键?