BOM script now generates table that links to minimums
This commit is contained in:
parent
49e63b292d
commit
e2f3ccd324
35
README.md
35
README.md
|
@ -39,23 +39,24 @@ Actual price of a full build may be higher.
|
||||||
|
|
||||||
<!-- bom -->
|
<!-- bom -->
|
||||||
|
|
||||||
| Part | Qty | Cost (USD) |
|
| Part | Qty | Cost (USD) | Minumum |
|
||||||
|-------------------------------------|-----|------------|
|
|-------------------------------------|-----|------------|-------------------------------------------|
|
||||||
| M4 hex bolt 40mm | 4 | $2.40 |
|
| M4 hex bolt 40mm | 4 | $2.40 | [10 for $6.09](https://amzn.to/4ikpYL8) |
|
||||||
| M3 sliding t slot nut | 25 | $1.25 |
|
| M3 sliding t slot nut | 25 | $1.25 | [105 for $5.99](https://amzn.to/48GRrSU) |
|
||||||
| M3 hex cap bolt 8mm | 25 | $2.00 |
|
| M3 hex cap bolt 8mm | 25 | $2.00 | [100 for $8.99](https://amzn.to/3YEvWNB) |
|
||||||
| M3 hex cap bolt 6mm | 8 | $0.56 |
|
| M3 hex cap bolt 6mm | 8 | $0.56 | [100 for $7.26](https://amzn.to/3AwiZxo) |
|
||||||
| M3 hex cap bolt 12mm | 1 | $0.08 |
|
| M3 hex cap bolt 12mm | 1 | $0.08 | [100 for $8.36](https://amzn.to/48CGa5Y) |
|
||||||
| L298N Motor driver module | 1 | $2.87 |
|
| L298N Motor driver module | 1 | $2.87 | [4 for $11.49](https://amzn.to/4ellssy) |
|
||||||
| ESP32 GPIO breakout board | 1 | $5.99 |
|
| ESP32 GPIO breakout board | 1 | $5.99 | [2 for $11.99](https://amzn.to/3UFjpbO) |
|
||||||
| ESP32 Dev board | 1 | $6.66 |
|
| ESP32 Dev board | 1 | $6.66 | [3 for $19.99](https://amzn.to/3NXCvGj) |
|
||||||
| 608-RS Ball Bearing | 1 | $0.17 |
|
| 608-RS Ball Bearing | 1 | $0.17 | [100 for $17.79](https://amzn.to/4fKxDA7) |
|
||||||
| 250RPM DC geared motor | 2 | $29.98 |
|
| 250RPM DC geared motor | 2 | $29.98 | [1 for $14.99](https://amzn.to/3NWkcRL) |
|
||||||
| 2020 Aluminum extrusion 420mm | 2 | $5.10 |
|
| 2020 Aluminum extrusion 420mm | 2 | $5.10 | [29 for $73.99](https://amzn.to/418OicC) |
|
||||||
| 2020 Aluminum extrusion 260mm | 4 | $6.40 |
|
| 2020 Aluminum extrusion 260mm | 4 | $6.40 | [46 for $73.99](https://amzn.to/418OicC) |
|
||||||
| 100RPM DC geared motor with encoder | 1 | $16.19 |
|
| 100RPM DC geared motor with encoder | 1 | $16.19 | [1 for $16.19](https://amzn.to/3UF707G) |
|
||||||
|---------|---------------|--------------------------------------------------|
|
|---------|-----|--------|---------|
|
||||||
| TOTAL | 76 | $79.65 |
|
| TOTAL | 76 | $79.65 | $277.11 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- /bom -->
|
<!-- /bom -->
|
||||||
|
|
|
@ -54,11 +54,17 @@ echo "quantity,part,part_id,price" > "${TOTAL}"
|
||||||
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${DESTINATION} bom" -cmd ".import ${PRICES} prices"\
|
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${DESTINATION} bom" -cmd ".import ${PRICES} prices"\
|
||||||
'SELECT SUM(quantity),part,part_id, SUM(quantity) * (COALESCE((SELECT CEIL(prices.price / prices.quantity) FROM prices WHERE prices.part = bom.part LIMIT 1), 0)) as price FROM bom GROUP BY part ORDER BY part DESC;' >> "${TOTAL}"
|
'SELECT SUM(quantity),part,part_id, SUM(quantity) * (COALESCE((SELECT CEIL(prices.price / prices.quantity) FROM prices WHERE prices.part = bom.part LIMIT 1), 0)) as price FROM bom GROUP BY part ORDER BY part DESC;' >> "${TOTAL}"
|
||||||
|
|
||||||
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${TOTAL} bom" -cmd '.mode markdown' \
|
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${TOTAL} bom" -cmd ".import ${PRICES} prices" -cmd '.mode markdown' \
|
||||||
"SELECT part as Part, quantity as Qty, printf('$%.2f', CAST(price AS FLOAT) / 100) as 'Cost (USD)' FROM bom ORDER BY part DESC;"
|
"SELECT part as Part, quantity as Qty, \
|
||||||
|
printf('$%.2f', CAST(price AS FLOAT) / 100) as 'Cost (USD)', \
|
||||||
|
printf( '[%s for $%.2f](%s)', (SELECT prices.quantity FROM prices WHERE prices.part = bom.part), (SELECT CAST(prices.price AS FLOAT) / 100 FROM prices WHERE prices.part = bom.part), (SELECT prices.url FROM prices WHERE prices.part = bom.part)) as 'Minumum' \
|
||||||
|
FROM bom ORDER BY part DESC;"
|
||||||
|
|
||||||
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${TOTAL} bom" -cmd '.mode markdown' \
|
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${TOTAL} bom" -cmd ".import ${PRICES} prices" -cmd '.mode markdown' \
|
||||||
"SELECT 'TOTAL', SUM(quantity), printf('$%.2f', CAST(SUM(price) AS FLOAT) / 100) FROM bom;" | grep -v 'SUM('
|
"SELECT 'TOTAL', SUM(quantity) AS qty, \
|
||||||
|
printf('$%.2f', CAST(SUM(price) AS FLOAT) / 100) as total, \
|
||||||
|
printf('$%.2f', ( SELECT CAST( SUM(price) AS FLOAT) / 100 FROM prices WHERE prices.part IN ( SELECT bom.part FROM bom ) ) ) as min \
|
||||||
|
FROM bom;" | grep -v 'qty'
|
||||||
|
|
||||||
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${TOTAL} bom"\
|
sqlite3 :memory: -cmd '.mode csv' -cmd ".import ${TOTAL} bom"\
|
||||||
"SELECT SUM(quantity), 'TOTAL', 'N/A', SUM(price) FROM bom;" | tr -d '"' >> "${TOTAL}"
|
"SELECT SUM(quantity), 'TOTAL', 'N/A', SUM(price) FROM bom;" | tr -d '"' >> "${TOTAL}"
|
||||||
|
|
Loading…
Reference in New Issue