available_invoice.py
2.83 KB
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
import sys
from configparser import ConfigParser
from argparse import ArgumentParser
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
import sismiop.services.base
def get_option(argv):
default_count = 10
help_count = 'default {}'.format(default_count)
pars = ArgumentParser()
pars.add_argument('conf')
pars.add_argument('--tahun')
pars.add_argument('--min-nominal', type=int)
pars.add_argument('--max-nominal', type=int)
pars.add_argument('--faktor-pengurang', action='store_true')
pars.add_argument(
'--count', type=int, default=default_count, help=help_count)
return pars.parse_args(argv)
def main(argv=sys.argv):
option = get_option(argv[1:])
count = int(option.count)
conf_file = option.conf
conf = ConfigParser()
conf.read(conf_file)
module_name = conf.get('main', 'module')
module = __import__('sismiop.services.' + module_name)
sub_module = getattr(module.services, module_name)
AvailableInvoice = sub_module.AvailableInvoice
db_url = conf.get('main', 'db_url')
persen_denda = conf.getfloat('main', 'persen_denda')
engine = create_engine(db_url)
session_factory = sessionmaker(bind=engine)
sismiop.services.base.DBSession = session_factory()
a = AvailableInvoice(persen_denda, option)
a.show()
def str2bool(v):
if isinstance(v, bool):
return v
if v.lower() in ('ya', 'yes', 'true', 't', 'y', '1'):
return True
elif v.lower() in ('tidak', 'no', 'false', 'f', 'n', '0'):
return False
raise argparse.ArgumentTypeError('Boolean value expected.')
def get_option_tangsel(argv):
default_count = 10
help_count = 'default {}'.format(default_count)
pars = ArgumentParser()
pars.add_argument('conf')
pars.add_argument('--tahun')
pars.add_argument('--discount-penuh', action='store_true')
pars.add_argument(
'--faktor-pengurang', type=str2bool, nargs='?', const=True,
default=None)
pars.add_argument('--min-nominal', type=int)
pars.add_argument('--max-nominal', type=int)
pars.add_argument(
'--count', type=int, default=default_count, help=help_count)
return pars.parse_args(argv)
def tangsel(argv=sys.argv):
option = get_option_tangsel(argv[1:])
conf_file = option.conf
conf = ConfigParser()
conf.read(conf_file)
module_name = conf.get('main', 'module')
module = __import__('sismiop.services.' + module_name)
sub_module = getattr(module.services, module_name)
AvailableInvoice = sub_module.AvailableInvoiceTangsel
db_url = conf.get('main', 'db_url')
persen_denda = conf.getfloat('main', 'persen_denda')
engine = create_engine(db_url)
session_factory = sessionmaker(bind=engine)
sismiop.services.base.DBSession = session_factory()
a = AvailableInvoice(persen_denda, option)
a.show()