Bladeren bron

Add endpoint to create a new fee

master
Immanuel Onyeka 1 jaar geleden
bovenliggende
commit
daaff1c318
4 gewijzigde bestanden met toevoegingen van 82 en 8 verwijderingen
  1. +22
    -1
      components/estimates.vue
  2. +4
    -1
      components/new/new.vue
  3. +2
    -2
      migrations/0_29092022_setup_tables.sql
  4. +54
    -4
      skouter.go

+ 22
- 1
components/estimates.vue Bestand weergeven

@@ -76,7 +76,28 @@ let estimates = ref([])
let estimate = ref()

function newFee(fee, isDebit) {
this.edit = null
if (!isDebit) {
fee.amount = -1 * fee.amount || 0
fee.perc = -1 * fee.perc || 0
}
fetch(`/api/fee`,
{method: 'POST',
body: JSON.stringify(fee),
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${props.token}`,
},
}).then(resp => {
if (resp.ok && resp.status == 200) {
return
} else {
// resp.text().then(t => this.errors = [t])
// window.location.hash = 'new'
resp.text().then(t => console.log(t))
}
})
edit.value = null
}

function newType() {


+ 4
- 1
components/new/new.vue Bestand weergeven

@@ -57,7 +57,10 @@ class="bi bi-plus" viewBox="0 0 16 16"> <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0
@continue="generate"
/>
<loan-summary v-if="hash == '#new/summary'"
:loan="loan" :downpayment="estimate.price - loan.amount" :token="token" :estimate="estimate"/>
:loan="loan"
:downpayment="estimate.price - loan.amount"
:token="token"
:estimate="estimate"/>

</div>
</template>


+ 2
- 2
migrations/0_29092022_setup_tables.sql Bestand weergeven

@@ -137,7 +137,7 @@ CREATE TABLE fee (
CREATE TABLE fee_template (
id INT AUTO_INCREMENT,
user_id INT NOT NULL,
branch_id INT NOT NULL,
branch_id INT,
amount INT NOT NULL,
perc SMALLINT NOT NULL,
/* Percentage of sale price instead of amount */
@@ -145,7 +145,7 @@ CREATE TABLE fee_template (
notes VARCHAR(255) NOT NULL,
name VARCHAR(30) NOT NULL,
/* Group heading shown in report */
category VARCHAR(60) NOT NULL,
category VARCHAR(60) NOT NULL DEFAULT "",
auto BOOLEAN NOT NULL,
/* If fee should be automatically applied */
PRIMARY KEY (`id`),


+ 54
- 4
skouter.go Bestand weergeven

@@ -349,10 +349,14 @@ func getFees(db *sql.DB, loan int) ([]Fee, error) {

func fetchFeesTemp(db *sql.DB, user int, branch int) ([]FeeTemplate, error) {
var fees []FeeTemplate
rows, err := db.Query(
"SELECT * FROM fee_template " +
"WHERE user_id = ? OR branch_id = ?",
user, branch)
query := `SELECT
id, user_id, COALESCE(branch_id, 0), amount, perc, type, notes, name,
category, auto
FROM fee_template
WHERE user_id = ? OR branch_id = ?
`
rows, err := db.Query(query, user, branch)
if err != nil {
return nil, fmt.Errorf("Fee template query error %v", err)
@@ -396,6 +400,48 @@ func getFeesTemp(w http.ResponseWriter, db *sql.DB, r *http.Request) {
json.NewEncoder(w).Encode(fees)
}

// Fetch fees from the database
func createFeesTemp(w http.ResponseWriter, db *sql.DB, r *http.Request) {
var fee FeeTemplate
var query string
var row *sql.Row
var err error
claims, err := getClaims(r)
// var id int // Inserted estimate's id
err = json.NewDecoder(r.Body).Decode(&fee)
if err != nil { w.WriteHeader(422); return }

query = `INSERT INTO fee_template
(
user_id,
branch_id,
amount,
perc,
type,
notes,
name,
auto
)
VALUES (?, NULL, ?, ?, ?, ?, ?, ?)
RETURNING id
`
row = db.QueryRow(query,
claims.Id,
fee.Amount,
fee.Perc,
fee.Type,
fee.Notes,
fee.Name,
fee.Auto,
)

err = row.Scan(&fee.Id)
if err != nil { w.WriteHeader(500); return }
json.NewEncoder(w).Encode(fee)
}

func getMi(db *sql.DB, loan int) (MI, error) {
var mi MI

@@ -1501,6 +1547,10 @@ func api(w http.ResponseWriter, r *http.Request) {
r.Method == http.MethodGet &&
guard(r, 1):
getFeesTemp(w, db, r)
case match(p, "/api/fee", &args) &&
r.Method == http.MethodPost &&
guard(r, 1):
createFeesTemp(w, db, r)
case match(p, "/api/estimates", &args) &&
r.Method == http.MethodGet &&
guard(r, 1):


Laden…
Annuleren
Opslaan