BOM script calculates total costs of rows of parts and entire BOM
This commit is contained in:
parent
bc71d86ee6
commit
e6c65650de
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"ext_port": 1111,
|
"ext_port": 1111,
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"mcopy": {
|
"mcopy": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mcopy-app",
|
"name": "mcopy-app",
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mcopy-app",
|
"name": "mcopy-app",
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"description": "GUI for the mcopy small gauge film optical printer platform",
|
"description": "GUI for the mcopy small gauge film optical printer platform",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"ext_port": 1111,
|
"ext_port": 1111,
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"mcopy": {
|
"mcopy": {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
module,c,part,part_id,description
|
module,quantity,part,part_id,description
|
||||||
front_block,2,M5 hex cap bolt 25mm,N/A,
|
front_block,2,M5 hex cap bolt 25mm,N/A,
|
||||||
body,2,M3 hex nut,N/A,Attach slide_catch to gate
|
body,2,M3 hex nut,N/A,Attach slide_catch to gate
|
||||||
body,12,M2.5 hex nut,N/A,Attach idle_roller and filter_holder and slide_rail to gate
|
body,12,M2.5 hex nut,N/A,Attach idle_roller and filter_holder and slide_rail to gate
|
||||||
|
|
|
|
@ -1,9 +1,10 @@
|
||||||
count,part_id,part,price
|
quantity,part_id,part,price
|
||||||
2,"M5 hex nut",N/A,
|
2,"M5 hex nut",N/A,0
|
||||||
2,"M5 hex cap bolt 25mm",N/A,
|
2,"M5 hex cap bolt 25mm",N/A,0
|
||||||
2,"M5 hex cap bolt 20mm",N/A,
|
2,"M5 hex cap bolt 20mm",N/A,0
|
||||||
2,"M3 hex nut",N/A,
|
2,"M3 hex nut",N/A,6
|
||||||
13,"M2.5 hex nut",N/A,
|
13,"M2.5 hex nut",N/A,0
|
||||||
2,"M2.5 hex cap bolt 25mm",N/A,
|
2,"M2.5 hex cap bolt 25mm",N/A,0
|
||||||
6,"M2.5 hex cap bolt 15mm",N/A,
|
6,"M2.5 hex cap bolt 15mm",N/A,0
|
||||||
5,"M2.5 hex cap bolt 10mm",N/A,
|
5,"M2.5 hex cap bolt 10mm",N/A,0
|
||||||
|
34,N/A,TOTALS,6
|
||||||
|
|
|
|
@ -1 +1,2 @@
|
||||||
part,part_id,price
|
part,part_id,price,url
|
||||||
|
M3 hex nut,N/A,3,https://www.amazon.com/ZQZ-M3-0-5mm-Stainless-Hardware-Standard/dp/B0CQJK2R5T/ref=asc_df_B0CQJK2R5T/
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "mcopy",
|
"name": "mcopy",
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "mcopy",
|
"name": "mcopy",
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"alert": "file:app/lib/alert",
|
"alert": "file:app/lib/alert",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mcopy",
|
"name": "mcopy",
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"description": "Small gauge film optical printer platform",
|
"description": "Small gauge film optical printer platform",
|
||||||
"main": "build.js",
|
"main": "build.js",
|
||||||
"directories": {
|
"directories": {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "1.8.144",
|
"version": "1.8.145",
|
||||||
"ext_port": 1111,
|
"ext_port": 1111,
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"mcopy": {
|
"mcopy": {
|
||||||
|
|
|
@ -32,7 +32,7 @@ TOTAL=$(realpath "${TOTAL}")
|
||||||
PRICES=$(realpath "./hardware/parts/prices.csv")
|
PRICES=$(realpath "./hardware/parts/prices.csv")
|
||||||
MODULE=""
|
MODULE=""
|
||||||
|
|
||||||
echo "module,c,part,part_id,description" > "${DESTINATION}"
|
echo "module,quantity,part,part_id,description" > "${DESTINATION}"
|
||||||
|
|
||||||
tac "${1}" | while read line; do
|
tac "${1}" | while read line; do
|
||||||
module=$(echo "${line}" | grep 'module')
|
module=$(echo "${line}" | grep 'module')
|
||||||
|
@ -41,15 +41,18 @@ tac "${1}" | while read line; do
|
||||||
fi
|
fi
|
||||||
bom=$(echo "${line}" | grep '//' | grep 'BOM' | awk -F'BOM:' '{print $2}'| xargs)
|
bom=$(echo "${line}" | grep '//' | grep 'BOM' | awk -F'BOM:' '{print $2}'| xargs)
|
||||||
if [[ "${bom}" != "" ]]; then
|
if [[ "${bom}" != "" ]]; then
|
||||||
COUNT=$(echo "${bom}" | awk -F',' '{print $1}' | xargs)
|
QUANTITY=$(echo "${bom}" | awk -F',' '{print $1}' | xargs)
|
||||||
PART=$(echo "${bom}" | awk -F',' '{print $2}' | xargs)
|
PART=$(echo "${bom}" | awk -F',' '{print $2}' | xargs)
|
||||||
ID=$(echo "${bom}" | awk -F',' '{print $3}' | xargs)
|
ID=$(echo "${bom}" | awk -F',' '{print $3}' | xargs)
|
||||||
DESCRIPTION=$(echo "${bom}" | awk -F',' '{print $4}' | xargs)
|
DESCRIPTION=$(echo "${bom}" | awk -F',' '{print $4}' | xargs)
|
||||||
echo "[${MODULE}] ${COUNT}x ${PART} (${ID})"
|
echo "[${MODULE}] ${QUANTITY}x ${PART} (${ID})"
|
||||||
echo "${MODULE},${COUNT},${PART},${ID},${DESCRIPTION}" >> "${DESTINATION}"
|
echo "${MODULE},${QUANTITY},${PART},${ID},${DESCRIPTION}" >> "${DESTINATION}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "count,part_id,part,price" > "${TOTAL}"
|
echo "quantity,part_id,part,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(c),part,part_id, SUM(c) * (SELECT prices.price FROM prices WHERE prices.part = bom.part) as price FROM bom GROUP BY part ORDER BY part DESC;' >> "${TOTAL}"
|
'SELECT SUM(quantity),part,part_id, SUM(quantity) * (COALESCE((SELECT prices.price 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"\
|
||||||
|
'SELECT SUM(quantity),"N/A","TOTALS", SUM(price) FROM bom;' >> "${TOTAL}"
|
Loading…
Reference in New Issue