⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ckjh_jjw.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 4 页
字号:
begin
  {计算出库总金额}
  with qry_Detail do
  begin
    Edit;
    if (FieldByName('XJ').AsString <> '') and (FieldByName('FPSL').AsString <> '') then
      FieldByName('CKZJE').AsFloat := FieldByName('XJ').AsFloat * FieldByName('FPSL').AsInteger;

    {用结算价计算出结算金额}
    if (FieldByName('ZK').AsString = '0') or (FieldByName('ZK').AsString = '') then
      if (FieldByName('JSJ').AsString <> '') and (FieldByName('FPSL').AsString <> '') then
        FieldByName('JSJE').AsFloat := FieldByName('JSJ').AsFloat * FieldByName('FPSL').AsInteger;

    {用折扣计算出结算金额}
    if (FieldByName('JSJ').AsString = '0') or (FieldByName('JSJ').AsString = '') then
      if (FieldByName('ZK').AsString <> '') and (FieldByName('FPSL').AsString <> '')
        and (FieldByName('XJ').AsString <> '') then
        FieldByName('JSJE').AsFloat := (FieldByName('ZK').AsFloat / 100) * FieldByName('FPSL').AsInteger
          * FieldByName('XJ').AsFloat;
  end;
end;

{-------------------------------------------------------------------------------}
{保存数据}
procedure TFrm_CKJH_JJW.bbtn_SaveClick(Sender: TObject);
var
  l_Caption: String;
  l_TmpDH: String;
begin
  if not Can_CK(l_Caption) then
  begin
    Application.MessageBox(Pchar(l_Caption), '提示', 48 + mb_ok);
    Exit;
  end;

  try
    Data.DM.StartTransaction;
    Save_Info;                                              {保存出库信息}
    Data.DM.Commit;

  except
    if Data.DM.InTransaction then
      Data.DM.Rollback;
    Application.MessageBox(Pchar('制定出库计划单时发生错误!'), '提示', 48 + mb_ok);
    qry_Detail.EnableControls;
    Exit;
  end;

  qry_Detail.EnableControls;
  Set_State(False);                                         {设置界面可修改状态}
  {涮洗界面缺}
  l_TmpDH := VL_CKJHDH;
  bbtn_Search.Click;
  qry_List.Locate('CKJHDH', l_TmpDH, []);
end;

{-------------------------------------------------------------------------------}
{取消}
procedure TFrm_CKJH_JJW.bbtn_CancelClick(Sender: TObject);
begin
  {询问}
  if Application.MessageBox('是否要取消对出库计划单的修改?', '询问', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = mrNo then
    Exit;

  qry_Detail.CancelUpdates;
  qry_List.CancelUpdates;
  qry_Detail.CommitUpdates;
  qry_List.CommitUpdates;

  {※※※顺序不可以更换※※※}
  Set_State(False);                                         {设置界面可修改状态}
  qry_List.AfterScroll(nil);                                {刷新数据}

  if VL_CKJHDH = '' then                                    {新增时}
    pgc_JY.ActivePageIndex := 0;
end;

{-------------------------------------------------------------------------------}
{判断是否可以出库 判断库存缺}
function TFrm_CKJH_JJW.Can_CK(var A_Caption: string): boolean;
var
  l_dbgPlace: TBookMark;
  l_Index: Integer;
begin
  Result := False;
  if qry_Detail.IsEmpty then
  begin
    A_Caption := '计划分配单不能为空!';
    Exit;
  end;

  {取计划单中的分配总数}
  with qry_Detail do
  try
    AfterScroll := nil;
    l_dbgPlace := GetBookMark;
    First;
    while not Eof do
    begin
      if Trim(FieldByName('FPSL').AsString) = '' then
        A_Caption := '"' + FieldByName('PPMC').AsString + '"的分配数量不能为空!'
      else if FieldByName('FPSL').AsInteger <= 0 then
        A_Caption := '"' + FieldByName('PPMC').AsString + '"的分配数量必须合法!';

      if ((FieldByName('JSJ').AsString = '') or (FieldByName('JSJ').IsNull))
        and ((FieldByName('ZK').AsString = '') or (FieldByName('ZK').IsNull)) then
        A_Caption := '"' + FieldByName('PPMC').AsString + '"的结算价和折扣必须合法!';

      {判断库存是否足够}
      l_Index := VL_PPDMList.IndexOf(FieldByName('PPDM').AsString);
      if l_Index > -1 then
        if StrToFloat(VL_PPKCList[l_Index]) < FieldByName('FPSL').AsFloat then
          A_Caption := '"' + FieldByName('PPMC').AsString + '"的的库存不够!';
      Next;
    end;
    GotoBookMark(l_dbgPlace);
  finally
    FreeBookMark(l_dbgPlace);
    AfterScroll := qry_DetailAfterScroll;
  end;

  if Trim(A_Caption) <> '' then                             {分配数量不能为空!}
    Exit;

  Result := True;

end;

{-------------------------------------------------------------------------------}
{保存}
procedure TFrm_CKJH_JJW.Save_Info;
begin
  {出库计划单表TYS_JYCKJHDB}{CKJHDH, CKXZ, ZBR, PZR, ZDRQ, BZ, ZT}
  if Trim(VL_CKJHDH) = '' then {新增}                       {}
  begin
    VL_CKJHDH := Create_DH('g_jypfpd', 'JW', '', '');       {调用存储过程,生成单号}
    with qry_tmp do
    begin
      Close;
      SQL.Text := 'insert into TYS_JYCKJHDB (CKJHDH, CKXZ, ZBR, PZR, ZDRQ, ZT) values(' +
        QuotedStr(VL_CKJHDH) + ', ' + QuotedStr(qry_List.FieldByName('CKXZ').AsString) + ', ' +
        QuotedStr(VG_USERName) + ', ' + QuotedStr('') + ', ' +
        ' Trunc(sysdate, ''DD'') , ' + QuotedStr('0') +
        ')';
      ExecSQL;
    end;
  end
  else {修改}                                               {}
  begin
    with qry_tmp do
    begin
      Close;
      SQL.Text := 'update TYS_JYCKJHDB set ' +
        '  ZBR = ' + QuotedStr(VG_USERName) + ', ' +
        '  ZDRQ = Trunc(sysdate, ''DD''), ' +
        '  ZT = ' + QuotedStr('0') +
        ' where  CKJHDH = ' + QuotedStr(VL_CKJHDH);
      ExecSQL;
    end;
  end;

  {出库计划单票品表TYS_JYCKJHDPPB}{删除后,重新添加票品}
  with qry_tmp do
  begin
    Close;
    SQL.Text := 'delete  TYS_JYCKJHDPPB where  CKJHDH = ' + QuotedStr(VL_CKJHDH);
    ExecSQL;
  end;

  with qry_Detail do
  begin
    DisableControls;
    First;
    while not Eof do
    begin
      qry_tmp.Close;
      qry_tmp.SQL.Text := 'insert into  TYS_JYCKJHDPPB (CKJHDH, DWDM, PPDM, KFDM, PPMC, JJ , XJ, ZK, JSJ, FPSL,DWMC)values( ' +
        QuotedStr(VL_CKJHDH) + ', ' +
        QuotedStr(FieldByName('DWDM').AsString) + ', ' +
        QuotedStr(FieldByName('PPDM').AsString) + ', ' +
        QuotedStr(FieldByName('KFDM').AsString) + ', ' +
        QuotedStr(FieldByName('PPMC').AsString) + ', ' +
        QuotedStr(FloatToStr(FieldByName('JJ').AsFloat * 100)) + ', ' +
        QuotedStr(FloatToStr(FieldByName('XJ').AsFloat * 100)) + ', ' +
        QuotedStr(FieldByName('ZK').AsString) + ', ' +
        QuotedStr(FloatToStr(FieldByName('JSJ').AsFloat * 100)) + ', ' +
        QuotedStr(FieldByName('FPSL').AsString) + ',' +
        //        QuotedStr(FieldByName('DWMC').AsString) +
      QuotedStr(qry_List.FieldByName('DWJC').AsString) +

      ' )';
      qry_tmp.ExecSQL;

      Next;
    end;
    EnableControls;
  end;

  {如果是有源头的,则置其状态}
  if VL_QLDH <> '' then
    with qry_Tmp do
    begin
      Close;
      SQL.Text := 'update TY_JJWXQB set ZT =1 where QLDH =' + QuotedStr(VL_QLDH);
      ExecSQL;
    end;

end;

{-------------------------------------------------------------------------------}
{生产单号}
function TFrm_CKJH_JJW.Create_DH(A_BILLID, A_SORTCODE, A_DEPARTMENT,
  A_CYEAR: string): string;
begin
  with sp_DH do
  begin
    ParamByName('BILLID').AsString := a_BILLID;
    ParamByName('SORTCODE').AsString := a_SORTCODE;
    ParamByName('DEPARTMENT').AsString := a_DEPARTMENT;
    ParamByName('CYEAR').AsString := a_CYEAR;
    ExecProc;

    Result := Params[0].AsString;
  end;
end;

{-------------------------------------------------------------------------------}
{删除分配单}
procedure TFrm_CKJH_JJW.bbtn_DelClick(Sender: TObject);
begin
  if qry_Detail.IsEmpty then
    Exit;

  if not (qry_List.FieldByName('ZT').AsString = '0') then
  begin
    Application.MessageBox(Pchar('该计划分配单已经签批,不能删除!'), '提示', 48 + mb_ok);
    Exit;
  end;

  {询问}
  if Application.MessageBox('是否要删除该出库计划单?', '询问', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = mrNo then
    Exit;

  try
    Data.DM.StartTransaction;

    {删除出库计划单票品表TYS_JYCKJHDPPB}
    with qry_tmp do
    begin
      Close;
      SQL.Text := 'Delete from TYS_JYCKJHDPPB where CKJHDH =' + QuotedStr(qry_List.FieldByName('CKJHDH').AsString);
      ExecSQL;
    end;
    {删除出库计划单表TYS_JYCKJHDB}
    with qry_tmp do
    begin
      Close;
      SQL.Text := 'Delete from TYS_JYCKJHDB where CKJHDH =' + QuotedStr(qry_List.FieldByName('CKJHDH').AsString);
      ExecSQL;
    end;

    Data.DM.Commit;
  except
    if Data.DM.InTransaction then
      Data.DM.Rollback;
    Application.MessageBox(Pchar('删除出库计划单时发生错误!'), '提示', 48 + mb_ok);
    Exit;
  end;

  bbtn_Search.Click;
  qry_List.Locate('CKJHDH', VL_CKJHDH, []);
end;

{-------------------------------------------------------------------------------}
{修改}
procedure TFrm_CKJH_JJW.bbtn_ModifyClick(Sender: TObject);
begin
  if qry_Detail.IsEmpty then
    Exit;

  if not (qry_List.FieldByName('ZT').AsString = '0') then
  begin
    Application.MessageBox(Pchar('该计划分配单已经签批,不能修改!'), '提示', 48 + mb_ok);
    Exit;
  end;

  VL_CKJHDH := qry_Detail.FieldByName('CKJHDH').AsString;   {修改}
  GetGG(qry_Detail.FieldByName('PPDM').AsString);           {取得凑整的规格}
  Set_State(True);                                          {修改分配计划单}

end;

{-------------------------------------------------------------------------------}
{添加票品}
procedure TFrm_CKJH_JJW.bbtn_AddPPClick(Sender: TObject);
var
  l_Mark: TBookMark;
  l_PPDMList: TStringList;
begin
  {取得已经选择的票品代码}
  l_PPDMList := TStringList.Create;

  if not qry_Detail.IsEmpty then
  try
    qry_Detail.AfterScroll := nil;
    qry_Detail.DisableControls;
    l_Mark := qry_Detail.GetBookmark;
    qry_Detail.First;
    while not qry_Detail.Eof do
    begin
      //      l_PPDMList.Add(qry_Detail.FieldByName('PPDM').AsString);
      l_PPDMList.Add('PPDM=' + QuotedStr(qry_Detail.FieldByName('PPDM').AsString) + ' and KFDM=' + QuotedStr(qry_Detail.FieldByName('KFDM').AsString) + ' and JJ=' + FloatToStr(qry_Detail.FieldByName('JJ').AsFloat * 100));
      qry_Detail.Next;
    end;
  finally
    qry_Detail.GotoBookmark(l_Mark);
    qry_Detail.FreeBookmark(l_Mark);
    qry_Detail.EnableControls;
    qry_Detail.AfterScroll := qry_DetailAfterScroll;
  end;
  {打开窗口供用户选择}
  with TFrm_CKJH_JJW_AddPP2.Create(Application) do
  try
    qry_Detail.BeforeInsert := nil;
    qry_Detail.AfterScroll := nil;
    Set_TJ(l_PPDMList);
    if ShowModal = mrOk then
      Add_WYTSJ(qry_List.FieldByName('DWDM').AsString, qry_SelPP, dbg_PP);
  finally
    free;
    qry_Detail.AfterScroll := qry_DetailAfterScroll;
    qry_Detail.BeforeInsert := qry_DetailBeforeInsert;
  end;

  l_PPDMList.Free;
  qry_Detail.AfterScroll(nil);
end;

{-------------------------------------------------------------------------------}
{删除票品}
procedure TFrm_CKJH_JJW.bbtn_DeletePPClick(Sender: TObject);
var
  l_dbgPlace: TBookMark;
  l_Index: Integer;
begin
  if qry_Detail.IsEmpty then                                {为空时不能删除单位}
    Exit;

  {询问}
  if Application.MessageBox('是否要删除该出库计划单中的所选择的单位?', '询问', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = mrNo then
    Exit;

  with qry_Detail do
  begin
    qry_Detail.BeforeDelete := nil;

    l_Index := VL_PPDMList.IndexOf(qry_Detail.Fieldbyname('PPDM').AsString);
    if l_Index > -1 then
    begin
      VL_PPDMList.Delete(l_Index);
      VL_PPKCList.Delete(l_Index);
    end;
    qry_Detail.Delete;

    l_dbgPlace := GetBookMark;
    dbgEh_Detail.SumList.Active := False;                   {刷新删除时的合计数据更新}
    dbgEh_Detail.SumList.Active := True;
    GotoBookMark(l_dbgPlace);
    FreeBookMark(l_dbgPlace);
  end;
end;

{-------------------------------------------------------------------------------}
{添加五原头数据}
procedure TFrm_CKJH_JJW.Add_WYTSJ(a_DWDM: String; a_Query: TQuery; a_DbGrid: TDBGrid);
begin
  with a_Query do
  begin
    First;
    while not Eof do
    begin
      if a_DbGrid.SelectedRows.CurrentRowSelected then
      begin
        VL_PPDMList.Add(FieldbyName('PPDM').AsString);
        VL_PPKCList.Add(FLoatToStr(PS_GetSYTS(FieldByName('KFDM').AsString, FieldByName('PPDM').AsString, FieldByName('JJ').AsFloat)));

        qry_Detail.Append;
        VL_CanPost := False;
        qry_Detail.FieldByName('DWDM').AsString := a_DWDM;
        if rg_Round.ItemIndex < 2 then                      {如果需要凑包 得到包装规格}
          GetGG(FieldbyName('PPDM').AsString);
        qry_Detail.FieldByName('KFDM').AsString := FieldByName('KFDM').AsString;
        qry_Detail.FieldByName('KFMC').AsString := FieldByName('KFMC').AsString;
        qry_Detail.FieldByName('PPDM').AsString := FieldbyName('PPDM').AsString;
        qry_Detail.FieldByName('PPMC').AsString := FieldByName('PPMC').AsString;
        if FieldbyName('JJ').AsString <> '' then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -