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

📄 sy990.pas

📁 一套融入了系统营销管理思想的管理软件产品
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        fUnitPrice := RealToInt(qyTemp.FieldByName('TotalAmount').AsFloat /
                                qyTemp.FieldByName('TotalQuantity').AsFloat);

      with qyUpdateInventoryBeginning do
      begin
        ParamByName('CompanyID').AsString := sCompanyID;
        ParamByName('InventoryYear').AsString := LeftStr(sEndPeriodDate, 2);
        ParamByName('InventoryMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
        ParamByName('WarehouseID').AsString := qyTemp.FieldByName('WarehouseID').AsString;
        ParamByName('ProductID').AsString := qyTemp.FieldByName('ProductID').AsString;
        ParamByName('BeginningQuantity').AsFloat := 0;
        ParamByName('BeginningBalance').AsFloat := fBeginningQuantity * fUnitPrice;
        ExecSQL;
      end;
      qyTemp.Next;
    end;
    ProgressPostiotn(40);

    with qyTemp do
    begin
      Close;
      SQL.Clear;
      SQL.Add('DELETE FROM AccountReceivableBeginning ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND BeginningYear = :BeginningYear ');
      SQL.Add('AND BeginningMonth = :BeginningMonth ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
      ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
      ExecSQL;
    end;
    ProgressPostiotn(44);

    with qyTemp do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT CustomerID, BeginningBalance ');
      SQL.Add('FROM AccountReceivableBeginning ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND BeginningYear = :BeginningYear ');
      SQL.Add('AND BeginningMonth = :BeginningMonth ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginningYear').AsString := LeftStr(sStartPeriodDate, 2);
      ParamByName('BeginningMonth').AsString := SubStr(sStartPeriodDate, 4, 2);
      Open;
    end;
    ProgressPostiotn(48);
    qyTemp.First;
    while not qyTemp.Eof do
    begin
      with qyInsertAccountReceivableBeginning do
      begin
        ParamByName('CompanyID').AsString := sCompanyID;
        ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
        ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
        ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
        ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('BeginningBalance').AsFloat;
        ExecSQL;
      end;
      qyTemp.Next;
    end;
    ProgressPostiotn(52);

    with qyTemp do
    begin
      Close;
      SQL.clear;
      SQL.Add('SELECT CustomerID, AccountReceivable ');
      SQL.Add('FROM DeliveryMaster ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND DeliveryDate >= :BeginDeliveryDate ');
      SQL.Add('AND DeliveryDate <= :EndDeliveryDate ');
      SQL.Add('AND DeliveryProperty IN (''1'', ''2'') ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginDeliveryDate').AsString := sStartPeriodDate;
      ParamByName('EndDeliveryDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
      Open;
    end;
    ProgressPostiotn(56);
    qyTemp.First;
    while not qyTemp.Eof do
    begin

      with qyAccountReceivableBeginning do
      begin
        Close;
        ParamByName('CompanyID').AsString := sCompanyID;
        ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
        ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
        ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
        Open;
      end;
      if qyAccountReceivableBeginning.FieldByName('CustomerID').AsString = '' then
      begin

        with qyInsertAccountReceivableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountReceivable').AsFloat;
          ExecSQL;
        end;
      end
      else
      begin

        with qyUpdateAccountReceivableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountReceivable').AsFloat;
          ExecSQL;
        end;
      end;
      qyTemp.Next;
    end;
    ProgressPostiotn(60);

    with qyTemp do
    begin
      Close;
      SQL.clear;
      SQL.Add('SELECT CustomerID, TotalBalance ');
      SQL.Add('FROM AccountReceivableMaster ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND ReceiveDate >= :BeginReceiveDate ');
      SQL.Add('AND ReceiveDate <= :EndReceiveDate ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginReceiveDate').AsString := sStartPeriodDate;
      ParamByName('EndReceiveDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
      Open;
    end;
    ProgressPostiotn(64);
    qyTemp.First;
    while not qyTemp.Eof do
    begin

      with qyAccountReceivableBeginning do
      begin
        Close;
        ParamByName('CompanyID').AsString := sCompanyID;
        ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
        ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
        ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
        Open;
      end;

      if qyAccountReceivableBeginning.FieldByName('CustomerID').AsString = '' then
      begin
        with qyInsertAccountReceivableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
          ExecSQL;
        end;
      end
      else
      begin

        with qyUpdateAccountReceivableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
          ExecSQL;
        end;
      end;
      qyTemp.Next;
    end;
    ProgressPostiotn(68);

    with qyTemp do
    begin
      Close;
      SQL.Clear;
      SQL.Add('DELETE FROM AccountPayableBeginning ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND BeginningYear = :BeginningYear ');
      SQL.Add('AND BeginningMonth = :BeginningMonth ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
      ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
      ExecSQL;
    end;
    ProgressPostiotn(72);

    with qyTemp do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT SupplierID, BeginningBalance ');
      SQL.Add('FROM AccountPayableBeginning ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND BeginningYear = :BeginningYear ');
      SQL.Add('AND BeginningMonth = :BeginningMonth ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginningYear').AsString := LeftStr(sStartPeriodDate, 2);
      ParamByName('BeginningMonth').AsString := SubStr(sStartPeriodDate, 4, 2);
      Open;
    end;
    ProgressPostiotn(76);
    qyTemp.First;
    while not qyTemp.Eof do
    begin
      with qyInsertAccountPayableBeginning do
      begin
        ParamByName('CompanyID').AsString := sCompanyID;
        ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
        ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
        ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
        ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('BeginningBalance').AsFloat;
        ExecSQL;
      end;
      qyTemp.Next;
    end;
    ProgressPostiotn(80);

    with qyTemp do
    begin
      Close;
      SQL.clear;
      SQL.Add('SELECT SupplierID, AccountPayable ');
      SQL.Add('FROM PurchaseMaster ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND PurchaseDate >= :BeginPurchaseDate ');
      SQL.Add('AND PurchaseDate <= :EndPurchaseDate ');
      SQL.Add('AND PurchaseProperty IN (''5'', ''6'') ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginPurchaseDate').AsString := sStartPeriodDate;
      ParamByName('EndPurchaseDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
      Open;
    end;
    ProgressPostiotn(84);
    qyTemp.First;
    while not qyTemp.Eof do
    begin

      with qyAccountPayableBeginning do
      begin
        Close;
        ParamByName('CompanyID').AsString := sCompanyID;
        ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
        ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
        ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
        Open;
      end;

      if qyAccountPayableBeginning.FieldByName('SupplierID').AsString = '' then
      begin
        with qyInsertAccountPayableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountPayable').AsFloat;
          ExecSQL;
        end;
      end
      else
      begin

        with qyUpdateAccountPayableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountPayable').AsFloat;
          ExecSQL;
        end;
      end;
      qyTemp.Next;
    end;
    ProgressPostiotn(88);

    with qyTemp do
    begin
      Close;
      SQL.clear;
      SQL.Add('SELECT SupplierID, TotalBalance ');
      SQL.Add('FROM AccountPayableMaster ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      SQL.Add('AND PayDate >= :BeginPayDate ');
      SQL.Add('AND PayDate <= :EndPayDate ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('BeginPayDate').AsString := sStartPeriodDate;
      ParamByName('EndPayDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
      Open;
    end;
    ProgressPostiotn(92);
    qyTemp.First;
    while not qyTemp.Eof do
    begin

      with qyAccountPayableBeginning do
      begin
        Close;
        ParamByName('CompanyID').AsString := sCompanyID;
        ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
        ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
        ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
        Open;
      end;
      if qyAccountPayableBeginning.FieldByName('SupplierID').AsString = '' then
      begin
        with qyInsertAccountPayableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
          ExecSQL;
        end;
      end
      else
      begin
        with qyUpdateAccountPayableBeginning do
        begin
          ParamByName('CompanyID').AsString := sCompanyID;
          ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
          ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
          ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
          ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
          ExecSQL;
        end;
      end;
      qyTemp.Next;
    end;
    ProgressPostiotn(96);
    with qyTemp do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE Company ');
      SQL.Add('SET PeriodYear = :PeriodYear, PeriodMonth = :PeriodMonth ');
      SQL.Add('WHERE CompanyID = :CompanyID ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('PeriodYear').AsString := LeftStr(sEndPeriodDate, 2);
      ParamByName('PeriodMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
      ExecSQL;
    end;
    ProgressPostiotn(100);
    qyInsertInventoryBeginning.UnPrepare;
    qyUpdateInventoryBeginning.UnPrepare;
    qyInsertAccountReceivableBeginning.UnPrepare;
    qyUpdateAccountReceivableBeginning.UnPrepare;
    qyInsertAccountPayableBeginning.UnPrepare;
    qyUpdateAccountPayableBeginning.UnPrepare;
    DM.DB.Commit;
    sStartPeriodDate := sEndPeriodDate;
    sEndPeriodDate := AddMonth(sStartPeriodDate, 1);
    MyInformation('月结操作完成');
    Close;
  except
    DM.DB.Rollback;
    MyError('月结操作失败!');
    ProgressBar.Visible := False;
    raise;
  end;
end;

procedure TfmSY990.FormCreate(Sender: TObject);
begin
  inherited;
  ProgressBar.Visible := False;
end;

procedure TfmSY990.ProgressPostiotn(iPosition: Integer);
begin
  ProgressBar.Position := iPosition;
  ProgressBar.Update;
end;

end.

⌨️ 快捷键说明

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