-
Notifications
You must be signed in to change notification settings - Fork 0
/
v1_main.py
1626 lines (1282 loc) · 62.9 KB
/
v1_main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# @author Cesar Ramirez
# @program Fabseal Quote Calculator
import math
from calculations import *
from v1_accessories import *
from error import *
import docx
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.text import WD_LINE_SPACING
from docx.enum.text import WD_UNDERLINE
from datetime import date
from num2words import num2words
restart = False
while True:
if restart:
print("----------------------------------------\n")
restart = False
# Collect kind of tank
tank = input("Enter type of tank (circular, rectangular, or flat sheet): ").lower()
empty_response = empty_string(tank)
while empty_response or (tank[0] != 'c' and tank[0] != 'r' and tank[0] != 'f' and tank != "restart"):
tank = input("Please enter type of tank (circular, rectangular, or flat sheet): ").lower()
empty_response = empty_string(tank)
if tank == "restart":
restart = True
continue
# Collect price per square foot
sqft_price = input("Enter price per square foot: $")
empty_response = empty_string(sqft_price)
sqft_price = empty_literal(empty_response, "Please enter price per square foot: $", sqft_price)
if sqft_price[0] == "r":
restart = True
continue
sqft_price = float(sqft_price)
# Collect weight per square foot
weight_sqft = input("Enter weight per square foot: ")
empty_response = empty_string(weight_sqft)
weight_sqft = empty_literal(empty_response, "Please enter weight per square foot: ", weight_sqft)
if weight_sqft[0] == "r":
restart = True
continue
weight_sqft = float(weight_sqft)
# For customizations
circular = False
rectangular = False
lifting_hem = False
additional_liner_cost = 0
number_liners = 1
while True:
# Restart
if restart:
break
# Circular tank configuration
if tank[0] == "c":
# Diameter configuration
diameter_ft = input("Enter diameter of tank (ft): ")
empty_response = empty_string(diameter_ft)
diameter_ft = empty_literal(empty_response, "Please enter diameter of tank (ft): ", diameter_ft)
if diameter_ft[0] == "r":
restart = True
continue
diameter_ft = float(diameter_ft)
diameter_inch = input("Enter any remaining inches: ")
empty_response = empty_string(diameter_inch)
diameter_inch = empty_literal(empty_response, "Please enter any remaining inches: ", diameter_inch)
if diameter_inch[0] == "r":
restart = True
continue
diameter_inch = float(diameter_inch)
diameter_tank = converter(diameter_ft, diameter_inch)
diameter_liner = diameter_modifier(diameter_tank)
# Depth configuration
depth_ft = input("Enter depth of tank (ft): ")
empty_response = empty_string(depth_ft)
depth_ft = empty_literal(empty_response, "Please enter depth of tank (ft): ", depth_ft)
if depth_ft[0] == "r":
restart = True
continue
depth_ft = float(depth_ft)
depth_inch = input("Enter any remaining inches: ")
empty_response = empty_string(depth_inch)
depth_inch = empty_literal(empty_response, "Please enter any remaining inches: ", depth_inch)
if depth_inch[0] == "r":
restart = True
continue
depth_inch = float(depth_inch)
depth_tank = converter(depth_ft, depth_inch)
# Extra depth extensions
depth_extensions = input("Please enter any extensions in inches to depth: ")
empty_response = empty_string(depth_extensions)
depth_extensions = empty_literal(empty_response, "Please enter any extensions in inches to depth: ", depth_extensions)
if depth_extensions[0] == "r":
restart = True
continue
depth_extensions = float(depth_extensions)
depth_extensions = converter(0, depth_extensions)
depth_liner = depth_tank + depth_extensions
# Extensions
circumference_tank = diameter_tank * math.pi
circumference_liner = diameter_liner * math.pi
circular = True
# New line
print("\n")
# Calculate square footage
actual_square_footage = circular_tank_sq_footage(diameter_liner, depth_liner)
# Add the 5%
five_percent = actual_square_footage * 0.05
square_footage = round(actual_square_footage + five_percent)
# Calculate weight of liner
liner_weight = circular_weight(diameter_liner, depth_liner, weight_sqft)
# Cost of liner
liner_cost = square_footage * sqft_price
# Rectangular tank configuration
elif tank[0] == "r":
# Length configuration
length_ft = input("Enter length of tank (ft): ")
empty_response = empty_string(length_ft)
length_ft = empty_literal(empty_response, "Please enter length of tank (ft): ", length_ft)
if length_ft[0] == "r":
restart = True
continue
length_ft = float(length_ft)
length_inch = input("Enter any remaining inches: ")
empty_response = empty_string(length_inch)
length_inch = empty_literal(empty_response, "Please enter any remaining inches: ", length_inch)
if length_inch[0] == "r":
restart = True
continue
length_inch = float(length_inch)
length_tank = converter(length_ft, length_inch)
length_liner = length_modifier(length_tank)
# Width configuration
width_ft = input("Enter width of tank (ft): ")
empty_response = empty_string(width_ft)
width_ft = empty_literal(empty_response, "Please enter width of tank (ft): ", width_ft)
if width_ft[0] == "r":
restart = True
continue
width_ft = float(width_ft)
width_inch = input("Enter any remaining inches: ")
empty_response = empty_string(width_inch)
width_inch = empty_literal(empty_response, "Please enter any remaining inches: ", width_inch)
if width_inch[0] == "r":
restart = True
continue
width_inch = float(width_inch)
width_tank = converter(width_ft, width_inch)
width_liner = width_tank
# Depth configuration
depth_ft = input("Enter depth of tank (ft): ")
empty_response = empty_string(depth_ft)
depth_ft = empty_literal(empty_response, "Please enter depth of tank (ft): ", depth_ft)
if depth_ft[0] == "r":
restart = True
continue
depth_ft = float(depth_ft)
depth_inch = input("Enter any remaining inches: ")
empty_response = empty_string(depth_inch)
depth_inch = empty_literal(empty_response, "Please enter any remaining inches: ", depth_inch)
if depth_inch[0] == "r":
restart = True
continue
depth_inch = float(depth_inch)
depth_tank = converter(depth_ft, depth_inch)
# Extra depth dimensions
depth_extensions = input("Please enter any extensions in inches to depth: ")
empty_response = empty_string(depth_extensions)
depth_extensions= empty_literal(empty_response, "Please enter any extensions in inches to depth: ", depth_extensions)
if depth_extensions[0] == "r":
restart = True
continue
depth_extensions = float(depth_extensions)
depth_extensions = converter(0, depth_extensions)
depth_liner = depth_tank + depth_extensions
# Extensions
perimeter_tank = (length_tank + width_tank) * 2
perimeter_liner = (length_liner + width_liner) * 2
rectangular = True
# New line
print("\n")
# Calculate square footage
actual_square_footage = rectangular_tank_sq_footage(length_liner, width_liner, depth_liner)
# Add the 5%
five_percent = actual_square_footage * 0.05
square_footage = round(five_percent + actual_square_footage)
# Calculate weight of liner
liner_weight = rectangular_weight(length_liner, width_liner, depth_liner, weight_sqft)
# Cost of liner
liner_cost = square_footage * sqft_price
# Flat sheet configuration
elif tank[0] == "f":
# Length configuration
length_ft = input("Enter length (ft): ")
empty_response = empty_string(length_ft)
length_ft = empty_literal(empty_response, "Please enter length (ft): ", length_ft)
if length_ft[0] == "r":
restart = True
continue
length_ft = float(length_ft)
length_inch = input("Enter any remaining inches: ")
empty_response = empty_string(length_inch)
length_inch = empty_literal(empty_response, "Please enter any remaining inches: ", length_inch)
if length_inch[0] == "r":
restart = True
continue
length_inch = float(length_inch)
length_liner = converter(length_ft, length_inch)
# Width configuration
width_ft = input("Enter width (ft): ")
empty_response = empty_string(width_ft)
width_ft = empty_literal(empty_response, "Please enter width (ft): ", width_ft)
if width_ft[0] == "r":
restart = True
continue
width_ft = float(width_ft)
width_inch = input("Enter any remaining inches: ")
empty_response = empty_string(width_inch)
width_inch = empty_literal(empty_response, "Please enter any remaining inches: ", width_inch)
if width_inch[0] == "r":
restart = True
continue
width_inch = float(width_inch)
width_liner = converter(width_ft, width_inch)
# New line
print("\n")
# Calculate square footage
square_footage = round(length_liner * width_liner)
print("Square footage: {:,} ft.".format(square_footage))
# Calculate weight of liner
liner_weight = square_footage * weight_sqft
# Cost of liner
liner_cost = square_footage * sqft_price
break
if restart:
continue
break
# Print out cost and weight of single liner
print("Quote cost of liner: ${:,.2f}".format(liner_cost))
print("Weight of single liner: {:,} lbs".format(liner_weight))
# Setup for customization loop
total_quote_cost = liner_cost
total_mobilization_cost = 0
lining_system_cost = 0
total_weight = liner_weight
total_liners = 1
order_list = []
satisfied = False
discounted = False
installation_included = False
crate_included = False
# Prompt for customization loop
print("\n\nCustomize order below:\nType \'help\' for options\nType \'back\' for menu\n------------------------\n")
# Customization loop
while not satisfied:
# Reset
back_button = False
# Get user command
command = input("> ").lower()
# To finish the order
if command == 'finish':
satisfied = True
print("\nOrder Completed")
continue
# Dummy proof
if command == '':
print("")
continue
# Geo
elif command[0] == 'g' and command[1] == 'e':
geo_satisfied = False
# Flat sheet calculations
if not circular and not rectangular:
geo_list = []
while not geo_satisfied:
geo_material_type = input("\nEnter thickness in ounces (16 or 8): ")
if geo_material_type[0] == 'b' or geo_material_type[0] == 'B':
back_button = True
geo_satisfied = True
continue
else:
geo_material_type = int(geo_material_type)
while geo_material_type != 16 and geo_material_type != 8:
geo_material_type = int(input("Please enter 16 or 8: "))
geo_layers = int(input(f"How many layers of {geo_material_type}oz geo would you like to add: "))
for geo in range(geo_layers):
geo_list.append(geo_material_type)
more_geo = input("Would you like to add more geo (yes/no)? ").lower()
if more_geo[0] == 'n':
geo_satisfied = True
# Back button
if back_button:
print("\n")
continue
total_geo_cost = 0
total_geo_weight = 0
for geo in geo_list:
total_geo_cost += geo_cost_flatsheet(geo, length_liner, width_liner)
total_geo_weight += geo_weight_flatsheet(geo_material_type, length_liner, width_liner)
# Quote documentation
lining_system_cost += total_geo_cost
print("\nCost of geo added: ${:,.2f}".format(total_geo_cost))
print("Weight of geo added: {:,} lbs.\n".format(total_geo_weight))
# Circular calculations
if circular:
geo_material_type = input("\nEnter wall thickness in ounces (16 or 8): ")
if geo_material_type[0] == 'b' or geo_material_type[0] == 'B':
print("")
continue
else:
geo_material_type = int(geo_material_type)
total_geo_cost = geo_cost_circular(geo_material_type, wall_circular_tank_sq_footage
(diameter_liner, depth_liner), floor_circular_tank_sq_footage(diameter_liner))
total_geo_weight = geo_weight_circular(geo_material_type, wall_circular_tank_sq_footage(diameter_liner, depth_liner),
floor_circular_tank_sq_footage(diameter_liner))
# Quote documentation
lining_system_cost += total_geo_cost
print("\nCost of geo added: ${:,.2f}".format(total_geo_cost))
print("Weight of geo added: {:,} lbs.\n".format(total_geo_weight))
# Rectangular calculations
if rectangular:
geo_material_type = input("\nEnter wall thickness in ounces (16 or 8): ")
if geo_material_type[0] == 'b' or geo_material_type[0] == 'B':
print("")
continue
else:
geo_material_type = int(geo_material_type)
total_geo_cost = geo_cost_rectangular(geo_material_type,
wall_rectangular_tank_sq_footage(length_liner, width_liner, depth_liner),
floor_rectangular_tank_sq_footage(length_liner, width_liner))
total_geo_weight = geo_weight_rectangular(geo_material_type, length_liner, width_liner, depth_liner)
# Quote documentation
lining_system_cost += total_geo_cost
print("\nCost of geo added: ${:,.2f}".format(total_geo_cost))
print("Weight of geo added: {:,} lbs.\n".format(total_geo_weight))
# Calculates total costs and weights
total_quote_cost += total_geo_cost
total_weight += total_geo_weight
# Keep track of order
order_list.append("geo")
# Prints out important final info
print("Total weight: {:,} lbs.".format(round(total_weight)))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Batten strip
elif command[0] == 'b' and command[1] == 'a':
# Response to flat sheet attempt
if not circular and not rectangular:
print("\nThere is no batten strip option for flat sheets.\n")
continue
# Retrieve batten strip type
batten_strip_type = input("\nPoly-pro or stainless steel: ").lower()
if batten_strip_type[0] == 'b':
print("")
continue
# Turn type to cost
if batten_strip_type[0] == 'p':
batten_strip_cost = 10.0
batten_strip_type = "poly-pro"
else:
batten_strip_cost = 33.30
batten_strip_type = "stainless steel"
# Figure out type of tank
if circular:
total_batten_cost = circumference_liner * batten_strip_cost
else:
total_batten_cost = perimeter_liner * batten_strip_cost
# Calculate total quote cost
total_quote_cost += total_batten_cost
# Keep track of order
order_list.append("batten strip")
# Quote documentation
lining_system_cost += total_batten_cost
# Print out important info
print("\nCost of batten strip added: ${:,.2f}".format(total_batten_cost))
print("\nTotal quote cost: ${:,.2f}\n".format(total_quote_cost))
# J-Bolt
elif command[0] == 'j':
# Cost per j-bolt
jbolt_cost = 9.5
# Response to flat sheet attempt
if not circular and not rectangular:
print("\nThere is no j-bolt option for flat sheets.\n")
continue
# Circular calculation for number of j-bolts
if circular:
jbolt_num = math.ceil(circumference_liner / 1.5)
# Rectangular calculation for number of j-bolts
else:
jbolt_num = math.ceil(perimeter_liner / 1.5)
# Calculates total cost of j-bolts
total_jbolt_cost = jbolt_cost * jbolt_num
# Calculates total quote cost
total_quote_cost += total_jbolt_cost
# Keep track of order
order_list.append("jbolt")
# Quote documentation
lining_system_cost += total_jbolt_cost
# Print out important information
print("\nCost of j-bolts added: ${:,.2f}".format(total_jbolt_cost))
print("\nTotal quote cost: ${:,.2f}\n".format(total_quote_cost))
# Oarlocks
elif command[0] == 'o' and command[1] == 'a':
# Cost per oarlock
oarlock_price = 9.00
# Response to flat sheet attempt
if not circular and not rectangular:
print("\nThere is no oarlock option for flat sheets.\n")
continue
# Collect number of oarlocks
oarlock_number = input("\nHow many oarlocks would you like to add: ")
if oarlock_number[0] == 'b' or oarlock_number[0] == 'B':
print("")
continue
else:
oarlock_number = int(oarlock_number)
# Calculates cost of oarlocks
total_oarlock_cost = oarlock_number * oarlock_price
# Calculates total quote cost
total_quote_cost += total_oarlock_cost
# Keep track of order
order_list.append("oarlock")
# Quote documentation
lining_system_cost += total_oarlock_cost
# Print out important information
print("\nCost of oarlocks added: ${:,.2f}".format(total_oarlock_cost))
print("\nTotal quote cost: ${:,.2f}\n".format(total_quote_cost))
# Crates
elif command[0] == 'c' and command[1] == 'r':
# For while loop
crate_satisfied = False
big_crate_requested = False
small_crate_requested = False
total_crate_cost = 0
total_crate_weight = 0
back_button = False
# Collect size of crate
crate_size_satisfied = False
while not crate_size_satisfied:
crate_size = input("\nEnter crate size (big or small): ").lower()
# Back
if crate_size == 'back':
print("")
back_button = True
crate_size_satisfied = True
crate_satisfied = True
continue
# Turns crate size into cost per crate size
if crate_size[0] == 'b' and crate_size[1] == 'i':
crate_cost = 650
crate_size_satisfied = True
elif crate_size[0] == 's':
crate_cost = 250
crate_size_satisfied = True
# If back button is pressed
if back_button:
continue
# Collect number of crates
number_crates = int(input("How many crates would you like: "))
# Calculates weight of the crate based on size
crate_weight = find_crate_weight(crate_size)
# Find total crate info
total_crate_cost += number_crates * crate_cost
total_crate_weight += number_crates * crate_weight
# Back button
if back_button:
continue
print("\nCost of crate(s) added: ${:,.2f}".format(total_crate_cost))
print("Weight of crate(s) added: {:,} lbs.\n".format(total_crate_weight))
# Calculate total weight and cost
total_weight += total_crate_weight
total_quote_cost += total_crate_cost
total_mobilization_cost += total_crate_cost
# Keep track of order
order_list.append("crate")
crate_included = True
# Prints out final info
print("Total weight: {:,} lbs.".format(total_weight))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Leak detection
elif command[0] == 'l' and command[1] == 'e':
# Price per square foot of leak detection
leak_detection_price = 10.00
# Response to flat sheet attempt
if not circular and not rectangular:
print("\nThere is no leak detection option for flat sheets.\n")
continue
# Price calculation for circular
if circular and not rectangular:
total_leak_detection_cost = circumference_liner * leak_detection_price
# Price calculation for rectangular
else:
total_leak_detection_cost = perimeter_liner * leak_detection_price
# Calculate total cost
total_quote_cost += total_leak_detection_cost
# Keep track of order
order_list.append("leak detection")
# Quote documentation
lining_system_cost += total_leak_detection_cost
# Print out final info
print("\nCost of leak detection added: ${:,.2f}".format(total_leak_detection_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Nailing strip
elif command[0] == 'n' and command[1] == 'a':
# Price per nailing strip
nailing_strip_price = 1.00
# Response to flat sheet attempt
if not circular and not rectangular:
print("\nThere is no nailing strip option for flat sheets.\n")
continue
# Price calculation for circular
if circular and not rectangular:
total_nailing_strip_cost = circumference_liner * nailing_strip_price
# Price calculation for rectangular
else:
total_nailing_strip_cost = perimeter_liner * nailing_strip_price
# Calculate total cost
total_quote_cost += total_nailing_strip_cost
# Keep track of order
order_list.append("nailing strip")
# Quote documentation
lining_system_cost += total_nailing_strip_cost
# Print out final info
print("\nCost of nailing strip added: ${:,.2f}".format(total_nailing_strip_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Stainless clips
elif command[0] == 's' and command[1] == 't':
# Response to flat sheet attempt
if not circular and not rectangular:
print("\nThere is no stainless clips option for flat sheets.\n")
continue
# Price per stainless clip
stainless_clip_price = 6.00
# Price calculation for circular
if circular and not rectangular:
# Calculate proper circumference
circumference_liner_rounded = math.ceil(circumference_liner)
total_stainless_clips_cost = circumference_liner_rounded * stainless_clip_price
# Price calculation for rectangular
else:
# Calculate proper perimeter
perimeter_liner_rounded = math.ceil(perimeter_liner)
total_stainless_clips_cost = perimeter_liner_rounded * stainless_clip_price
# Calculate total cost
total_quote_cost += total_stainless_clips_cost
# Keep track of order
order_list.append("stainless clips")
# Quote documentation
lining_system_cost += total_stainless_clips_cost
# Print out final info
print("\nCost of stainless clips added: ${:,.2f}".format(total_stainless_clips_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Installation
elif command[0] == 'i' and command[1] == 'n':
# Site survey
# Determine whether the site survey is domestic
is_inside_usa = input("\nIs the site survey in the US (yes/no)? ").lower()
if is_inside_usa[0] == 'b':
print("")
continue
# Site survey is national
if is_inside_usa[0] == 'y':
site_survey_distance_under = input("Is the site survey within 600 miles (yes/no)? ").lower()
if site_survey_distance_under[0] == 'y':
site_survey_cost = 1500
else:
site_survey_cost = 2500
# Site survey is international
else:
site_survey_cost = float(input("Enter cost of site survey: $"))
# Installation documentation
installation_included = True
# Traveling
traveling_cost = float(input("Enter cost of traveling: $"))
# Price of tools and hardware
single_tools_and_hardware_cost = liner_cost * 0.1
if number_liners > 1:
total_tools_and_hardware_cost = single_tools_and_hardware_cost * number_liners
else:
total_tools_and_hardware_cost = single_tools_and_hardware_cost
# Calculate based on tank type
if circular and not rectangular:
single_liner_installation_cost = calc_installation_price(diameter_liner)
if number_liners > 1:
total_liner_installation_cost = single_liner_installation_cost * number_liners
else:
total_liner_installation_cost = single_liner_installation_cost
print("\nCost of standard installation: ${:,.2f}".format(total_liner_installation_cost))
installation_request = input("Would you like to change cost (yes/no)? ").lower()
if installation_request[0] == 'y':
single_liner_installation_cost = float(input("Enter installation cost: $"))
else:
width_installation_cost = calc_installation_price(width_liner)
length_installation_cost = calc_installation_price(length_liner)
single_liner_installation_cost = max(width_installation_cost, length_installation_cost)
if number_liners > 1:
total_liner_installation_cost = single_liner_installation_cost * number_liners
else:
total_liner_installation_cost = single_liner_installation_cost
print("\nCost of standard installation: ${:,.2f}".format(total_liner_installation_cost))
installation_request = input("Would you like to change cost (yes/no)? ").lower()
if installation_request[0] == 'y':
single_liner_installation_cost = float(input("Enter installation cost: $"))
# Calculate total installation cost
total_installation_cost = site_survey_cost + traveling_cost \
+ total_liner_installation_cost + total_liner_installation_cost
# Calculate total costs
total_quote_cost += total_installation_cost
total_mobilization_cost += total_installation_cost
# Keep track of order
order_list.append("installation")
# Print out final info
print("\nCost of site survey added: ${:,.2f}".format(site_survey_cost))
print("Cost of traveling added: ${:,.2f}".format(traveling_cost))
print("Cost of tools and hardware added: ${:,.2f}".format(total_tools_and_hardware_cost))
print("Cost of installation added: ${:,.2f}".format(total_liner_installation_cost))
print("\nCost of total installation package added: ${:,.2f}".format(total_installation_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Lifting hem
elif command[0] == 'l' and command[1] == 'i':
# Response to flat sheet attempt
if not circular and not rectangular:
print("\nThere is no lifting hem option for flat sheets.\n")
continue
# For quote document
lifting_hem = True
# Lifting hem cost for circular
if circular and not rectangular:
lifting_hem_cost = circumference_liner * sqft_price
lifting_hem_weight = circumference_liner * weight_sqft
# Lifting hem cost for rectangular
else:
lifting_hem_cost = perimeter_liner * sqft_price
lifting_hem_weight = perimeter_liner * weight_sqft
# Calculate total cost
total_quote_cost += lifting_hem_cost
# Calculate total weight
total_weight += lifting_hem_weight
# Keep track of order
order_list.append("lifting hem")
# Print out final info
print("\nCost of lifting hem added: ${:,.2f}\n".format(lifting_hem_cost))
# Boots
elif command[0] == 'b' and command[1] == 'o':
happy = False
boot_list_inches = []
while not happy:
# Collect size in inches
boot_size_inches = input("\nEnter boot size in inches: ")
if boot_size_inches[0] == 'b' or boot_size_inches[0] == 'B':
print("")
back_button = True
happy = True
continue
else:
boot_size_inches = float(boot_size_inches)
# Collect number of these boots
boot_number = int(input(f"How many {boot_size_inches} inch boots would you like: "))
# Add to boot list to record sizes of boots
for x in range(boot_number):
boot_list_inches.append(boot_size_inches)
# See if more boots required
more_boots = input("\nWould you like to add more boots (yes/no)? ").lower()
if more_boots[0] == 'n':
happy = True
# Back button
if back_button:
continue
# OCD
boot_list_inches.sort()
# For loop prep
total_boot_cost = 0
count = 0
# Calculates total cost of boots
for boot in boot_list_inches:
boot_price = find_boot_price(boot)
total_boot_cost += boot_price
count += 1
# Sums total boot cost and total quote cost
total_quote_cost += total_boot_cost
# Keep track of order
order_list.append("boots")
# Quote documentation
lining_system_cost += total_boot_cost
# Prints out important info
print("\nPrice of boot(s) added: ${:,.2f}".format(total_boot_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Sumps
elif command[0] == 's' and command[1] == 'u':
# Price of sump labor
sump_labor_cost = 250
# Collect square footage of material
sump_square_footage = input("\nEnter square footage of material used for sump: ")
if sump_square_footage[0] == 'b' or sump_square_footage[0] == 'B':
print("")
continue
else:
sump_square_footage = float(sump_square_footage)
# Collect number of sumps
number_sumps = int(input("Enter number of sumps you wish to add: "))
# Calculate total cost of sumps
sump_cost = sump_square_footage * sqft_price
total_sump_cost = (sump_labor_cost + sump_cost) * number_sumps
# Calculate total cost
total_quote_cost += total_sump_cost
# Keep track of order
order_list.append("sump")
# Quote documentation
lining_system_cost += total_sump_cost
# Print out final info
print("\nCost of sump(s) added: ${:,.2f}".format(total_sump_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Manways
elif command[0] == 'm' and command[1] == 'a':
# Price of manways
manway_labor_cost = 250
# Collect square footage of material
manway_square_footage = input("\nEnter square footage of material used for manway: ")
if manway_square_footage[0] == 'b' or manway_square_footage[0] == 'B':
print("")
continue
else:
manway_square_footage = float(manway_square_footage)
# Collect number of manways
number_manways = int(input("Enter number of manways you wish to add: "))
# Calculate total cost of manways
manway_cost = manway_square_footage * sqft_price
total_manway_cost = (manway_labor_cost + manway_cost) * number_manways
# Calculate total cost
total_quote_cost += total_manway_cost
# Keep track of order
order_list.append("manway")
# Quote documentation
lining_system_cost += total_manway_cost
# Print out final info
print("\nCost of manway(s) added: ${:,.2f}".format(total_manway_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Center poles
elif command[0] == 'c' and command[1] == 'e':
# Price of center poles
center_pole_labor_cost = 250
# Collect square footage of material
center_pole_square_footage = input("\nEnter square footage of material used for center pole: ")
if center_pole_square_footage[0] == 'b' or center_pole_square_footage[0] == 'B':
print("")
continue
else:
center_pole_square_footage = float(center_pole_square_footage)
# Collect number of center poles
number_center_poles = int(input("Enter number of center poles you wish to add: "))
# Calculate total cost of center poles
center_pole_cost = center_pole_square_footage * sqft_price
total_center_pole_cost = (center_pole_labor_cost + center_pole_cost) * number_center_poles
# Calculate total cost
total_quote_cost += total_center_pole_cost
# Keep track of order
order_list.append("center pole")
# Quote documentation
lining_system_cost += total_center_pole_cost
# Print out final info
print("\nCost of additional center pole(s) added: ${:,.2f}".format(total_center_pole_cost))
print("Total quote cost: ${:,.2f}\n".format(total_quote_cost))
# Columns
elif command[0] == 'c' and command[1] == 'o':
# Price for column labor
column_labor_cost = 250
# Collect square footage of material
column_square_footage = input("\nEnter square footage of material used for column: ")
if column_square_footage[0] == 'b' or column_square_footage[0] == 'B':
print("")
continue
else:
column_square_footage = float(column_square_footage)
# Collect number of columns