2010-12-18 48 views
2

我正在開發一個php項目來制定任務計劃。如何防止數據庫中更新的數據與其他表進行交叉?

公司必須向IRS的每個增值稅期發送增值稅聲明。一些公司每個月都會這樣做一次,其他公司每個季度都會這樣做一次。

在我的公司表中,我使用vatperiod_id來確定公司多久發送一次聲明。當我添加公司時,任務將自動生成一整年。 到目前爲止沒有問題。但有時候,一年中的增值期會發生變化。

保存在數據庫中的歷史任務不應該被修改,但是隻有將來的任務(也是由腳本生成的)應該使用更新後的vat-period_id。

例如: 我用vatperiod_id 2(每個季度聲明)添加公司X,我的腳本在月份(下一年的4,7,10和1個月)存儲任務。現在讓我們說7月vatperiod_id 更改爲vatperiod_id 3(每月聲明)。在下一個月的第10和第1個月中產生的任務應該被刪除,並在接下來的每個月中由新任務取代。

(這很難解釋)

如何解決這個問題?我應該在db中存儲哪些數據?

+0

我真的在這裏看不到問題。你當然需要刪除舊的任務,但爲什麼這很難?你試過了什麼,結果如何? – 2010-12-18 10:13:35

+0

也許更好的問題是:我需要在我的company_table中存儲哪些數據才能更新任務。 – Freeman84 2010-12-18 10:29:03

+0

是最好的期糧1個月嗎?他們的迴歸可以基於日期(日)嗎? – 2010-12-18 14:08:01

回答

0

代替生成未來任務/操作我現在用一個PHP函數來驗證該公司必須提交增值稅申報的。

當我想對三月份有義務提交增值稅申報的公司(例如)進行概述時。我只需查看公司的vatperiod_id = 3(每個月必須交納增值稅申報的公司)公司的表格。

只有稅務顧問「接受」任務時,任務纔會存儲在數據庫中,任務所有者可以更改狀態。

function showVatOperations($month) { 
    //declare variables 
    global $mysqli; 

    $query = "SELECT * FROM `company` 
       JOIN `vat_period` ON company.vatperiod_id = vat_period.vatperiod_id 
       JOIN `owner` ON company.owner_id = owner.owner_id 
       WHERE company.vatperiod_id = 3"; 

    //check for each period which companies have to submit a declaration 
    switch ($month) { 
     case "1": 
      $query.=" OR company.vatperiod_id = 2 OR company.vatperiod_id = 1"; 
      break; 
     case "4": 
      $query.=" OR company.vatperiod_id = 2"; 
      break; 
     case "7": 
      $query.=" OR company.vatperiod_id = 2"; 
      break; 
     case "10": 
      $query.=" OR company.vatperiod_id = 2"; 
      break; 
    } 

    //perform query to select company and vatoperation info 
    $result = $mysqli->query($query) or die("ERROR $query. $mysqli->error()"); 

    showVatOperationDetails($result); 

} 
?> 
0

這是我嘗試在日曆

  • 一行是一天。該表用於簡化日期的處理。通常情況下,你會在接下來的20年預加載這個,大概是這樣。基於該ReportingPeriodType

  • 公司表還持有本報告期內型(月,季,年..)

  • TaxSchedule預填充。一種選擇是即使公司每季度或每年報告最好的穀物(月份),也要預先填寫此表。

  • 聲明表中的一行包含公司提交的回報。

  • Schedule_Declarating是聲明與計劃相匹配的地方。一個時間表可以匹配多個聲明(時間表=季度,但聲明=每月)。一個聲明可以匹配幾個時間表(時間表=月,但聲明=四分之一;延遲提交)。任何匹配都在應用程序層完成。

alt text

+0

謝謝你的努力。我會仔細看看它。您建議保存的一些數據對我的項目來說並不需要,這使得db結構有點難以理解。我會盡量簡化它以滿足我的需求,並會讓你知道它是否解決了我的問題。 – Freeman84 2010-12-20 21:41:33

相關問題