2010-12-18 3 views
2

Ich arbeite an einem PHP-Projekt, um einen Aufgabenplan zu erstellen.Wie kann verhindert werden, dass aktualisierte Daten in db mit anderen Tabellen interagieren?

Die Unternehmen müssen für jede Vat-Periode eine Umsatzsteuererklärung an den IRS senden. Einige Unternehmen tun dies einmal im Monat und andere Unternehmen tun dies einmal im Quartal.

In meiner Unternehmenstabelle verwende ich eine vatperiod_id, um zu bestimmen, wie oft das Unternehmen eine Deklaration senden muss. Wenn ich ein Unternehmen hinzufüge, werden die Aufgaben automatisch für das ganze Jahr generiert. Kein Problem bis jetzt. Aber manchmal ändert sich die Umsatzsteuerperiode während eines Jahres.

Historische Tasks, die in der db gespeichert werden, sollten nicht geändert werden, sondern nur zukünftige Tasks (die ebenfalls vom Script generiert wurden) sollten die aktualisierte vat-period_id verwenden.

Beispiel: Ich füge Firma X mit vatperiod_id 2 (Deklarationen jedes Quartal) und mein Skript speichert für Monat (4, 7, 10 und Monat 1 des folgenden Jahres) eine Aufgabe. Nehmen wir nun an, die vatperiod_id ändert sich im Juli zu vatperiod_id 3 (Deklarationen jeden Monat). Die erstellten Aufgaben für den Monat 10 und 1 des Folgejahres sollten gelöscht und in jedem Folgemonat durch eine neue Aufgabe ersetzt werden.

(Es ist ziemlich schwer zu erklären)

Wie dieses Problem zu lösen? Welche Daten sollte ich in einer db speichern?

+0

Ich sehe die Frage hier wirklich nicht. Sie müssen natürlich die alten Aufgaben löschen, aber warum ist das schwer? Was hast du probiert und was waren die Ergebnisse? –

+0

Vielleicht eine bessere Frage ist: Welche Daten muss ich in meiner Company_Table speichern, um die Aufgaben zu aktualisieren. – Freeman84

+0

Ist das feinste Zeitkorn 1 Monat? Kann ihre Rückkehr auf Datum (Tag) basieren? –

Antwort

0

Stattdessen zukünftige Aufgaben der Erzeugung/Operationen ich jetzt eine PHP-Funktion verwenden, um zu überprüfen, welche Unternehmen eine MwSt-Erklärung einzureichen.

Wenn ich mir einen Überblick über Unternehmen verschaffen möchte, die im März eine Umsatzsteuererklärung abgeben müssen (= Beispiel).Ich kann einfach die Unternehmenstabelle für die Unternehmen überprüfen, wo vatperiod_id = 3 (Unternehmen, die jeden Monat Mehrwertsteuerdeklarationen abgeben müssen).

Nur wenn ein Steuerberater eine Aufgabe "annimmt", wird die Aufgabe in der Datenbank gespeichert und der Aufgabenbesitzer kann den Status ändern.

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

Hier ist mein Versuch

  • Eine Zeile in dem Kalender Tisch ist ein Tag. Die Tabelle wird verwendet, um die Handhabung von Daten zu vereinfachen. Normalerweise würden Sie dies für die nächsten 20 Jahre oder so vorladen.

  • Die Firma Tabelle enthält auch die aktuelle Berichtsperiode Typ (Monat, Quartal, Jahr ..)

  • TaxSchedule ist vorausgefüllt auf der Grundlage der ReportingPeriodType. Eine Option besteht darin, diese Tabelle mit dem feinsten Getreide (Monat) vorzubelegen, selbst wenn das Unternehmen jedes Quartal oder Jahr meldet.

  • Eine Zeile in der Deklaration Tabelle enthält eine Rückgabe wie von einem Unternehmen eingereicht.

  • Schedule_Declaration ist, wo Deklarationen mit dem Zeitplan übereinstimmen. Ein Zeitplan kann mehreren Deklarationen entsprechen (Zeitplan = Quartal, aber Deklarationen = monatlich). Eine Deklaration kann mehreren Plänen entsprechen (Plan = Monat, Deklaration = Viertel; späte Ablage). Jeder Abgleich wird auf der Anwendungsschicht durchgeführt.

alt text

+0

Vielen Dank für Ihre Mühe. Ich werde es mir genauer ansehen. Einige Daten, die Sie speichern möchten, werden für mein Projekt nicht benötigt und das macht die db-Struktur etwas schwer verständlich. Ich werde versuchen, es auf meine Bedürfnisse zu vereinfachen und werde Sie wissen lassen, ob es meine Probleme gelöst hat. – Freeman84