Compare commits

...

421 Commits

Author SHA1 Message Date
pramod
f13b6c3782 Merge pull request #506 from pramodn02/1926
1926: Added Preview with future tranches
2016-10-25 18:44:59 +05:30
pramod
ffc3fee65a 1926: Added Preview with future tranches 2016-10-25 18:02:01 +05:30
pramod
c580b81dde Merge pull request #504 from jyothsnag/1803
#1803 Assigning staff before Office Activation is fixed
2016-10-25 17:47:39 +05:30
jyothsnag
3e084b2b21 #1803 Assigning staff before Office Activation is fixed 2016-10-25 15:07:34 +05:30
Satish
1e26eb6d89 RM:2190 - Take new survey for clients and centers (#501) 2016-10-25 12:43:25 +05:30
pramod
3949f75040 Merge pull request #499 from sachinkulkarni12/2184
2184: minor fixes for slab based charges
2016-10-25 11:39:15 +05:30
pramod
d5574b30f4 Merge pull request #498 from Mounashree/1953
issue#1953 Reset is not working properly in collection sheet page
2016-10-25 11:37:01 +05:30
Mounashree
3affaf1b20 issue#1953 Reset is not working properly in collection sheet page 2016-10-24 19:24:12 +05:30
pramod
8033bdbced Merge pull request #497 from Mounashree/issue#1875
issue#2104 Manage SMS is not allowing to activate the template SMS
2016-10-24 18:29:12 +05:30
pramod
83c6ca3216 Merge pull request #496 from jyothsnag/2140
#2140 ExternalId while creating employee is made mandatory
2016-10-24 18:28:50 +05:30
pramod
317172ccfd Merge pull request #462 from siddalingk/RM#1282
RM#1282
2016-10-24 18:28:22 +05:30
sachinkulkarni12
39a5d9f5dc 2184: minor fixes for slab based charges 2016-10-24 18:24:12 +05:30
siddalingk
45ead5ee74 RM#1282 2016-10-24 17:45:54 +05:30
Mounashree
2107d919b3 issue#2104 Manage SMS is not allowing to activate the template SMS 2016-10-24 16:51:19 +05:30
jyothsnag
d98b12d6a2 #2140 ExternalId while creating employee is made mandatory 2016-10-24 16:20:01 +05:30
pramod
481cb02b3f Merge pull request #495 from jyothsnag/2032b
#2032 Issue with meeting calender resolved
2016-10-24 16:09:54 +05:30
jyothsnag
cb2ba08c30 #2032 Issue with meeting calender resolved 2016-10-24 16:02:22 +05:30
pramod
759e291208 Merge pull request #493 from pramodconflux/portfolio_transaction
1965 generate portfolio transaction
2016-10-24 13:54:23 +05:30
pramod
f5a2c76aca Merge pull request #494 from sachinkulkarni12/2165
fix for 2165
2016-10-24 13:15:20 +05:30
sachinkulkarni12
833db2887f fix for 2165 2016-10-24 13:12:54 +05:30
Pramod Sharma
feb21de370 1965 generate portfolio transaction 2016-10-24 12:42:32 +05:30
pramod
9a4ef8059b Merge pull request #491 from jyothsnag/2085
2085 charges not allowing to create and not applied to client resolved
2016-10-24 11:23:15 +05:30
pramod
3b593c4e04 Merge pull request #469 from jinjurajan/collection_shhet_1938
#1938: Loan charge issue in collection sheet
2016-10-24 10:01:44 +05:30
pramod
9d44c479f6 Merge pull request #479 from jinjurajan/gl_closure_view_new
#2062: Changing the view of accoun closure page and adding pagination
2016-10-24 10:00:43 +05:30
pramod
5b0c20fcf2 Merge pull request #488 from venkatconflux/newdev
resolving the individual collection sheet submit exception and adding…
2016-10-24 09:44:56 +05:30
Vishwas Babu A J
367aedb5d3 Merge pull request #492 from sachinkulkarni12/2090
2090: slab based charges
2016-10-23 17:51:38 -07:00
sachinkulkarni12
ed6aa675b9 2090: slab based charges 2016-10-23 17:00:07 +05:30
jyothsnag
7c76fc0688 2085 charges not allowing to create and not applied to client resolved 2016-10-23 15:57:51 +05:30
Vishwas Babu A J
11b802c072 Merge branch 'pramodconflux-2093_weeks_in_year' into develop 2016-10-23 02:09:33 -07:00
Vishwas Babu A J
a1e5f7c0d6 resolving merge conflicts 2016-10-23 02:09:18 -07:00
Satish
d57a5c2815 RM:2156 - Admin section survey configuration for clients, groups, centers and offices (#489) 2016-10-22 11:15:04 +05:30
venkatconflux
5b933c9be8 resolving the individual collection sheet submit exception and adding hana ui config 2016-10-21 22:24:59 +06:30
Satish
17654cf3e3 RM-2141 : Bug in create and edit family details (#485) 2016-10-21 20:32:46 +05:30
Pramod Sharma
cc284dcdd0 2093 weeks in year 2016-10-21 19:33:27 +05:30
pramod
a580393d96 Merge pull request #484 from Mounashree/issue#1788
#1788 Loan_Transaction_View should have Auditable_Details
2016-10-21 18:52:09 +05:30
Mounashree
922bb56459 #1788 Loan_Transaction_View should have Auditable_Details 2016-10-21 17:31:05 +05:30
pramod
980fe313de Merge pull request #482 from siddalingk/RM#1987-develop
RM # 1987(develop)
2016-10-21 12:24:43 +05:30
siddalingk
b10b0fcffc RM#1987-develop 2016-10-21 12:04:17 +05:30
pramod
f1b91a51a5 Merge pull request #476 from sachinkulkarni12/1955dev
1955: upfront flat charges for glim
2016-10-20 19:09:26 +05:30
pramod
8a0a6dc2f6 Merge pull request #478 from siddalingk/RM#1988-develop
RM#1988-develop
2016-10-20 19:01:40 +05:30
siddalingk
df99b2afee RM#1988-develop 2016-10-20 15:47:20 +05:30
jinjurajan
690eef701c #2062: Changing the view of accoun closure page and adding pagination 2016-10-20 13:46:47 +05:30
sachinkulkarni12
5d40049f27 1955: upfront flat charges for glim
Conflicts:
	app/scripts/controllers/loanAccount/EditLoanAccAppController.js
	app/scripts/controllers/loanAccount/NewLoanAccAppController.js
2016-10-20 13:29:31 +05:30
pramod
2764ee2d1f Merge pull request #474 from pramodconflux/phakamani_merge_codes
1700 Phakamani merge codes
2016-10-19 13:49:52 +05:30
Pramod Sharma
52f6c471c2 phakamani merged branch 2016-10-19 13:21:17 +05:30
pramod
5feea88619 Merge pull request #471 from Mounashree/id_1903
#1903 include in customer loan counter issue
2016-10-18 10:13:09 +05:30
pramod
49a7ab9f72 Merge pull request #456 from jagadeeshakn/new10072016
Bug #1952  Add new address same as existing address Type
2016-10-18 09:59:38 +05:30
Satish
107aa4e976 RM:2059 - Risk module loan purpose grouping and loan purpose bug fix (#472)
* develop_risk_clean_code

* RM:2059 - Risk module loan purpose grouping and loan purpose bug fix
2016-10-17 19:25:22 +05:30
Mounashree
e9e7adb6c2 #1903 include in customer loan counter issue 2016-10-17 15:59:23 +05:30
Nayan Ambali
a2356405aa Merge pull request #470 from satish-conflux/develop_risk
RM:1978 -Merge code from risk branch to develop branch
2016-10-17 14:55:04 +05:30
satish-conflux
3051a26480 RM:1978 -Merge code from risk branch to develop branch 2016-10-17 14:40:28 +05:30
jinjurajan
5138af6fb4 #1938: Loan charge issue in collection sheet 2016-10-17 13:20:09 +05:30
pramod
f3eadb1ee4 Merge pull request #461 from sughosh88/phakamani
1992:Groupname + PF Code in viewcenter, allow externalid in create/ed…
2016-10-13 13:50:54 +05:30
Sughosh
39feb1d800 1992:Groupname + PF Code in viewcenter, allow externalid in create/edit staff 2016-10-12 17:05:24 +05:30
pramod
18b288b552 Merge pull request #460 from satish-conflux/develop_mandatory_charges
RM 1989 : Loan product charges displaying two times in loan application
2016-10-12 17:03:14 +05:30
satish-conflux
4907b761d0 RM 1989 : Loan product charges displaying two times in loan application 2016-10-12 15:10:42 +05:30
pramod
8c7fbb81d4 Merge pull request #459 from pramodconflux/transafer
1969 show id and external id along with name in transafer client drop…
2016-10-12 12:32:46 +05:30
Pramod Sharma
c1f7c04c7f 1969 show id and external id along with name in transafer client dropdown 2016-10-12 12:17:41 +05:30
pramod
0b2d6c7044 Merge pull request #457 from KoustavMuhuri/cherrySorting
1927:Transaction Date is not coming in order for google chrome
2016-10-10 15:02:53 +05:30
pramod
45651203da Merge pull request #455 from satish-conflux/develop_sms_integration
RM 1962 : SMS integration for loan disbursal and repayment transactions
2016-10-10 15:00:29 +05:30
pramod
5455f11c73 Merge pull request #452 from jinjurajan/collection_sheet_1989
#1947:centers and groups are not coming in collection sheet
2016-10-10 14:59:44 +05:30
pramod
5a096101ed Merge pull request #444 from satish-conflux/cb_develop
RM 1907 : Credit Bureau Intigration
2016-10-10 14:53:52 +05:30
satish-conflux
3809d7d9ac RM 1907 : Credit Bureau Intigration 2016-10-07 18:09:47 +05:30
Koustav Muhuri
731b9d619d 1927:Transaction Date is not coming in order for google chrome
Conflicts:
	app/scripts/controllers/deposits/recurring/ViewRecurringDepositAccountDetailsController.js
	app/scripts/controllers/savings/ViewSavingDetailsController.js
	app/views/savings/view_saving_account_details.html
2016-10-07 17:37:36 +05:30
jagadeeshakn
0b360da926 Bug #1952 Add new address same as existing address Type 2016-10-07 17:29:24 +05:30
satish-conflux
1b17cfb895 RM 1962 : SMS integration for loan disbursal and repayment transactions 2016-10-07 17:01:22 +05:30
jinjurajan
63fdcce329 #1947:centers and groups are not coming in collection sheet 2016-10-07 11:59:36 +05:30
pramod
3780e6c314 Merge pull request #445 from praveen062/AadhaarService
#1172- Borrower identification during loan disbursal by cash mode
2016-10-05 15:51:33 +05:30
pramod
aca6804b1c Merge pull request #448 from bharathc27/0510d
fix for charges UI
2016-10-05 15:49:45 +05:30
pramod
7b54f70eda Merge pull request #446 from jinjurajan/recovery_1876_new
#1876: recovery date error msag
2016-10-05 15:46:25 +05:30
sachinkulkarni12
d344d2526c fix for charges UI
Conflicts:
	app/scripts/controllers/loanAccount/NewLoanAccAppController.js
	app/scripts/controllers/loanAccount/NewLoanApplicationReference.js
	app/scripts/controllers/loanAccount/UpdateLoanApplicationReference.js
2016-10-05 15:16:16 +05:30
jinjurajan
26ebe4227e #1876: recovery date error msag 2016-10-05 12:02:53 +05:30
praveen062
37071ce338 #1172- Borrower identification during loan disbursal by cash mode 2016-10-05 11:02:56 +05:30
pramod
561de5244e Merge pull request #441 from jinjurajan/client_de_duplication_1773
#1733:Adding option for force activate the client with permission
2016-10-05 09:18:10 +05:30
jinjurajan
06c08a8acd #1733:Adding option for force activate the client with permission 2016-10-04 14:10:39 +05:30
pramod
be9c2c0e2f Merge pull request #439 from jyothsnag/1552_1
se1552secdep
2016-10-04 10:37:54 +05:30
jyothsnag
a785a50f11 1552 Client Summary Update 2016-10-03 22:46:33 +05:30
Rahul Shah
350cbce285 Merge pull request #434 from sachinkulkarni12/phaka
1869:Payment type option not coming for glim loans
2016-10-01 10:45:46 +05:30
sachinkulkarni12
8e7591a846 1869:Payment type option not coming for glim loans 2016-09-30 18:48:15 +05:30
pramod
35869c4a58 Merge pull request #426 from venkatconflux/secdepdevelop
Secdepdevelop
2016-09-28 17:56:57 +05:30
pramod
40d1c8b787 Merge pull request #424 from jagadeeshakn/addressfixes
Bug #1795 villages is not populating more than 200 records
2016-09-28 17:30:33 +05:30
venkatconflux
aa17365bbc 1722 : migration of secdep related changes to develop 2016-09-28 16:24:39 +05:30
siddalingk
69799605be clientCharge_secdeplive 2016-09-28 16:24:38 +05:30
venkatconflux
691f7552c8 client recurring charges display and inactivate 2016-09-28 16:24:38 +05:30
Rahul Shah
0311f1f380 Merge pull request #425 from sachinkulkarni12/1561
1561:Amount is not deducting after unchecking the clients
2016-09-28 14:34:16 +05:30
jagadeeshakn
4192539483 Bug #1795 villages is not populating more than 200 records 2016-09-28 14:31:17 +05:30
pramod
08e97ceac7 Merge pull request #419 from pramodconflux/adv_accounting
adv accounting
2016-09-28 11:34:34 +05:30
pramod
55521c3b2c Merge pull request #421 from jyothsnag/VillageAddress
1765_addvillageADD
2016-09-28 11:25:50 +05:30
pramod
29cffd9e54 Merge pull request #420 from jyothsnag/1765_1finflx
1765 mandatory Fields For Village
2016-09-28 11:25:34 +05:30
jyothsnag
c8fe03b856 1765_addvillageADD 2016-09-28 11:12:57 +05:30
jyothsnag
b6a05e8794 1765 mandatory Fields For Village
Conflicts:
	app/views/clients/editclientaddress.html
	app/views/villages/editvillageaddress.html
2016-09-27 21:31:23 +05:30
aj-ankitjain
721aea3030 adv accounting 2016-09-27 20:27:54 +05:30
pramod
07350947cd Merge pull request #414 from jyothsnag/1658job
1658 Scheduler Job Dependent Names
2016-09-27 17:40:05 +05:30
Rahul Shah
e3ffbdd3d7 Merge pull request #408 from KoustavMuhuri/customReport
1782:Support for Custom reporting Category
2016-09-27 17:32:53 +05:30
jyothsnag
3e623ab0a7 1658 Scheduler Job Dependent Names 2016-09-27 17:28:50 +05:30
Rahul Shah
c35da09f51 Merge pull request #407 from sachinkulkarni12/1730
1730:writeoff transaction amount must be greater than zero
2016-09-27 16:46:32 +05:30
Koustav Muhuri
7aacc215fc 1782:Support for Custom reporting Category 2016-09-27 15:58:24 +05:30
pramod
c416f6fb20 Merge pull request #406 from jyothsnag/address_mandatory_1765
1765_addressfields made mandatory
2016-09-27 15:38:23 +05:30
sachinkulkarni12
fd0e08150d 1561:Amount is not deducting after unchecking the clients 2016-09-27 14:59:47 +05:30
sachinkulkarni12
8ec91f3304 1730:writeoff transaction amount must be greater than zero 2016-09-27 11:34:27 +05:30
jyothsnag
6c86979136 1765_addressfields made mandatory 2016-09-27 11:06:39 +05:30
Rahul Shah
aa9cb051f1 Merge pull request #404 from pramodconflux/advanced_accounting
advanced accounting and reconciliation enhancement
2016-09-26 19:12:32 +05:30
aj-ankitjain
e20d4c07e8 advanced accounting and reconciliation enhancement 2016-09-26 19:09:32 +05:30
Rahul Shah
f7645c22c3 Merge pull request #401 from sachinkulkarni12/bugfix
minor bug fixes for glim
2016-09-26 18:52:56 +05:30
sachinkulkarni12
1c9876ce6b minor bug fixes for glim 2016-09-26 18:17:43 +05:30
Rahul Shah
6ddbbbdfa8 Merge pull request #397 from sachinkulkarni12/permission
remove permission for glim
2016-09-26 15:30:54 +05:30
pramod
28c3556da3 Merge pull request #396 from jinjurajan/accounting_closure_enhancement_1677
#1677:Changing the account closure view page
2016-09-26 14:11:38 +05:30
sachinkulkarni12
5c84d40854 remove permission for glim 2016-09-26 14:04:42 +05:30
Rahul Shah
e053cd3dac Merge pull request #395 from sachinkulkarni12/newGlim
clients individual repayment schedule
2016-09-26 12:16:37 +05:30
jinjurajan
6e7097a6ad #1677:Changing the account closure view page 2016-09-26 11:58:26 +05:30
sachinkulkarni12
57a6a78e59 clients individual repayment schedule 2016-09-26 10:57:43 +05:30
pramod
9ffb26e09d Merge pull request #393 from jagadeeshakn/addressTypeValidate
1758 Not able to create client
2016-09-23 18:46:24 +05:30
jagadeeshakn
fb9978acf0 1758 Not able to create client 2016-09-23 18:39:54 +05:30
pramod
949921ddac Merge pull request #391 from siddalingk/RM#1692
RM#1692 Attach Meeting screen needs clean up
2016-09-23 14:47:37 +05:30
siddalingk
b6311a9e50 RM#1692 2016-09-23 14:20:25 +05:30
pramod
11f9b1213e Merge pull request #389 from jyothsnag/1543
1543
2016-09-23 11:29:16 +05:30
jyothsnag
2d340f72ee 1543 2016-09-23 10:08:48 +05:30
pramod
c0771bcdf6 Merge pull request #388 from jagadeeshakn/addressTypemandatory
make addressTypes as required field
2016-09-23 09:50:53 +05:30
jagadeeshakn
3273d0d985 make addressTypes as required field 2016-09-22 18:05:52 +05:30
pramod
aedd6930c9 Merge pull request #378 from KoustavMuhuri/displaycenterGroupName
1476:Display Center and Group name for Clients - in search results.
2016-09-22 17:08:23 +05:30
pramod
d623e0acfd Merge pull request #384 from KoustavMuhuri/datatablesSearch
1732:Improvements to Drop downs in Data Tables
2016-09-22 14:27:10 +05:30
pramod
c5a2c1004b Merge pull request #385 from pramodn02/merge
Merge
2016-09-22 13:19:18 +05:30
pramod
72a76ae508 merging latest community till 22 Sep 2016 2016-09-22 13:10:24 +05:30
pramod
2384ade549 Mifosx-2784 Teller cash transaction list 2016-09-22 12:34:09 +05:30
satish-conflux
a8956dab1d MIFOSX-2511 : Support uploading of per-tenant logos for Community App 2016-09-22 12:08:59 +05:30
Nazeer Hussain Shaik
bc5cb9f5df Fix for MIFOSX-2167 2016-09-22 11:34:02 +05:30
Adi Narayana Raju
8913abd3a5 [FINERACT-131] Topup Loan Feature 2016-09-22 11:33:02 +05:30
jyothsnag
3bb11badae Added buttons for client UNDOREJECT and UNDOWITHDRAWAL 2016-09-22 11:25:07 +05:30
Koustav Muhuri
3a25f0650c 1732:Improvements to Drop downs in Data Tables 2016-09-22 11:25:04 +05:30
venkatconflux
f9a9e3c3ed FINERACT - 202 enabling multi resheduling for loans 2016-09-22 11:21:45 +05:30
Gaurav Saini
8573ee838a Getting Started doc
Adding Link for Getting Started doc for Volunteers.
2016-09-22 11:21:13 +05:30
Nazeer Hussain Shaik
278eaed029 showing gl account types and usage in locale specific language 2016-09-22 11:19:53 +05:30
Siebrand Mazeland
3dc41c362e Localisation updates from https://translatewiki.net. 2016-09-22 11:17:10 +05:30
sachinkulkarni12
1ac4a48e87 [FINERACT-167] UX changes for loan foreclosure. 2016-09-22 11:14:36 +05:30
satish-conflux
6cb2cd4b4e Support localization of report names in Community App and Mentioned features should get translated with respect to selected language 2016-09-21 20:47:05 +05:30
Siebrand Mazeland
ef5db160d7 Localisation updates from https://translatewiki.net. 2016-09-21 20:32:01 +05:30
pramod
d0e63651da Merge pull request #381 from jinjurajan/edit_gl_account_1719
#1719:gl_account_edit page problem of tag slection
2016-09-21 16:16:30 +05:30
jinjurajan
4d5175e0c1 #1719:gl_account_edit page problem of tag slection 2016-09-21 16:02:43 +05:30
pramod
8a547cf1a6 Merge pull request #372 from jagadeeshakn/addressconfig
display address tab based on configurations
2016-09-21 13:52:05 +05:30
Koustav Muhuri
339b6cf45c 1476:Display Center and Group name for Clients - in search results. 2016-09-20 18:48:23 +05:30
pramod
7b360202fc Merge pull request #375 from jinjurajan/collection_sheet_1698
adding a button called forced submit for the collection sheet to subm…
2016-09-20 15:41:35 +05:30
jinjurajan
0e6958463f adding a button called forced submit for the collection sheet to submit second time for the same date 2016-09-20 11:39:11 +05:30
Rahul Shah
ccbf6a8045 Merge pull request #371 from pramodconflux/undo_reconcile_details
detail reconciliation and query criteria
2016-09-19 18:47:04 +05:30
jagadeeshakn
32a26e92c4 display address tab based on configurations 2016-09-19 18:39:53 +05:30
aj-ankitjain
ac4e523067 detail reconciliation and query criteria 2016-09-19 18:34:04 +05:30
pramod
16eeeda3eb Merge pull request #368 from KoustavMuhuri/bulksavings
1583:Bulk savings account and/or activation.
2016-09-19 16:47:50 +05:30
pramod
24f71b30c3 Merge pull request #370 from siddalingk/RM#1535_develop
RM#1535_Develop_Approval_Not_Happening_For_Multi_Disbursal
2016-09-19 16:47:06 +05:30
pramod
8c5a967498 Merge pull request #369 from jinjurajan/gl_accounts_charts_1601
#1601:displaying gl account classifaication in gl account charts
2016-09-19 16:46:52 +05:30
jinjurajan
45c4db4f94 #1601:displaying gl account classifaication in gl account charts 2016-09-19 15:57:40 +05:30
siddalingk
acf1029beb RM#1535_Develop_Approval_Not_Happening_For_Multi_Disbursal 2016-09-19 14:57:25 +05:30
Rahul Shah
e528486ca7 Merge pull request #362 from pramodconflux/payment_reconile
payment reconciliation
2016-09-15 19:30:24 +05:30
aj-ankitjain
d181874398 payment reconciliation 2016-09-15 14:11:03 +05:30
Rahul Shah
b1e9f51471 Merge pull request #361 from pramodconflux/performance_reconciliation
performance reconciliation
2016-09-15 13:20:14 +05:30
aj-ankitjain
174a7ce572 performance reconciliation 2016-09-14 13:00:37 +05:30
Koustav Muhuri
1a4e841575 1583:Bulk savings account and/or activation. 2016-09-10 13:51:31 +05:30
pramod
47a340e03d Merge pull request #358 from satish-conflux/dev_loan_product_chagres
Loan Application Charges Mandatory based on product charges config
2016-09-10 11:22:07 +05:30
satish-conflux
af863ab833 Loan Application Charges Mandatory based on product charges config 2016-09-09 16:40:22 +05:30
pramod
f90f0f5621 Merge pull request #356 from siddalingk/RM#1473_#1479
RM#1473_#1479
2016-09-08 18:08:14 +05:30
siddalingk
dfab743e8b RM#1473_#1479 2016-09-08 17:56:07 +05:30
Rahul Shah
64f4530805 Merge pull request #353 from pramodconflux/recovery_payment_glim
recovery payment
2016-09-07 18:18:29 +05:30
pramod
5fbd5aa480 Merge pull request #354 from siddalingk/RM#1484_#1486_#1515_#1483_#1536
RM#1484_#1486_#1515_#1483_#1536
2016-09-07 18:15:07 +05:30
siddalingk
59dbfc7345 RM#1484_#1486_#1515_#1483_#1536 2016-09-09 17:19:23 +05:30
aj-ankitjain
90d3996029 recovery payment 2016-09-07 17:55:28 +05:30
Rahul Shah
381e61156c Merge pull request #350 from pramodconflux/recovery_glim
editable transaction
2016-09-06 15:39:23 +05:30
aj-ankitjain
6a8e4e2f14 editable transaction 2016-09-06 15:36:25 +05:30
pramod
52f0fd2463 Merge pull request #349 from siddalingk/UpdatedFeature#1305
Redmine#1305_Bulk_undo_transactions
2016-09-06 14:08:25 +05:30
siddalingk
00e024b1a6 Redmine#1305_Bulk_undo_transactions 2016-09-06 12:23:36 +05:30
Rahul Shah
81710fae61 Merge pull request #348 from pramodconflux/charge_4_month
charge 4 monthh fix
2016-09-06 10:28:41 +05:30
aj-ankitjain
098cc4c310 charge 4 monthh fix 2016-09-05 18:10:09 +05:30
Nayan Ambali
c335eb5260 Merge pull request #321 from satish-conflux/dev_collection_sheet_attendance
Removed all Attendance options except Present and Absent
2016-09-03 11:08:52 +05:30
pramod
3e2a0e947e 458 : Adjust amounts in first EMI UI fix 2016-09-02 19:33:24 +05:30
Vishwas Babu A J
73748c62ff Merge pull request #346 from satish-conflux/RM_1482
In loan application the loan amount is entered for each client then summed up as the total amount.
2016-09-01 05:17:44 -07:00
satish-conflux
0023ffdab6 In loan application the loan amount is entered for each client then summed up as the total amount 2016-09-01 17:42:31 +05:30
pramod
f729e50733 Merge pull request #345 from siddalingk/Feature#1305
Redmine#1305_Bulk_undo_transactions
2016-09-01 15:15:46 +05:30
siddalingk
34af779c91 Redmine#1305_Bulk_undo_transactions 2016-09-01 14:29:03 +05:30
pramod
83aa97b850 Merge pull request #344 from Vishwa1311/MIGRATION-FIXES
[TASK-670] Removed syncRepaymentsWithMeeting parameter from request
2016-08-31 12:54:31 +05:30
Vishwa
ddbb6dd829 [TASK-670] Removed syncRepaymentsWithMeeting parameter from request 2016-08-31 12:48:23 +05:30
pramod
404f9a74af Merge pull request #340 from venkatconflux/902
902 : adding savings account withdraw and deposit in the collection s…
2016-08-29 10:21:20 +05:30
venkatconflux
6920488750 902 : adding savings account withdraw and deposit in the collection sheet 2016-08-26 22:31:19 +05:30
pramod
c747acc8fe Merge pull request #326 from jinjurajan/gl_account_classification
#1339:Adding gl classification in gl account creation and edit
2016-08-26 18:23:05 +05:30
Vishwanath R
15c980b952 [Task 670] Migrated commits from chaitanya_prod to develop (from 08-April-2016 to 25-August-2016) (#335)
* fixfordisbursalbuttonnotvisible (#93)

fix for disbursal button not visible

* navigating to view center screen

* original schedule is not generating properly after rescheduling jlg loans if early or late payment is made

* issues

* The field assigned to frequency for recalculate Outstanding Principal is not displaying in account detail page

* Should not allow to un checke the Sync repayments with meeting

* Conflicts:
	app/scripts/controllers/product/EditLoanProductController.js
	app/views/products/viewloanproduct.html

* 629:adding new permission to change future meeting date in edit calendar page

* Conflicts:

* #648:Adding Loan product configuration for checking actual disbursement date equals expected date

* #648: expected and actual disbursal date validation bug removing checkbox

* Changing the minimumnumberofdays between disbursal and first repayment date
to minimum duration

* 650:adding minimum and maximum loanterm in loanproduct

* 1025:Improve navigation on journal entries

* 612:Repayment Schedule Should not contain Future Disbursement

* #650:loan product modification problem

* 612:Repayment Schedule should not contain future disbursement

* address update data validations

* capture address for villages

* changing payment type id and hiding interest charged from feild in UI config file

* making first repayment date as mandatory in new and edit loan application

* making FRP as mandatory field in new and edit loan application page

* 473:fix for not displaying emi variations in loan tranche details

* 612:Repayment Schedule should not contain future disbursement

* 872 new jlgloanaccount readonly for sync repayments with meeting and repaid every..

* In view loan details activate first tab always

* populate client address based on village address

* capture taluka as dropdown for client address

* Removed all Attendance options except Present and Absent

* 612 Repayment schedule should not contain Future Disbursement

* Fixed issue which has happenned after migration
2016-08-25 19:58:17 +05:30
Rahul Shah
06a3d00e14 Merge pull request #332 from pramodconflux/enhancement_payment
ui enhancement
2016-08-25 17:25:32 +05:30
Rahul Shah
5bf592b301 Merge pull request #333 from shahrahul1985/phakamani_pre_release
Updating the Latest UI Config file
2016-08-25 14:47:15 +05:30
shahrahul1985
d457a83410 Updating the Latest UI Config file 2016-08-25 14:45:43 +05:30
Rahul Shah
cc1aca5603 Merge pull request #331 from KoustavMuhuri/clientcreate
1332:External ID for client creation should be Mandatory
2016-08-25 13:44:13 +05:30
aj-ankitjain
64839bb79e ui enhancement 2016-08-25 13:31:21 +05:30
Koustav Muhuri
869965f7d4 1332:External ID for client creation should be Mandatory 2016-08-25 13:30:17 +05:30
Rahul Shah
a5553d08e1 Merge pull request #330 from KoustavMuhuri/phakamaniprerelease
1279:Create/Modify Loan Application Screen
2016-08-25 13:13:59 +05:30
Koustav Muhuri
1062e8898f 1279:Create/Modify Loan Application Screen 2016-08-25 13:11:33 +05:30
jinjurajan
ccb2bae5cc #1339:Adding gl classification in gl account creation and edit 2016-08-24 13:30:20 +05:30
Rahul Shah
a58328f6b1 Merge pull request #323 from sachinkulkarni12/testglim
hiding waiver button until loan is in active state and prepay page
2016-08-24 11:23:26 +05:30
sachinkulkarni12
b09ceb0e45 hiding waiver button until loan is in active state and prepay page 2016-08-23 17:29:35 +05:30
satish-conflux
f433bd6df4 Removed all Attendance options except Present and Absent 2016-08-23 12:18:09 +05:30
Rahul Shah
461644998c Merge pull request #318 from sachinkulkarni12/CompleteGlim
complete glim
2016-08-22 20:26:17 +05:30
sachinkulkarni12
9d5249470f complete glim 2016-08-22 10:27:31 +05:30
pramod
c34a161c25 Merge pull request #312 from jyothsnag/buton
#1145 Reject and Approve buttons for Loan Reschedule to user is made …
2016-08-18 17:36:56 +05:30
jyothsnag
984a4903bd #1145 Reject and Approve buttons for Loan Reschedule to user is made visible 2016-08-18 14:58:12 +05:30
pramod
94ba44bfa6 Merge pull request #311 from jyothsnag/sav
Buttons for Assign and Unassign staff for closed savings account is …
2016-08-18 12:11:09 +05:30
jyothsnag
2538bb271b Buttons for Assign and Unassign staff for closed savings account is removed 2016-08-18 11:56:37 +05:30
pramod
424573e8ee Merge pull request #308 from KoustavMuhuri/phakamanirelease
1279:Create/Modify Loan Application Screen
2016-08-16 15:22:20 +05:30
Koustav Muhuri
f5f5e8a3ff 1279:Create/Modify Loan Application Screen 2016-08-15 18:15:17 +05:30
pramod
f0c146d5fc Merge pull request #303 from jinjurajan/loan_provisioning_857
#857:Adding Provisioning for amout type in create and edit provisioni…
2016-08-13 11:01:56 +05:30
jinjurajan
51de0335b6 #857:Adding Provisioning for amout type in create and edit provisioni g criteria page 2016-08-14 12:49:06 +05:30
pramod
a0679f6131 Merge pull request #297 from Vishwa1311/FINFLUX-FEATURE-1114
[FEATURE-1114] UX changes for center screen improvements
2016-08-10 17:58:02 +05:30
Vishwa
34a650c837 [FEATURE-1114] UX changes for center screen improvements 2016-08-10 15:30:12 +05:30
Nayan Ambali
08da7bbf6c Merge pull request #295 from jagadeeshakn/fetchaddress
Implement ui for add client address
2016-08-09 17:52:06 +05:30
jagadeeshakn
7aa6adec78 Implement ui for add client address 2016-08-08 19:13:15 +05:30
Rahul Shah
c7179b581d Merge pull request #291 from sachinkulkarni12/GlimWaiveInt
waive interest
2016-08-08 10:45:08 +05:30
Nayan Ambali
39ed1eae3d Merge pull request #288 from jagadeeshakn/clientaddress
1095 Implement UI for add client address
2016-08-08 10:39:01 +05:30
sachinkulkarni12
b0b077e29a waive interest 2016-08-08 10:25:27 +05:30
jagadeeshakn
13a55d3da9 1095 Implement UI for add client address 2016-08-05 18:59:42 +05:30
pramod
f326abb915 Merge pull request #286 from jinjurajan/code_score_919_rework
#:Changing the view of add_code_value page
2016-08-05 17:33:47 +05:30
jinjurajan
c000063feb #:Changing the view of add_code_value page 2016-08-08 16:59:34 +05:30
Rahul Shah
a84a0d6bec Merge pull request #281 from jyothsnag/submitbutton
#1145-hiding submit button with permissions
2016-08-03 16:01:56 +05:30
jyothsnag
b585eb7cca #1145-hiding submit button with permissions 2016-08-03 15:56:09 +05:30
pramod
8a1aa7116d Merge pull request #280 from KoustavMuhuri/installmentAmountModification
699:Installment amount modification in loan application
2016-08-03 14:06:16 +05:30
pramod
7ee88a2a70 Merge pull request #279 from siddalingk/1103_Fixes_for_the_Subsidy_Module_new
Redmine Issue-1103 Fixes for the Subsidy Module
2016-08-03 14:05:17 +05:30
Koustav Muhuri
010cd53ebb 699:Installment amount modification in loan application 2016-08-03 12:56:04 +05:30
siddalingk
2b3bd9e0ec 1103_Fixes_for_the_Subsidy_Module_new 2016-08-03 08:26:06 +05:30
Rahul Shah
8b7ecea53c Merge pull request #271 from pramodconflux/charge_validation_and_repayment_bug_fixes
charge validation and repayment bug fixes
2016-08-01 17:17:17 +05:30
pramod
957dc32760 Merge pull request #270 from Vishwa1311/BUG-951
[BUG-951] Fixed issue with account dropdown in create/update loan provisioning criteria
2016-08-01 16:49:36 +05:30
Vishwa
7178c25b4a [BUG-951] Fixed issue with account dropdown in create/update loan provisioning criteria 2016-08-01 15:51:33 +05:30
aj-ankitjain
9bc98ad4e6 charge validation and repayment bug fixes 2016-08-01 15:26:05 +05:30
Rahul Shah
80b27fa139 Merge pull request #268 from pramodn02/458
458 : Adjust amounts in first EMI UI fix
2016-08-01 11:31:08 +05:30
pramod
cf7c4e5bf4 458 : Adjust amounts in first EMI UI fix 2016-08-01 10:35:40 +05:30
Nayan Ambali
a30e871fd5 Merge pull request #265 from praveen062/AccountingRulesForDevelop
#1024 Allow an accounting rule to be used in sub-offices of the office selected
2016-07-28 09:46:55 +05:30
praveen062
c5f38d12be #1024 Allow an accounting rule to be used in sub-offices of the office selected 2016-07-27 18:49:14 +05:30
Rahul Shah
0f6b29420f Merge pull request #263 from pramodconflux/glim_repayments
glim repayment
2016-07-26 13:39:07 +05:30
aj-ankitjain
d124e36b29 glim repayment 2016-07-26 10:54:36 +05:30
pramod
7ea3a4245c Merge pull request #259 from satish-conflux/RM_1083_dev
Loan Application Bug and Enhancement
2016-07-22 16:41:59 +05:30
satish-conflux
e1fb1bf8c2 Loan Application Bug and Enhancement 2016-07-22 12:55:09 +05:30
pramod
ece89cce65 Merge pull request #256 from confluxtoo/revert-255-recon_bank
Revert "#1026:Adding currency id in organisation currency view page"
2016-07-21 16:59:03 +05:30
pramod
d6cbf1c792 Revert "#1026:Adding currency id in organisation currency view page" 2016-07-21 16:58:39 +05:30
pramod
e3f8def717 Merge pull request #255 from jinjurajan/recon_bank
#1026:Adding currency id in organisation currency view page
2016-07-21 16:57:51 +05:30
jinjurajan
99e9be937a #1026:Adding currency id in organisation currency view page 2016-07-21 15:27:40 +05:30
Rahul Shah
df00e1dc03 Merge pull request #254 from shahrahul1985/glim
glim feature
2016-07-21 14:03:38 +05:30
sachinkulkarni12
4837c93d9f glim feature 2016-07-20 16:53:52 +05:30
Rahul Shah
66f2ec54ca Merge pull request #251 from jinjurajan/client_identifier_validation
#1072:Changing passport  validation to id validation
2016-07-19 19:06:47 +05:30
jinjurajan
62eed68b52 #1072:Changing passport validation to id validation 2016-07-19 18:56:19 +05:30
Rahul Shah
7cf6a1a5a3 Merge pull request #245 from sachinkulkarni12/luhns-alogorithm
adding luhns alogorithm config
2016-07-18 19:27:00 +05:30
Vishwas Babu A J
4d1dceda0a adding luhns alogorithm config 2016-07-18 17:14:33 +05:30
pramod
92488ec304 Merge pull request #239 from jinjurajan/code_value_score
#919:Ui for code_score to insert and view
2016-07-14 17:30:02 +05:30
jinjurajan
04cd2c39f7 #919:Ui for code_score to insert and view 2016-07-14 12:41:57 +05:30
pramod
1ea2adf010 Merge pull request #238 from siddalingk/FEATURE-215
FEATURE_215_transactions_to_support_loan_subsidy
2016-07-14 11:24:36 +05:30
siddalingk
f24f5fcf76 FEATURE_215_transactions_to_support_loan_subsidy 2016-07-14 10:56:02 +05:30
pramod
ffd9b2828d Merge pull request #236 from KoustavMuhuri/developPhakamaniNavigation
1005:Add Client/Loan name for Data Tables' Entry page
2016-07-13 19:49:12 +05:30
pramod
d0316b0c74 Merge pull request #237 from venkatconflux/901
901 : loan write off reason added
2016-07-13 19:47:59 +05:30
venkatconflux
f358b1538b 901 : loan write off reason added 2016-07-13 19:46:02 +05:30
Koustav Muhuri
0804f6317d 1005:Add Client/Loan name for Data Tables' Entry page 2016-07-13 19:35:48 +05:30
pramod
40505a69d2 Merge pull request #232 from KoustavMuhuri/developdatatablesNavigation
1005:Add Client/Loan name for Data Tables' Entry page
2016-07-13 14:14:36 +05:30
pramod
3c52b9da6a Merge pull request #231 from KoustavMuhuri/developLabelNameChange
980:change labels in html pages so that corresponding entity name can…
2016-07-13 14:14:17 +05:30
Koustav Muhuri
05db8f7c40 1005:Add Client/Loan name for Data Tables' Entry page 2016-07-12 16:29:29 +05:30
Koustav Muhuri
a7a67fce7c 980:change labels in html pages so that corresponding entity name can be reflected in custom global translations. 2016-07-12 16:15:23 +05:30
pramod
b1ae7334a0 Merge pull request #223 from satish-conflux/dev_loan_application_details
RM-341 : Dev branch loan application details
2016-07-11 14:45:58 +05:30
satish-conflux
da6e801a4a RM-341 : Dev branch loan application details 2016-07-11 12:16:15 +05:30
Rahul Shah
e1eedc195a Merge pull request #221 from pramodconflux/reconciliation_bug_fix
971 reconciliation search bug fix
2016-07-08 10:26:58 +05:30
aj-ankitjain
43a57d4bb5 971 reconciliation search bug fix 2016-07-07 18:56:49 +05:30
Rahul Shah
f22b2fea9a Merge pull request #214 from pramodconflux/reconciliation
883 payment reconciliation and journa entry automation
2016-07-04 19:04:10 +05:30
aj-ankitjain
037628ffea 883 payment reconciliation and journa entry automation 2016-07-04 18:32:30 +05:30
pramod
c9c0488842 Merge pull request #211 from KoustavMuhuri/loantermissue
138:loan tenure was not changing from default value even after the va…
2016-07-01 12:28:45 +05:30
Koustav Muhuri
115d755fee 138:loan tenure was not changing from default value even after the value was changed in loan application 2016-06-30 23:00:23 +05:30
pramod
e3289390bb Merge pull request #202 from KoustavMuhuri/developduplicateCollectionsheet
97:System is accepting duplicate collection-sheet submission
2016-06-28 16:25:34 +05:30
Koustav Muhuri
08170d472a 97:System is accepting duplicate collection-sheet submission 2016-06-28 13:15:30 +05:30
pramod
6980013dd4 Merge pull request #195 from KoustavMuhuri/loanUiIssue
138:loan tenure was not changing from default value even after the va…
2016-06-28 12:10:34 +05:30
pramod
8811228cff Merge pull request #199 from jinjurajan/resetPassword1
#783:Adding validation error msg for password reset
2016-06-28 11:50:28 +05:30
jinjurajan
9c167841ce #783:Adding validation error msg for password reset 2016-06-27 18:25:09 +05:30
Koustav Muhuri
a52e5cab9d 138:loan tenure was not changing from default value even after the value was changed in loan application 2016-06-24 18:30:07 +05:30
pramod
4a1f10d9cc Merge pull request #194 from pramodn02/847
847 : added div close
2016-06-24 18:26:53 +05:30
pramod
9592b6d975 847 : added div close 2016-06-24 18:26:13 +05:30
pramod
41b0bd9114 Merge pull request #185 from KoustavMuhuri/searchcreateGroup
700: Client Search on create group page(finflux devlop branch)
2016-06-21 16:11:18 +05:30
Rahul Shah
8c0750faff Merge pull request #186 from pramodn02/792
792 :UI fixes related to savings interest posting
2016-06-17 18:05:24 +05:30
pramod
d45c7f0b63 792 :UI fixes related to savings interest posting 2016-06-17 17:20:31 +05:30
Koustav Muhuri
459bd585bc 700: Client Search on create group page(finflux devlop branch) 2016-06-17 16:03:29 +05:30
Rahul Shah
b9d2b9b789 Merge pull request #184 from AvinashKumarG/finereact_162
fineract_162 earn interest bot not posted
2016-06-17 13:31:15 +05:30
AvinashKumarG
afbc90c6e2 fineract_162 earn interest bot not posted 2016-06-17 12:42:56 +05:30
pramod
62745cf747 Merge pull request #183 from KoustavMuhuri/indifi
168: interest posting on specified date
2016-06-16 18:10:35 +05:30
pramod
4a97e4ef0f Merge pull request #182 from venkatconflux/recurring
#773 adding recurringMoratoriumOnPrincipalPeriods in loanProduct
2016-06-16 18:08:53 +05:30
Koustav Muhuri
a7056ad91a 168: interest posting on specified date 2016-06-16 17:58:31 +05:30
venkatconflux
509241fac3 #773 adding recurringMoratoriumOnPrincipalPeriods in loanProduct 2016-06-16 16:36:37 +05:30
pramod
f99158f655 Merge pull request #110 from sachinkulkarni12/291
291 : defaulting the payment type when making repayment through colle…
2016-06-16 14:32:22 +05:30
pramod
7357ebeac5 Merge pull request #172 from jinjurajan/loanpurposeDropDown
709: Showing loanpurpose drop down in newloanaccount page
2016-06-16 12:42:24 +05:30
pramod
944c8a650c Merge pull request #175 from venkatconflux/FINERACT#60
FINERACT-60 : UX changes for adding new field with name allow compoun…
2016-06-16 12:37:23 +05:30
venkatconflux
1e367e5dc4 FINERACT-60 : UX changes for adding new field with name allow compounding on EOD and last day of month feature 2016-06-16 00:38:12 +05:30
pramod
4a50a5dd84 Merge pull request #173 from jinjurajan/reportDatePicker
708:extending datepicker max range for spesific reports
2016-06-15 18:17:20 +05:30
jinjurajan
ffc9ae7d9f 708:extending datepicker max range for spesific reports 2016-06-13 22:52:17 +05:30
jinjurajan
ea48c13da2 709: Showing loanpurpose drop down in newloanaccount page 2016-06-13 22:41:23 +05:30
pramod
34bc20fce6 Merge pull request #163 from KoustavMuhuri/issue
issue fixed Redmine Issue 363
2016-06-07 16:49:19 +05:30
Koustav Muhuri
7e22a88433 issue fixed 2016-06-07 15:55:53 +05:30
pramod
3ad2b66bab Merge pull request #129 from jinjurajan/reportparmmultiselect
multiselection for report parameters
2016-06-02 16:03:53 +05:30
pramod
1b75d2b81c Merge pull request #152 from pramodconflux/sms_and_sms_campaign_functionality
411 sms functionality
2016-05-31 17:42:32 +05:30
aj-ankitjain
ab5fdcf5e3 411 sms functionality 2016-05-31 17:38:19 +05:30
pramod
724de99f21 Merge pull request #151 from jinjurajan/disbursescreen
#551:Hinding Next repayment date and Reschedule next repayment to in disburse screen
2016-05-31 12:12:55 +05:30
jinjurajan
6914ab28e4 #551:Hinding Next repayment date and Reschedule next repayment to in 2016-05-31 12:01:39 +05:30
pramod
3395b83e16 Merge pull request #150 from jinjurajan/finfluxversion
#233:Adding FINFLUX Release version in all pages
2016-05-31 11:36:01 +05:30
jinjurajan
cccb1a6612 #233:Adding FINFLUX Release version in all pages 2016-05-31 10:47:20 +05:30
pramod
cb787862da Merge pull request #140 from KoustavMuhuri/journalentrieslink
journal entry Redmine Issue 363
2016-05-30 16:00:24 +05:30
pramod
41ab9adbed Merge pull request #143 from jinjurajan/clientidentifier
add Client identifier page label change
2016-05-30 15:49:30 +05:30
jinjurajan
7bee35957c add Client identifier page label change 2016-05-30 15:30:48 +05:30
Koustav Muhuri
4a07ba7b80 journal entry 2016-05-26 12:37:28 +05:30
AvinashKumarG
88cb2ae0d1 160_processing_bar 2016-05-23 18:04:51 +05:30
Vishwas Babu A J
0ac20d5200 merging latest community release 16.05.01 2016-05-19 02:18:59 -07:00
jinjurajan
a145da8536 ultiselection for report parameters 2016-05-12 17:12:10 +05:30
Nayan Ambali
e5df43e761 Merge pull request #112 from KoustavMuhuri/checkduplicateinset
Duplicate Insert
2016-04-26 19:30:54 +05:30
ashok
8f71107b8c Merge pull request #109 from jinjurajan/viewClientIncorporationDate
Date of birth to Incorporation date change in client view web page
2016-04-25 11:40:00 +05:30
Koustav Muhuri
7984984b54 Duplicate Insert 2016-04-22 15:48:19 +05:30
sachinkulkarni12
e3ad2bbecc 291 : defaulting the payment type when making repayment through collection sheet 2016-04-22 13:44:06 +05:30
jinjurajan
e5da46fecb Date of birth to Incorporation date change in client view web page 2016-04-21 14:26:53 +05:30
Nayan Ambali
2a9586d95f Merge pull request #105 from AvinashKumarG/fund_mapping
loading bar
2016-04-18 19:31:20 +05:30
AvinashKumarG
d2bd8f8d11 loading bar 2016-04-18 19:20:30 +05:30
Nayan Ambali
18bd2cd73b Merge pull request #100 from AvinashKumarG/auditlog
audit logs
2016-04-14 12:00:04 +05:30
AvinashKumarG
d12ea9006f audit logs 2016-04-14 10:25:06 +05:30
Sachin Kulkarni
00f7e441ee Merge pull request #98 from sachinkulkarni12/133New
133:chart of accounts fix
2016-04-11 15:53:24 +05:30
sachinkulkarni12
9547d4d9b0 133:chart ofaccounts fix 2016-04-11 15:51:10 +05:30
Nayan Ambali
a65dbd129a Merge pull request #76 from sachinkulkarni12/CC-138
CC-138: hide edit of tranches in loan tranche details tab before disbursal.
2016-04-11 15:23:35 +05:30
Satish
463aee2aad Performance fixed for view client page (#94) 2016-04-11 14:28:58 +05:30
Vishwas Babu A J
378eed6bf8 Merge pull request #86 from jinjurajan/passportNumberValidationRSA
passport number validation for country RSA
2016-04-07 13:30:11 +05:30
Nayan Ambali
1b89b81d23 Merge pull request #88 from sachinkulkarni12/CC-41New
collection sheet alignment fix
2016-04-07 09:50:33 +05:30
sachinkulkarni12
054218e5fe collection sheet alignment fix 2016-04-06 17:26:28 +05:30
Nayan Ambali
adef33df48 Merge pull request #84 from KoustavMuhuri/newCaptureTime
Capturing Time
2016-04-06 11:27:06 +05:30
jinjurajan
640279afb9 passport number validation for country RSA 2016-04-05 16:02:05 +05:30
Vishwas Babu A J
7e5e7fa76d Merge pull request #81 from jinjurajan/passportNumberValidation
Passport Number validation From UI
2016-04-05 10:53:02 +05:30
Nayan Ambali
c5d9c53033 Merge pull request #85 from confluxtoo/topnavlogo
Replced top nave logo with smaller logo
2016-04-04 20:03:19 +05:30
Nayan Ambali
ca43746a4e Replced top nave logo with smaller logo 2016-04-04 20:01:45 +05:30
Nayan Ambali
70381097ff Merge pull request #77 from bharathc27/cc-135
cc-135
2016-04-04 17:38:04 +05:30
Koustav Muhuri
0f231c7243 Capturing Time 2016-04-04 11:51:38 +05:30
jinjurajan
6c225eb1cc Passport Number validation From UI 2016-04-01 18:02:11 +05:30
Nayan Ambali
933d9bd832 Merge pull request #79 from confluxtoo/loginPage
Basic FINFLUX branding related changes
2016-03-29 19:42:26 +05:30
Nayan Ambali
295289ac99 Basic FINFLUX branding related changes 2016-03-29 19:40:24 +05:30
bharathc27
6f92c831ac cc-135 2016-03-25 10:10:36 +05:30
sachinkulkarni12
0cf7c7d0c0 CC-138: hide edit of tranches in loan tranche details tab before disbursal 2016-03-24 19:11:46 +05:30
Nayan Ambali
e1db426d53 Merge pull request #69 from sachinkulkarni12/tenantspecificconfig
loading tenant specific config file
2016-03-18 18:34:18 +05:30
sachinkulkarni12
89b5527170 loading tenant specific config file 2016-03-18 18:24:37 +05:30
Vishwas Babu A J
172749a393 Merge pull request #42 from jinjurajan/currencyindianStandard
Displaying Currency in Indian Standard
2016-03-15 16:47:15 +05:30
Vishwas Babu A J
c36f1bae17 Merge pull request #66 from sachinkulkarni12/viewreportfix
fix for view report
2016-03-15 16:45:55 +05:30
sachinkulkarni12
4505399d77 fix for view report 2016-03-15 16:38:35 +05:30
Vishwas Babu A J
fd064abdf9 resolving merge commit with latest community app 2016-03-15 02:05:22 -07:00
Vishwas Babu A J
a35b3c7bcb Merge pull request #65 from sachinkulkarni12/readonlyfeild
readonlyfeild for nominal interest arte and loan purpose in create and edit loan application
2016-03-14 13:59:19 +05:30
sachinkulkarni12
27c9a9d421 readonlyfeild for nominal interest arte and loan purpose in create and edit loan application 2016-03-14 13:38:43 +05:30
Vishwas Babu A J
e80af901a7 fixing issues with grunt prod and angular transalate finflus 2016-03-14 00:13:36 -07:00
Vishwas Babu A J
6c7a582e61 Merge pull request #63 from sachinkulkarni12/synwithmeeting
defaulting sync with disbursement to false
2016-03-11 11:07:32 +05:30
sachinkulkarni12
b7f7820915 defaulting sync with disbursement to false 2016-03-11 11:04:27 +05:30
Vishwas Babu A J
400921fb9b Merge pull request #56 from sachinkulkarni12/UIfix
fix for center name read only
2016-03-11 10:01:31 +05:30
Vishwas Babu A J
36d7745a5f Merge pull request #57 from sachinkulkarni12/hideattachmeeting
hide attach meeting option in view group page
2016-03-11 10:00:27 +05:30
Vishwas Babu A J
64809ab14c Merge pull request #61 from AvinashKumarG/translate_label
Loads the tenant specific lables
2016-03-09 15:38:56 +05:30
AvinashKumarG
73e56cdcec Loads the tenant specific lables 2016-03-09 15:10:19 +05:30
Vishwas Babu A J
9306ab927d Merge pull request #58 from pramodconflux/collateral_UI_fixes
collateral issue fixes
2016-03-09 09:33:35 +05:30
aj-ankitjain
fa1bf07398 collateral issue fixes 2016-03-08 18:11:38 +05:30
sachinkulkarni12
b80dfc023a hide attach meeting option in view group page 2016-03-07 18:32:43 +05:30
sachinkulkarni12
27f6fba47f fix for center name read only 2016-03-07 18:14:42 +05:30
Vishwas Babu A J
18489a97d7 Merge pull request #54 from sachinkulkarni12/issuefix
checking response object undefined
2016-03-06 04:54:30 +05:30
sachinkulkarni12
0a1b58dbf4 checking response object undefined 2016-03-05 23:49:46 +05:30
Vishwas Babu A J
eb59b42d22 Merge pull request #53 from sachinkulkarni12/fundIddefault
defaulting the fund ID to 45
2016-03-05 14:05:12 +05:30
sachinkulkarni12
cd54327b53 defaulting the fund ID to 45 2016-03-05 14:00:11 +05:30
Vishwas Babu A J
083f912cc6 Merge pull request #52 from pramodconflux/develop
colletral UI
2016-03-05 10:49:09 +05:30
aj-ankitjain
5c1d3c6895 colletral UI 2016-03-04 19:38:18 +05:30
Vishwas Babu A J
ed2df6819e Merge pull request #51 from sachinkulkarni12/report
passing loanid to calculate Loan Schedule API
2016-03-04 18:10:52 +05:30
sachinkulkarni12
365d82168b passing loanid to calculate Loan Schedule API 2016-03-04 17:34:17 +05:30
Vishwas Babu A J
23f47d9fc8 undo last tranche 2016-03-04 02:30:11 -08:00
Vishwas Babu A J
d2948fad69 Merge pull request #31 from sachinkulkarni12/CC-36
Loan repayment rescheduling while disbursement
2016-03-04 15:56:52 +05:30
Vishwas Babu A J
717f46a437 Merge pull request #29 from sachinkulkarni12/CC-42
CC-42:adding new transaction date in collection sheet
2016-03-04 15:53:38 +05:30
Vishwas Babu A J
5a4e63f60b Merge pull request #35 from sachinkulkarni12/CC-63
CC-63 Loan Officer should be defaulted to the staff
2016-03-04 15:52:39 +05:30
Vishwas Babu A J
6c86045ff6 Merge pull request #47 from sachinkulkarni12/CC-45New
DataTable forword lookup enhancement
2016-03-04 15:50:53 +05:30
Vishwas Babu A J
112f67d962 Merge pull request #48 from sachinkulkarni12/CC-39-New
auto populate interest charged from field in modify application
2016-03-04 15:49:46 +05:30
Vishwas Babu A J
3257499197 Merge pull request #46 from sachinkulkarni12/disablingInterestChargeFrom
read only field for interest charged from
2016-03-04 15:48:51 +05:30
Vishwas Babu A J
1216f5ca58 edit center: center name to be optionally readonly merged 2016-03-04 02:17:41 -08:00
Vishwas Babu A J
002fab72bc Merge pull request #32 from sachinkulkarni12/CC-58-New
adding organisation start date in global config
2016-03-04 15:37:29 +05:30
Vishwas Babu A J
b71c36c093 Merge branch 'CC-51' of https://github.com/sachinkulkarni12/conflux-web into develop 2016-03-04 02:04:02 -08:00
Vishwas Babu A J
069ccf0a8d view loan schedule 2016-03-04 01:53:24 -08:00
Vishwas Babu A J
4cbd989a50 merging UI config change 2016-03-04 01:46:44 -08:00
Vishwas Babu A J
ac3b05f90d merge village related changes 2016-03-04 00:12:14 -08:00
Vishwas Babu A J
27507fc9aa removing unwanted injections from edit meeting 2016-03-04 00:06:44 -08:00
Vishwas Babu A J
4fc22ca561 merging label changes 2016-03-04 00:02:50 -08:00
Vishwas Babu A J
01fb0c690e Merge pull request #16 from sachinkulkarni12/CC-44
CC-44:Calender UI issue
2016-03-04 13:25:41 +05:30
sachinkulkarni12
8b770379b6 making read only center name field 2016-03-04 11:56:10 +05:30
sachinkulkarni12
cbc2623347 auto populate interest charged from field in modify application 2016-03-04 10:46:12 +05:30
sachinkulkarni12
3d0082f2f3 read only field for interest charged from 2016-03-03 22:48:22 +05:30
Sachin Kulkarni
e31ab0ab39 Update GlobalConfigurationController.js 2016-03-03 22:23:50 +05:30
jinjurajan
29e325762c Displaying Currency in Indian Standard 2016-03-03 12:33:21 +05:30
Vishwas Babu A J
ce45d3ec30 merging with latest community code 2016-02-26 10:42:49 -08:00
Vishwas Babu A J
9a38ee2ece bug fixes for dashboard 2016-02-07 19:07:32 -08:00
Vishwas Babu A J
66578294d3 fix alignment issues 2016-02-02 16:34:50 -08:00
Vishwas Babu A J
1632a095ee Merge pull request #38 from pramodconflux/report_to_dashboard_migration
report to dashboard migration
2016-02-03 05:40:21 +05:30
aj-ankitjain
4493c2a52f report to dashboard migration 2016-01-29 18:06:27 +05:30
Vishwas Babu A J
834498a7b9 Merge pull request #36 from jinjurajan/JLGLoanApplicationClientExternalid
adding externalClientId to the JLGLoan Application
2016-01-28 04:59:12 -08:00
jinjurajan
70d9fdd13a adding externalClientId to the JLGLoan Application 2016-01-28 18:22:00 +05:30
sachinkulkarni12
e59affe99d CC-63 Loan Officer should be defaulted to the staff 2016-01-28 17:47:01 +05:30
sachinkulkarni12
794ee8e526 adding organisation start date in global config 2016-01-28 11:20:32 +05:30
sachinkulkarni12
16fe3268df DataTable forword lookup enhancement 2016-01-21 11:11:00 +05:30
sachinkulkarni12
c558a93ff7 Loan repayment rescheduling while disbursement 2016-01-14 15:51:42 +05:30
sachinkulkarni12
44e78063e7 CC-32:undo last tranche 2015-12-16 11:23:21 +05:30
Vishwas Babu A J
e0d9da0585 remove warning related to insecure content 2015-12-14 22:11:26 -08:00
Vishwas Babu A J
cc373cddd7 cleaning up home page and grunt prod task 2015-12-14 21:59:27 -08:00
sachinkulkarni12
71b843ec59 CC-42:adding new transaction date in collection sheet 2015-12-14 16:42:43 +05:30
sachinkulkarni12
7ce804a42d view repayment schedule report feature 2015-12-03 13:18:24 +05:30
sachinkulkarni12
52098e66a2 CC-51:Hiding of sync with disbursement meeting in new loan application 2015-12-01 15:31:53 +05:30
sachinkulkarni12
06450c8c36 CC-31:Auto population of center name based on village 2015-12-01 10:53:28 +05:30
sachinkulkarni12
98f26ceb1e village feature 2015-11-30 16:05:28 +05:30
Vishwas Babu A J
09a263e730 first cut at new layout, home page and graphs 2015-11-25 02:23:22 -08:00
Vishwas Babu A J
3f1b523de6 minor fixes 2015-11-24 13:08:05 -08:00
Vishwas Babu A J
4a7dd3717b Merge pull request #18 from sachinkulkarni12/CC-39
CC-39:Auto populating Interest charged from field in new loan application
2015-11-24 13:06:29 -08:00
Vishwas Babu A J
eeccb82b6d fix typos and merge changes to create groups and centers 2015-11-24 13:02:54 -08:00
Vishwas Babu A J
7617ee6995 Merge pull request #20 from sachinkulkarni12/CC-40
CC-40:Defaulting the payment Type
2015-11-24 12:50:33 -08:00
sachinkulkarni12
344317d8fc CC-54:Create Client Enhancement under groups 2015-11-24 16:55:17 +05:30
sachinkulkarni12
f1211f1b38 CC-40:Defaulting the payment Type 2015-11-24 16:15:48 +05:30
sachinkulkarni12
fead47f7fe CC-39:Auto populating Interest charged from field in new loan application 2015-11-24 12:03:28 +05:30
sachinkulkarni12
d678c2d085 CC-49:Calendar Meeting date label changes 2015-11-24 10:40:52 +05:30
Vishwas Babu A J
dc62e90bf5 Merge pull request #12 from sachinkulkarni12/CC-34
Staff should be mandatory while creating center
2015-11-23 20:31:28 -08:00
Vishwas Babu A J
3aa9549dda Merge pull request #14 from sachinkulkarni12/CC-33
Edit Tranche Feature for the loan with 100 and 300 state also.
2015-11-23 13:28:46 -08:00
sachinkulkarni12
fbe461f696 CC-44:Calender UI issue 2015-11-23 17:43:45 +05:30
sachinkulkarni12
835b7ae429 Edit Tranche Feature for the loan with 100 and 300 state also. 2015-11-23 16:55:51 +05:30
sachinkulkarni12
c27d51a7ca Staff should be mandatory while creating center 2015-11-23 15:05:16 +05:30
Vishwas Babu A J
3d14b53c1f fixing broken filters on loan transactions 2015-11-14 13:02:48 -08:00
Vishwas Babu A J
566b0f0772 Cleaning up hierarchical navigation 2015-11-14 07:31:37 -08:00
Vishwas Babu A J
1225b65f75 Merge branch 'master' of https://github.com/openMF/community-app into develop 2015-11-14 02:59:26 -08:00
Vishwas Babu A J
02b19a2eb1 Merge pull request #6 from AvinashKumarG/cc-01modifications
loginUI+homeUI+leftNavUI
2015-10-29 15:16:11 +05:30
AvinashKumarG
4fad475ff2 loginUI+homeUI+leftNavUI 2015-09-29 17:34:04 +05:30
Vishwas Babu A J
7db3e455a1 correcting issues with labels and missing tooltips 2015-09-24 21:41:15 +05:30
Vishwas Babu A J
36dd78fec7 Merge branch 'develop' of https://github.com/openMF/community-app into develop-community 2015-09-24 14:29:35 +05:30
Vishwas Babu A J
6d844b2f99 fixing flickering dropdowns on firefox 2015-09-14 00:58:58 +05:30
Vishwas Babu A J
82f43ad960 Merge branch 'master' into develop 2015-09-11 21:28:36 +05:30
Vishwas Babu A J
37cf1270aa deleting gradle files, test cases and unused images 2015-09-11 21:27:41 +05:30
549 changed files with 42160 additions and 5186 deletions

0
0 Normal file
View File

View File

@ -11,7 +11,7 @@ module.exports = function(grunt) {
// configurable paths
app: require('./bower.json').appPath || 'app',
dist: 'dist',
target: 'community-app',
target: 'conflux-web',
test: 'test'
},
watch: {
@ -45,7 +45,7 @@ module.exports = function(grunt) {
port: 9000,
hostname: 'localhost',
livereload: 35729,
open:'http://<%= connect.options.hostname %>:<%= connect.options.port %>?baseApiUrl=https://demo.openmf.org'
open:'http://<%= connect.options.hostname %>:<%= connect.options.port %>?baseApiUrl=https://default.confluxcloud.com'
},
livereload: {
options: {
@ -144,6 +144,7 @@ module.exports = function(grunt) {
'scripts/*.js',
'scripts/services/*.js',
'scripts/modules/*.js',
'scripts/config/*.json',
'!scripts/routes.js',
'!scripts/initialTasks.js',
'!scripts/webstorage-configuration.js',
@ -184,7 +185,8 @@ module.exports = function(grunt) {
src: [
'**/*min.js', 'ckeditor/**', 'require-css/*.js', 'require-less/*.js',
'!jasmine/**', '!requirejs/**/**', 'requirejs/require.js', '!underscore/**',
'angular-utils-pagination/dirPagination.tpl.html'
'angular-utils-pagination/dirPagination.tpl.html' , 'angular-translate-finflux/**',
'angular-loading-bar/**'
]
}
]

View File

@ -114,6 +114,11 @@ grunt serve
Just open test/SpecRunner.html in the browser.
## Getting Started doc
https://docs.google.com/document/d/1oXQ2mNojyDFkY_x4RBRPaqS-xhpnDE9coQnbmI3Pobw/edit#heading=h.vhgp8hu9moqn
## Contribution guidelines
Please read the <a href="https://github.com/openMF/community-app/blob/master/Contributing.md" >contribution guidelines</a>

View File

@ -2,7 +2,7 @@
// To enable the configuration create a folder called config under app/scripts and copy the UIconfig.json file under app/scripts/config
//Any of the values set to true the respected fields are hidden and the values set to false the fields are visible in the respected page.
{
"enableUIDisplayConfiguration": true,
"enableUIDisplayConfiguration": false,
"uiDisplayConfigurations": {
"loanAccount": {
"isHiddenField": {
@ -32,6 +32,11 @@
"isReadOnlyField": {
"loanTermFrequencyType": true
}
},
"clientIdentifier":{
"identitiesMatchLuhnsAlgorithm": {
"passportValidation":true
}
}
}
}

View File

@ -0,0 +1,99 @@
'use strict';
angular.module("ngLocale", [], ["$provide", function($provide) {
var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": [
"AM",
"PM"
],
"DAY": [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"MONTH": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"SHORTDAY": [
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat"
],
"SHORTMONTH": [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
],
"fullDate": "EEEE, MMMM d, y",
"longDate": "MMMM d, y",
"medium": "MMM d, y h:mm:ss a",
"mediumDate": "MMM d, y",
"mediumTime": "h:mm:ss a",
"short": "M/d/yy h:mm a",
"shortDate": "M/d/yy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "$",
"DECIMAL_SEP": ".",
"GROUP_SEP": ",",
"PATTERNS": [
{
"gSize": 2,
"lgSize": 3,
"macFrac": 0,
"maxFrac": 3,
"minFrac": 0,
"minInt": 1,
"negPre": "-",
"negSuf": "",
"posPre": "",
"posSuf": ""
},
{
"gSize": 2,
"lgSize": 3,
"macFrac": 0,
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "(\u00a4",
"negSuf": ")",
"posPre": "\u00a4",
"posSuf": ""
}
]
},
"id": "en_IN",
"pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
});
}]);

Binary file not shown.

View File

@ -0,0 +1,288 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="400" />
<glyph unicode=" " />
<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
<glyph unicode="&#x2000;" horiz-adv-x="650" />
<glyph unicode="&#x2001;" horiz-adv-x="1300" />
<glyph unicode="&#x2002;" horiz-adv-x="650" />
<glyph unicode="&#x2003;" horiz-adv-x="1300" />
<glyph unicode="&#x2004;" horiz-adv-x="433" />
<glyph unicode="&#x2005;" horiz-adv-x="325" />
<glyph unicode="&#x2006;" horiz-adv-x="216" />
<glyph unicode="&#x2007;" horiz-adv-x="216" />
<glyph unicode="&#x2008;" horiz-adv-x="162" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="325" />
<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,5 @@
{
"#These are the tenant specific lables and these lables will override the default lables": "....",
"label.input.username": "login name"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -12,11 +12,14 @@
"Fgonzalez",
"DaynaHarp",
"Yllelder",
"YoViajo"
"YoViajo",
"Codynguyen1116",
"Lemondoge",
"Rubentl134"
]
},
"label.heading.name": "Nombre",
"label.heading.accnum": "N.º de cuenta",
"label.heading.accnum": "Nº de cuenta",
"label.heading.staff": "Personal",
"label.heading.office": "Oficina",
"label.heading.delete": "Eliminar",
@ -128,6 +131,7 @@
"label.input.defaultfloatinginterestrate": "Tasa de Interés Predeterminada",
"label.input.maxfloatinginterestrate": "Tasa De Interés Máxima",
"label.input.differentialrate": "Tasa de Interés Diferencial",
"label.heading.dividends": "dividendos",
"label.menu.selectloanofficer": "Seleccione personal",
"label.menu.selectone": "Seleccione uno",
"label.menu.constitution": "Seleccione Constitución",
@ -242,6 +246,7 @@
"label.button.addjournalentry": "Añadir entradas de diario",
"label.button.validate": "Validar",
"label.button.pattern": "Patrón",
"label.button.dividends": "Dividendos",
"label.uniquelyidentifiedwithid": "Exclusivamente identificado con Id",
"label.belongsto": "Pertenece a",
"label.memberof": "Miembro de",
@ -528,7 +533,7 @@
"label.input.searchByNameAccNo": "Buscar por nombre/móvil#/cliente#/ID externo/identificador#",
"label.input.selectclientimage": "Seleccionar imagen del cliente",
"label.input.selectfile": "Seleccionar archivo",
"label.input.documenttype": "Tipo de documento",
"label.input.documenttype": "Estado",
"label.input.uniqueidentification": "N.º identificador único",
"label.input.mobilenumber": "Número de teléfono móvil",
"label.input.client.activationdate": "Fecha de activación",
@ -601,7 +606,7 @@
"error.msg.client.not.active.exception": "El Cliente con el ID `{{params[0].value}}` no está activo.",
"validation.msg.clientIdentifier.documentKey.cannot.be.blank": "El n.º de identificación es obligatorio.",
"validation.msg.clientIdentifier.documentTypeId.cannot.be.blank": "El tipo de documento de identidad es obligatorio.",
"error.msg.clientIdentifier.type.duplicate": "El tipo de documento de identidad del cliente `{{params[0].value}}` ya existe para este cliente.",
"error.msg.clientIdentifier.type.duplicate": "El tipo de documento de identidad del cliente activo `{{params[0].value}}` ya existe para este cliente.",
"error.msg.clientIdentifier.identityKey.duplicate": "El cliente `{{params[0].value}}` bajo la oficina {{params[1].value}} ya tiene un {{params[2].value}} con clave única {{params[3].value}}.",
"error.msg.image.type.upload": "Se permiten sólo archivos de tipo GIF, PNG o JPG.",
"validation.msg.clientImage.cannot.be.blank": "Por favor, seleccione una imagen para subir.",
@ -924,6 +929,14 @@
"accountType.expense": "Gastos",
"accountUsage.detail": "Detalle",
"accountUsage.header": "Encabezado",
"ASSET": "Activos",
"LIABILITY": "Pasivos",
"EQUITY": "Acciones",
"INCOME": "Ingresos",
"EXPENSE": "Gastos",
"DETAIL": "Detalle",
"HEADER": "Encabezado",
"Accounting":"Contabilidad",
"validation.msg.accounttransfer.fromOfficeId.cannot.be.blank": "De la oficina es obligatorio.",
"validation.msg.accounttransfer.fromClientId.cannot.be.blank": "Del cliente es obligatorio.",
"validation.msg.accounttransfer.fromAccountId.cannot.be.blank": "De la cuenta de ahorros es obligatorio.",
@ -1625,6 +1638,7 @@
"label.heading.enforceMinRequiredBalance": "Aplicar saldo mínimo",
"label.heading.minRequiredBalance": "Saldo mínimo",
"label.heading.interest.recalulation.settings": "Configuración de cálculo de interés",
"label.heading.closeshareaccount": "Cierre De La Cuenta Compartida",
"label.anchor.addsavingcharges": "Añadir cargos de ahorro",
"label.anchor.viewsavingaccount": "Ver cuenta de ahorro",
"label.anchor.editsavingapplication": "Editar solicitud de ahorro",
@ -1695,6 +1709,7 @@
"label.heading.minbalanceforinterestcalculation": "Saldo requerido para el cálculo de intereses",
"label.input.enforceMinRequiredBalance": "Aplicar saldo mínimo",
"label.input.minRequiredBalance": "Saldo mínimo",
"label.input.dividendperiodstartdate": "Dividendo Fecha De Inicio Del Período",
"label.button.undo": "Deshacer",
"label.button.modifyapplication": "Modificar solicitud",
"label.button.withdrawnbyclient": "Retirado por el cliente",
@ -1725,6 +1740,8 @@
"label.totalinterestearned": "Intereses devengados",
"label.totalinterestposted": "Interés aplicado",
"label.totaloverdraftinterestderived": "Interés por sobregiro",
"label.interestEarnedNotPosted": "Interés ganado no publicado",
"label.overdraftInterestNotPosted": "Sobregiro de interés no publicado",
"label.interestrate": "Tasa de interés nominal",
"label.interestcompoundingperiod": "Período de capitalización de intereses",
"label.interestpostingperiod": "Periodo de contabilización de intereses",
@ -1757,6 +1774,7 @@
"label.account.recurring.deposit.amount": "Importe de depósito recurrente",
"label.account.deposit.frequency": "Frecuencia de depósito",
"label.account.closed.on.date": "Cerrado en fecha",
"label.heading.interest.calculation.date": "Fecha de recálculo de intereses",
"label.tooltip.productname": "Un identificador único para el producto de ahorro",
"label.tooltip.shortname": "Un identificador único para el producto de ahorro",
"label.tooltip.description": "Proporciona información adicional sobre el propósito y las características del producto ahorro",
@ -1765,6 +1783,8 @@
"label.tooltip.multiplesof": "La cantidad a ser redondeado apagado (ejemplo: 100 redondea a 200, 300, 400, etc.)",
"label.tooltip.nominalannualinterest": "La tasa de interés predeterminada cuando crea cuentas de ahorro",
"label.tooltip.interestcompoundingperiod": "El periodo en qué índice de interés es compounded",
"label.tooltip.totalshares": "Número Total de acciones que un producto que está ofreciendo",
"label.tooltip.nominalprice": "Unidad de/Precio Nominal de cada acción",
"label.tooltip.interestpostingperiod": "El periodo en qué índice de interés es posted o abonado a una cuenta de ahorro",
"label.tooltip.interestcalculatedusing": "El método utilizado para calcular los intereses",
"label.tooltip.minimumopeningbalance": "Pone la cantidad de depósito mínima requirió para abrir una cuenta de ahorro de este tipo de producto del ahorro",
@ -2052,6 +2072,7 @@
"label.anchor.editrole": "Editar función",
"label.anchor.standinginstruction.history": "Historial de instrucciones",
"label.anchor.fund.mapping": "Mapeo de fondo",
"label.anchor.edittaxgroup": "Editar Grupo De Impuestos",
"label.input.assignmentdate": "Fecha de asignación",
"label.input.fromloanofficer": "De agente de préstamo",
"label.input.toloanofficer": "A agente de préstamo",
@ -2107,6 +2128,7 @@
"error.msg.holiday.repayments.rescheduled.date.should.not.fall.on.non.working.day": "Los reembolsos reprogramados hasta la fecha no deben caer en días no laborables.",
"validation.msg.holiday.offices.cannot.be.blank": "Seleccione una oficina",
"error.msg.currency.currencyCode.inUse": "La moneda que intentas eliminar está en uso",
"validation.msg.tax.group.total.percentage.is.greater.than.max": "Grupo porcentaje total debe ser menor de 100 en cualquier punto del tiempo",
"label.heading.text": "Texto",
"label.heading.addcode": "Añadir código",
"label.heading.codename": "Nombre del código",
@ -2290,6 +2312,8 @@
"receivableFeeAccountId": "Cuenta por cobrar cargos",
"transactionProcessingStrategyId": "Estrategia de procesamiento de transacciones",
"receivableInterestAccountId": "Cuenta de intereses por cobrar",
"clientIdentifierStatusType.inactive": "Inactivo",
"clientIdentifierStatusType.active": "Activo",
"label.button.advancedoptions": "Opciones avanzadas",
"label.button.createtemplate": "Crear plantilla",
"label.button.addcode": "Añadir código",
@ -2407,7 +2431,7 @@
"label.tooltip.global.office-specific-products-enabled": "Determinar si oficina los productos concretos están habilitados.",
"label.tooltip.global.restrict-products-to-user-office": "Este término está esperando una definición profesional.",
"label.tooltip.global.meetings-mandatory-for-jlg-loans": "Este término está esperando una definición profesional.",
"label.tooltip.global.rounding-mode": "Valores: 0, 1 ABAJO, 2 - TECHO, 3 - PISO 4 - HALF_UP, 5 - HALF_DOWN, 6 - HALF_EVEN",
"label.tooltip.global.rounding-mode": "Valores: 0 - ARRIBA, 1 - ABAJO, 2 - TECHO, 3 - PISO, 4 - MITAD_ARRIBA, 5 - MITAD_ABAJO, 6 - MITAD_PAR",
"label.heading.addproductmix": "Añadir mezcla de producto",
"label.heading.editproductmix": "Editar mezcla de producto",
"label.heading.productmix": "Mezcla de producto",
@ -2528,6 +2552,7 @@
"label.anchor.createloanproduct": "Crear productos de préstamo",
"label.anchor.createcharge": "Crear cargo",
"label.anchor.savingproducts": "Productos de ahorro",
"label.anchor.dividends": "Dividendos",
"label.anchor.createsavingproduct": "Crear producto de ahorro",
"label.anchor.editcharge": "Editar cargo",
"label.anchor.editloanproduct": "Editar producto de préstamo",
@ -3424,5 +3449,83 @@
"label.heading.Survey": "Encuesta",
"label.anchor.survey": "Encuesta",
"label.surveyName": "Nombre de la encuesta",
"label.selectsurvey": "Selecciona una encuesta"
"label.selectsurvey": "Selecciona una encuesta",
"Loan Transaction Receipt": "Recibo de Transacción de Préstamo",
"Savings Transaction Receipt": "Recibo de Transacción de Ahorro",
"Staff Assignment History": "La historia de asignación de personal",
"Balance Sheet": "Hoja de balance",
"GeneralLedgerReport": "Informe General Ledger",
"Savings Accounts Dormancy Report":"Las cuentas de ahorro Informe de latencia",
"Income Statement": "Cuenta de resultados",
"Progress Report": "Informe de progreso",
"Trial Balance": "Balance de comprobación",
"Client Listing": "Listado de cliente",
"Client Listing(Pentaho)": "Lista de clientes (Pentaho)",
"Client Loans Listing": "Préstamos de venta del cliente",
"Client Loans Listing(Pentaho)": "Préstamos lista de clientes (Pentaho)",
"Funds Disbursed Between Dates Summary": "Los fondos desembolsados entre fechas Resumen",
"Funds Disbursed Between Dates Summary by Office": "Los fondos desembolsados entre fechas Resumen de la Oficina",
"Funds Disbursed Between Dates Summary by Office(Pentaho)": "Los fondos desembolsados entre fechas Resumen de la Oficina (Pentaho)",
"Funds Disbursed Between Dates Summary(Pentaho)": "Los fondos desembolsados entre fechas Resumen (Pentaho)",
"Active Loans - Details": "Préstamos activos - detalles",
"Active Loans - Details(Pentaho)": "Préstamos Activos - Detalles (Pentaho)",
"Active Loans - Summary": "Préstamos activos - Resumen",
"Active Loans - Summary(Pentaho)": "Préstamos activos - Resumen (Pentaho)",
"Active Loans by Disbursal Period": "Préstamos activos por período de desembolso",
"Active Loans by Disbursal Period(Pentaho)": "Préstamos activos por desembolso Período (Pentaho)",
"Active Loans in last installment": "Préstamos activos en la última entrega",
"Active Loans in last installment Summary": "Préstamos activos en la última entrega Resumen",
"Active Loans in last installment Summary(Pentaho)": "Préstamos activos en la última Resumen tramo (Pentaho)",
"Active Loans in last installment(Pentaho)": "Préstamos activos en la última entrega (Pentaho)",
"Active Loans Passed Final Maturity": "Préstamos activo transferido a la Fecha de Vencimiento",
"Active Loans Passed Final Maturity Summary": "Préstamos activo transferido a la final Resumen de madurez",
"Active Loans Passed Final Maturity Summary(Pentaho)": "Préstamos activo transferido Resumen de Vencimiento Final (Pentaho)",
"Active Loans Passed Final Maturity(Pentaho)": "Préstamos activo transferido a la Fecha de Vencimiento (Pentaho)",
"Aging Detail": "El envejecimiento Detalle",
"Aging Detail(Pentaho)": "El envejecimiento Detalle (Pentaho)",
"Aging Summary (Arrears in Months)": "El envejecimiento (atrasos en meses)",
"Aging Summary (Arrears in Months)(Pentaho)": "El envejecimiento (atrasos en meses) (Pentaho)",
"Aging Summary (Arrears in Weeks)": "El envejecimiento (atrasos en semanas)",
"Aging Summary (Arrears in Weeks)(Pentaho)": "El envejecimiento (atrasos en semanas) (Pentaho)",
"Branch Expected Cash Flow": "Rama espera que el flujo de efectivo",
"Expected Payments By Date - Basic": "Los pagos por Lanzamiento - Básico",
"Expected Payments By Date - Basic(Pentaho)": "Los pagos por Lanzamiento - Básico (Pentaho)",
"Expected Payments By Date - Formatted": "Los pagos por Lanzamiento - con formato",
"Loans Awaiting Disbursal": "En espera de desembolso Préstamos",
"Loans Awaiting Disbursal Summary": "Hasta el momento no Préstamos desembolso Resumen",
"Loans Awaiting Disbursal Summary by Month": "En espera de desembolso Préstamos Resumen por mes",
"Loans Awaiting Disbursal Summary by Month(Pentaho)": "Hasta el momento no Préstamos desembolso Resumen por Mes (Pentaho)",
"Loans Awaiting Disbursal Summary(Pentaho)": "Hasta el momento no Préstamos Resumen desembolso (Pentaho)",
"Loans Awaiting Disbursal(Pentaho)": "En espera de desembolso Préstamos (Pentaho)",
"Loans Pending Approval": "Aprobación Préstamos pendiente",
"Loans Pending Approval(Pentaho)": "Los préstamos pendiente de aprobación (Pentaho)",
"Obligation Met Loans Details": "Obligación Met Préstamos detalles",
"Obligation Met Loans Details(Pentaho)": "Obligación Met Préstamos detalles (Pentaho)",
"Obligation Met Loans Summary": "Obligación Met Préstamos Resumen",
"Obligation Met Loans Summary(Pentaho)": "Obligación Met Préstamos de sumario (Pentaho)",
"Portfolio at Risk": "Cartera en Riesgo",
"Portfolio at Risk by Branch": "La cartera en riesgo por sucursal",
"Portfolio at Risk by Branch(Pentaho)": "La cartera en riesgo por sucursal (Pentaho)",
"Portfolio at Risk(Pentaho)": "Cartera en Riesgo (Pentaho)",
"Rescheduled Loans": "préstamos reprogramados",
"Rescheduled Loans(Pentaho)": "préstamos reprogramados (Pentaho)",
"Written-Off Loans": "Los préstamos dados de baja",
"Written-Off Loans(Pentaho)": "créditos castigados (Pentaho)",
"Active Loan Summary per Branch": "Préstamo Resumen activa por rama",
"Balance Outstanding": "Saldo pendiente",
"Collection Report": "Colección de informes",
"Disbursal Report": "Informe desembolso",
"Client Savings Summary": "Resumen ahorros de los clientes",
"Savings Transactions": "Las transacciones de ahorro",
"TxnRunningBalances(Pentaho)": "TxnRunningBalances (Pentaho)",
"day.monday": "Lunes",
"day.tuesday": "Martes",
"day.wednesday": "Miércoles",
"day.thursday": "Jueves",
"day.friday": "Viernes",
"day.saturday": "Sábado",
"day.sunday": "Domingo",
"RepaymentRescheduleType.same.day": "mismo día",
"RepaymentRescheduleType.move.to.next.working.day": "mover al día laborable próximo",
"RepaymentRescheduleType.move.to.previous.working.day": "mover al día laborable anterior"
}

View File

@ -23,11 +23,21 @@
"Ash Crow",
"LudaOtaku",
"Titip1995",
"Appleuseryu"
"Appleuseryu",
"Yasten"
]
},
"label.heading.totalshares": "Total des actions",
"label.heading.sharenominalprice": "Prix nominal/unitaire",
"label.heading.totalsharestobeissued": "Total des actions à émettre",
"label.heading.sharecapitalvalue": "Valeur totale du capital des actions",
"label.heading.shareperclient": "Actions par client",
"label.heading.minimumactiveperiod": "Période active minimale",
"label.heading.suspenseaccount": "Compte dattente",
"label.heading.equityaccount": "Compte de fonds propres",
"label.heading.allowdividendsforinactiveclients": "Permettre les dividendes pour les clients inactifs",
"label.heading.name": "Nom",
"label.heading.accnum": "Numéro de compte",
"label.heading.accnum": "Nº de compte",
"label.heading.staff": "Équipe",
"label.heading.office": "Bureau",
"label.heading.delete": "Supprimer",
@ -139,6 +149,26 @@
"label.input.defaultfloatinginterestrate": "Taux dintérêt par défaut",
"label.input.maxfloatinginterestrate": "Taux dintérêt minimum",
"label.input.differentialrate": "Taux différentiel",
"label.heading.sharesaccoverview": "Vu densemble du portefeuille d'actions",
"label.heading.shareaccount": "Numéro du compte dactions",
"label.heading.approvedshares": "Actions approuvées",
"label.heading.pendingforapproval": "Attente dapprobation des actions",
"label.heading.purchasedsharesoverview": "Vue densemble des transactions",
"label.heading.purchasedorredeemedprice": "Prix dachat/de rachat",
"label.heading.linkedsavingsaccountnumber": "Compte dépargne lié (affectation de dividendes)",
"label.heading.applyadditionalshares": "Appliquer les actions supplémentaires",
"label.heading.approveadditionalshares": "Approuver les actions supplémentaires",
"label.heading.rejectadditionalshares": "Racheter les actions",
"label.heading.sharesapplication": "Demande de compte dactions",
"label.heading.dividendperiodstartdate": "Date de début de la période de dividendes",
"label.heading.dividendperiodenddate": "Date de fin de la période de dividendes",
"label.heading.dividendamount": "Montant du dividende",
"label.heading.shareequity": "Fonds propres dactions",
"label.heading.dividends": "dividendes",
"label.heading.savingtransactionreference": "Référence de transaction",
"label.heading.amountreceivedorreturned": "Montant reçu/remboursé",
"label.heading.totalamountreceivedorreturned": "Montant total à recevoir/remboursé",
"label.heading.equity": "Capitaux propres",
"label.menu.selectloanofficer": "Sélectionner léquipe",
"label.menu.selectone": "En sélectionner un",
"label.menu.constitution": "Sélectionner la constitution",
@ -156,7 +186,7 @@
"label.input.middlename": "Deuxième prénom",
"label.input.fullname": "Nom",
"label.input.legalForm": "Forme juridique",
"label.input.accno": "Numéro de compte",
"label.input.accno": "Nº de compte",
"label.input.activationdate": "Date dactivation",
"label.input.staff": "Équipe",
"label.input.office": "Bureau",
@ -219,6 +249,7 @@
"label.button.staffassignmenthistory": "Historique du personnel responsable",
"label.button.activate": "Activer",
"label.button.newloan": "Nouveau prêt",
"label.button.newshareaccount": "Nouveau compte dactions",
"label.button.transferclient": "Transférer le client",
"label.button.newsaving": "Nouvelle épargne",
"label.button.newcharge": "Ajouter une charge",
@ -253,6 +284,8 @@
"label.button.addjournalentry": "Ajouter des entrées dans lhistorique",
"label.button.validate": "Valider",
"label.button.pattern": "Modèle",
"label.button.dividends": "Dividendes",
"label.button.postdividends": "Affecter les dividendes",
"label.uniquelyidentifiedwithid": "Identifié de façon unique par ID",
"label.belongsto": "Appartient à",
"label.memberof": "Membre de",
@ -276,6 +309,7 @@
"label.today": "Aujourdhui",
"label.relDate": "Date de publication Mifos X :",
"label.relVersion": "Version :",
"label.select": "Choisir une option",
"label.error": "Erreur",
"error.login.failed": "Veuillez essayer à nouveau, vos informations didentification ne sont pas valides",
"error.connection.failed": "Impossible de se connecter au serveur. Assurez-vous que les paramètres sont corrects.",
@ -539,7 +573,7 @@
"label.input.searchByNameAccNo": "Recherche par nom/compte#/ID externe/identifiant#",
"label.input.selectclientimage": "Sélectionner limage du client",
"label.input.selectfile": "Sélectionner un fichier",
"label.input.documenttype": "Type de document",
"label.input.documenttype": "État",
"label.input.uniqueidentification": "# ID unique",
"label.input.mobilenumber": "Numéro de mobile",
"label.input.client.activationdate": "Date dactivation",
@ -572,6 +606,8 @@
"label.button.ok": "OK",
"label.button.reset": "Réinitialiser",
"label.button.clear": "Effacer",
"label.button.viewclosedshares": "Afficher les actions fermées",
"label.button.viewactiveshares": "Afficher les actions actives",
"label.numofloancycles": "# de cycles de prêt",
"label.lastloanamount": "Montant du dernier prêt",
"label.numofactiveloans": "# de prêts actifs",
@ -612,7 +648,7 @@
"error.msg.client.not.active.exception": "Le client didentifiant `{{params[0].value}}` nest pas actif.",
"validation.msg.clientIdentifier.documentKey.cannot.be.blank": "Le # didentification est obligatoire.",
"validation.msg.clientIdentifier.documentTypeId.cannot.be.blank": "Le type de document didentité est obligatoire",
"error.msg.clientIdentifier.type.duplicate": "Le document didentité du client de type `{{params[0].value}}` existe déjà pour ce client.",
"error.msg.clientIdentifier.type.duplicate": "Le document didentité actif du client de type `{{params[0].value}}` existe déjà pour ce client.",
"error.msg.clientIdentifier.identityKey.duplicate": "Le client `{{params[0].value}}` dans le bureau {{params[1].value}} a déjà une {{params[2].value}} avec une clé unique {{params[3].value}}.",
"error.msg.image.type.upload": "Seuls les fichiers de type GIF, PNG ou JPG sont autorisés.",
"validation.msg.clientImage.cannot.be.blank": "Veuillez sélectionner une image à importer.",
@ -698,6 +734,7 @@
"label.selectgroup": "Sélectionner le groupe",
"label.selectstaff": "Sélectionner léquipe",
"label.active": "Actif",
"label.selectshareproduct": "Sélectionner le produit daction",
"groupingStatusType.pending": "En attente",
"groupingStatusType.active": "Actif",
"groupingStatusType.closed": "Fermé",
@ -906,6 +943,7 @@
"cashAtTeller": "Trésorerie des Caissiers/Caissières",
"liabilityTransfer": "Transfert de responsabilité",
"fundSource": "Source des fonds",
"payableDividends": "Dividendes payables",
"openingBalancesTransferContra": "Contre-transfert des soldes douverture",
"label.thesearepredefinedpostings": "Voici les publications prédéfinies",
"label.manualjournalentrytransactionsrecordedinajournal": "Transactions des écritures manuelles du journal stockées dans un journal",
@ -1167,7 +1205,7 @@
"label.heading.savingsLinkage": "Relation dépargne",
"label.heading.tranche": "Tranche",
"label.heading.configurableAttributes": "Termes et Paramètres Configurables",
"label.heading.rescheduleloan": "Reévaluer le prêt",
"label.heading.rescheduleloan": "Réévaluer le prêt",
"label.heading.viewreschedulerequest": "Afficher la requête de replanification du prêt",
"label.heading.approveloanreschedule": "Approuver la replanification du prêt",
"label.heading.rejectloanreschedule": "Rejeter la replanification du prêt",
@ -1273,6 +1311,7 @@
"label.input.rejectedOnDate": "Rejeté le",
"label.input.submittedOnDate": "Soumis le",
"label.input.installmentOn": "Replanifier pour un versement le",
"label.input.applicationdate": "Date dapplication",
"label.button.addloancharge": "Ajouter un frais de prêt",
"label.button.addcollateral": "Ajouter une garantie",
"label.button.guarantor": "Garant",
@ -1296,6 +1335,7 @@
"label.button.newrepaymentschedule": "Afficher le nouveau calendrier de remboursements",
"label.button.reschedule": "Replanification",
"label.button.recreate": "Recréer",
"label.button.foreclosure": "Saisie",
"label.selectpurpose": "Sélectionner lobjet",
"label.selectloanproduct": "Sélectionner le produit de prêt",
"label.selectsavingsofficer": "Sélectionner lagent dépargne",
@ -1636,6 +1676,19 @@
"label.heading.enforceMinRequiredBalance": "Appliquer le solde minimal",
"label.heading.minRequiredBalance": "Solde minimal",
"label.heading.interest.recalulation.settings": "Paramètres de recalcul des intérêts",
"label.heading.withholdtax": "La taxe de conservation est-elle applicable",
"label.heading.withholdtaxgroup": "Groupe de taxe de conservation",
"label.heading.marketprice": "Prix du marché",
"label.heading.shareapplication": "Demande dactions",
"label.heading.approveshareaccount": "Approuver le compte dactions",
"label.heading.rejectshareaccount": "Rejeter le compte dactions",
"label.heading.activateshareaccount": "Activer le compte en actions",
"label.heading.undoapproveshareaccount": "Annuler lapprobation du compte dactions",
"label.heading.requesteddate": "Date de la demande",
"label.heading.approvesharespurchase": "Approuver la demande d'achat d'actions",
"label.heading.rejectsharespurchase": "Rejeter la demande d'achat d'actions",
"label.heading.initiatedividend": "Initier le dividende",
"label.heading.closeshareaccount": "Clôturer le compte en actions",
"label.anchor.addsavingcharges": "Ajouter les frais dépargne",
"label.anchor.viewsavingaccount": "Afficher le compte dépargne",
"label.anchor.editsavingapplication": "Modifier la demande dépargne",
@ -1648,6 +1701,8 @@
"label.anchor.editrecurringdepositapplication": "Modifier la demande de dépôt récurrent",
"label.anchor.add.fixed.deposit.charges": "Ajouter un frais de dépôt fixe",
"label.anchor.add.recurring.deposit.charges": "Ajouter un frais de dépôt récurrent",
"label.anchor.sharesapplication": "Application des actions",
"label.anchor.viewshareaccount": "Afficher le compte d'actions",
"label.input.charges": "Charges",
"label.input.chargecalculation": "Calcul des charges",
"label.input.chargetimetype": "Type de durée de charge",
@ -1660,6 +1715,17 @@
"label.input.nominalannualinterestrate": "Intérêt annuel nominal",
"label.input.interestrate": "Taux dintérêt",
"label.input.repayments": "# de remboursements",
"label.input.totalnumberofshares": "Nombre total d'actions",
"label.input.totalsharestobeissue": "Actions à émettre",
"label.input.nominalprice": "Prix nominal",
"label.input.capitalvalue": "Valeur du capital",
"label.input.sharesperclient": "Actions par client",
"label.input.minimumactiveperiod": "Période active minimale",
"label.input.suspenseaccount": "Compte dattente",
"label.input.equityaccount": "Compte de fonds propres",
"label.input.allowdividendsforinactiveclients": "Permettre les dividendes pour les clients inactifs",
"label.input.marketpriceperiods": "Périodes au prix du marché",
"label.input.requreddate": "Date demandée",
"label.input.currencyinmultiplesof": "Devise en multiples de",
"label.input.interestcompoundingperiod": "Période de combinaison des intérêts",
"label.input.interestpostingperiod": "Période daffectation des intérêts",
@ -1679,7 +1745,7 @@
"label.input.withdrawBalance": "Retirer le solde",
"label.input.paymentypeid": "Id du type de paiement",
"label.input.showpaymentdetails": "Afficher les détails de paiement",
"label.input.accnum": "Compte#",
"label.input.accnum": "Nº de compte",
"label.input.checknumber": "Numéro de chèque",
"label.input.routingcode": "Code dacheminement",
"label.input.receiptnumber": "Reçu#",
@ -1706,6 +1772,12 @@
"label.heading.minbalanceforinterestcalculation": "Solde nécessaire pour le calcul des intérêts",
"label.input.enforceMinRequiredBalance": "Appliquer le solde minimal",
"label.input.minRequiredBalance": "Solde minimal",
"label.input.withholdtax": "La taxe de conservation est-elle applicable",
"label.input.requesteddate": "Date de la demande",
"label.input.dividendperiodstartdate": "Date de début de la période de dividende",
"label.input.dividendperiodenddate": "Date de fin de la période des dividendes",
"label.input.dividendamount": "Montant du dividende",
"label.input.todaysprice": "Prix du jour",
"label.button.undo": "Annuler",
"label.button.modifyapplication": "Modifier la demande",
"label.button.withdrawnbyclient": "Retiré par le client",
@ -1724,6 +1796,12 @@
"label.button.inactivatecharge": "Frais inactif",
"label.button.showActiveCharges": "Frais actifs",
"label.button.showInactiveCharges": "Frais inactifs",
"label.button.disableWithHoldTax": "Désactiver la taxe de conservation",
"label.button.enableWithHoldTax": "Activer la taxe de conservation",
"label.button.applyadditionalshares": "Appliquer les actions supplémentaires",
"label.button.approveadditionalshares": "Approuver les actions supplémentaires",
"label.button.rejectadditionalshares": "Rejeter les actions supplémentaires",
"label.button.redeemshares": "Racheter les actions",
"label.selectcharge": "Sélectionner la charge",
"label.selectsavingproduct": "Sélectionner le produit dépargne",
"label.selectfixeddepositproduct": "Sélectionner un produit de dépôt fixe",
@ -1736,12 +1814,19 @@
"label.totalinterestearned": "Intérêts gagnés",
"label.totalinterestposted": "Intérêts affichés",
"label.totaloverdraftinterestderived": "Intérêts sur le découvert",
"label.interestEarnedNotPosted": "Les intérêts gagnés non postés",
"label.overdraftInterestNotPosted": "Intérêts débiteurs non postés",
"label.interestrate": "Taux dintérêt nominal",
"label.interestcompoundingperiod": "Période de combinaison des intérêts",
"label.interestpostingperiod": "Période daffectation des intérêts",
"label.interestcalculatedusing": "Intérêts calculés en utilisant",
"label.noofdaysinyear": "# de jours dans lannée",
"label.withdrawalfee": "Frais de retrait",
"label.lastActiveTransactionDate": "Date de la dernière transaction active",
"label.subStatus": "Sous-status",
"label.daysToInactive": "Jours à inactif",
"label.daysToDormancy": "Jours en dormance",
"label.daysToEscheat": "Jours à Escheat",
"label.annualfee": "Frais annuels",
"label.on": "le",
"label.annaulfeedueon": "Frais annuels (dus le)",
@ -1768,6 +1853,7 @@
"label.account.recurring.deposit.amount": "Montant du dépôt périodique",
"label.account.deposit.frequency": "Fréquence de dépôt",
"label.account.closed.on.date": "Date de clôture",
"label.heading.interest.calculation.date": "Date de recalcul des intérêts",
"label.tooltip.productname": "Un identificateur unique pour le produit d'épargne",
"label.tooltip.shortname": "Un identificateur unique pour le produit d'épargne",
"label.tooltip.description": "Fournit des informations supplémentaires concernant le but et les caractéristiques du produit d'épargne",
@ -1776,6 +1862,16 @@
"label.tooltip.multiplesof": "Le montant à être arrondi (exemple: 100 arrondi à 200, 300, 400, etc)",
"label.tooltip.nominalannualinterest": "Le taux d'intérêt par défaut fixé lors de la création des comptes d'épargne",
"label.tooltip.interestcompoundingperiod": "La période durant laquelle le taux d'intérêt est calculé",
"label.tooltip.totalshares": "Nombre total dactions quoffre un produit",
"label.tooltip.totalsharestobeissued": "Nombre total dactions quune organisation veut émettre pour ses clients",
"label.tooltip.nominalprice": "Prix unitaire/nominal de chaque action",
"label.tooltip.capitalvalue": "Valeur totale du capital",
"label.tooltip.sharesperclient": "Ces champs sont utilisés pour définir le nombre dactions minimum, maximum et par défaut, par client",
"label.tooltip.minimumactiveperiod": "Période active minimale pour envisager le calcul des dividendes",
"label.tooltip.suspenseaccount": "Le montant de laction sera conservé dans ce compte dattente avant approbation",
"label.tooltip.equityaccount": "Un compte de fonds propres, qui est débité quand lachat des actions est approuvé",
"label.tooltip.allowdividendsforinactiveclients": "Permettre les dividendes pour les clients inactifs",
"label.tooltip.marketprice": "Prix de chaque action",
"label.tooltip.interestpostingperiod": "La période auquel le taux dintérêt est appliqué ou crédité à un compte dépargne",
"label.tooltip.interestcalculatedusing": "La méthode utilisée pour calculer l'intérêt",
"label.tooltip.minimumopeningbalance": "Fixe le montant de dépôt minimum obligatoire pour ouvrir un compte dépargne de ce type de produit",
@ -1795,6 +1891,9 @@
"label.tooltip.Writeoffoverdraft": "Un compte de dépenses, qui augmente quand un client ne rembourse pas un solde négatif.",
"label.tooltip.incomefromoverdraftinterest": "Un compte de revenus, où un revenu est généré quand le client paie des intérêts sur les découverts.",
"label.tooltip.savingsuspense": "Un compte dactif qui est utilisé comme compte dattente pour tracer les portefeuilles de prêts en transfert.",
"label.tooltip.withholdtax": "Un indicateur booléen à attacher aux frais de publication des intérêts",
"label.tooltip.sharereference": "Un compte dactif (en général un compte de trésorerie), duquel le montant est débité quand les nouvelles actions sont achetées par le détenteur du compte, et crédité quand le détenteur du compte fait un rachat",
"label.tooltip.sharecontrol": "Un compte de passif qui représente le portefeuille des comptes de dépôt daction est débité quand lachat dactions est approuvé, et crédité quand lachat dactions est rejeté",
"label.tooltip.fixeddepositproduct.defaultamount": "Le montant de dépôt par défaut attendu quand un compte de dépôt fixe basé sur ce produit de dépôt fixe est ouvert.",
"label.tooltip.fixeddepositproduct.minimumamount": "Le montant minimal de dépôt nécessaire pour ouvrir un compte de dépôt fixe basé sur ce produit de dépôt fixe.",
"label.tooltip.fixeddepositproduct.maximumamount": "Le montant maximal de dépôt autorisé quand un compte de dépôt fixe basé sur ce produit de dépôt fixe est ouvert.",
@ -1812,6 +1911,14 @@
"label.tooltip.recurringdepositproduct.allowwithdraw": "La valeur indique si les retraits sont autorisés pour ce produit de dépôt récurrent.",
"label.tooltip.recurringdepositproduct.adjustadvance": "La valeur indique si les paiements anticipés doivent servir à ajuster les versements futurs.",
"label.tooltip.recurringdepositproduct.balanceforcalc": "Le solde nécessaire pour les calculs dintérêts.",
"label.tooltip.shareproductname": "Un identifiant unique pour le produit dactions",
"label.tooltip.shareproductshortname": "un identifaint unique pour le produit d'action",
"label.tooltip.shareproductdescription": "Fournit des informations supplémentaires par rapport au but et aux caractéristiques du produit dactions",
"label.tooltip.shareproductdecimalplaces": "Le nombre de décimales à utiliser pour tracer et faire un rapport sur les comptes dactions",
"label.tooltip.shareproductlockinPeriodFrequency": "Utilisé pour indiquer la durée pendant laquelle un compte dactions de ce type de produit dactions est verrouillé et le rachat nest pas autorisé",
"label.tooltip.shareproductallowdividends": "Indique si les dividendes peuvent être traités même si le compte dactions de ce produit dactions est inactif",
"label.tooltip.marketpricestartdate": "Prix unitaire effectif depuis la date",
"label.tooltip.marketpriceaddition": "Ajouter la valeur future des actions avec la plage de dates",
"savings.interest.rate.savingsPeriodFrequencyType.days": "Par jour",
"savings.interest.rate.savingsPeriodFrequencyType.weeks": "Par semaine",
"savings.interest.rate.savingsPeriodFrequencyType.months": "Par mois",
@ -1972,6 +2079,7 @@
"error.msg.meeting.frequency.not.attached.to.group.to.which.client.belongs.to": "La fréquence de la réunion nest pas attachée à un groupe/centre auquel appartient le client.",
"validation.msg.fixeddepositaccount.submittedOnDate.cannot.be.blank": "La date de soumission est obligatoire.",
"error.msg.officeToAccountMapping.not.found": "La correspondance pour le bureau avec lId `{{params[0].value}}` nexiste pas pour un compte de type `{{params[1].value}}`",
"validation.msg.savingsproduct.taxGroupId.cannot.be.blank": "Le groupe de frais est nécessaire pour la taxe dattente",
"label.heading.createuser": "Créer un utilisateur",
"label.heading.permissions": "Droits",
"label.heading.edituser": "Modifier lutilisateur",
@ -2045,6 +2153,13 @@
"label.heading.applicableoffices": "Bureaux applicables",
"label.heading.namedecorated": "Nom embelli",
"label.heading.officeName": "Nom du bureau",
"label.heading.createtaxcomponent": "Créer un composant de taxe",
"label.heading.edittaxcomponent": "Modifier le composant de taxe",
"label.heading.viewtaxcomponent": "Afficher le composant de taxe",
"label.heading.createtaxgroup": "Créer un groupe de taxe",
"label.heading.edittaxgroup": "Modifier le groupe de taxe",
"label.heading.viewtaxgroup": "Afficher le groupe de taxe",
"label.heading.taxcomponent": "Composants de taxe",
"label.anchor.organization": "Organisation",
"label.anchor.bulkloanreassignment": "Réaffectation de prêt en masse",
"label.anchor.bulkjlgloanapplication": "Application de prêt JLG en masse",
@ -2063,6 +2178,15 @@
"label.anchor.editrole": "Modifier le rôle",
"label.anchor.standinginstruction.history": "Historique des instructions permanentes",
"label.anchor.fund.mapping": "Correspondance des fonds",
"label.anchor.createtaxcomponent": "Créer un composant de taxe",
"label.anchor.managetaxcomponents": "Gérer les composants de taxe",
"label.anchor.edittaxcomponent": "Modifier un composant de taxe",
"label.anchor.viewtaxcomponent": "Afficher un composant de taxe",
"label.anchor.managetaxconfigurations": "Gérer les configurations de taxe",
"label.anchor.managetaxgroup": "Gérer les groupes de taxe",
"label.anchor.createtaxgroup": "Créer un groupe de taxe",
"label.anchor.edittaxgroup": "Modifier un groupe de taxe",
"label.anchor.viewtaxgroup": "Afficher un groupe de taxe",
"label.input.assignmentdate": "Date daffectation",
"label.input.fromloanofficer": "De lagent de crédit",
"label.input.toloanofficer": "À lagent de crédit",
@ -2076,6 +2200,14 @@
"label.input.filterbynameexternalid": "Filtrer par nom/id externe",
"label.input.fromAccountId": "De lidentifiant de compte",
"label.input.tosavingsofficer": "À lagent dépargne",
"label.input.percentage": "Pourcentage",
"label.input.debitaccounttype": "Type de compte de débit",
"label.input.creditaccounttype": "Type de compte de crédit",
"label.input.debitaccount": "Débiter le compte",
"label.input.creditaccount": "Créditer le compte",
"label.input.taxcomponents": "Composants de taxe",
"label.input.taxcomponent": "Composant de taxe",
"label.input.taxgroup": "Groupe de taxe",
"label.button.createemployee": "Créer un employé",
"label.button.createholiday": "Créer un jour férié",
"label.button.createoffice": "Créer un bureau",
@ -2089,6 +2221,9 @@
"label.view.standinginstructions.history.logging": "Afficher lhistorique journalisé des instructions permanentes",
"label.view.advance.search.fund.mapping": "Écran de saisie en masse pour faire correspondre les les sources de fonds aux prêts",
"label.view.createprovisioningcriteria": "Définir les critères de provisions de prêt pour lorganisation",
"label.view.taxconfiguration": "Définir les composants de taxe et les groupes de taxe",
"label.view.taxcomponent": "Définir les composants de taxe",
"label.view.taxgroup": "Définir les groupes de taxe",
"validation.msg.currencies.currencies.cannot.be.empty": "Vous devez sélectionner au moins une devise 'autorisée' pour votre application.",
"validation.msg.office.name.cannot.be.blank": "Le nom est obligatoire.",
"validation.msg.office.name.exceeds.max.length": "Le nom dutilisateur ne peut pas dépasser {{params[0].value}} caractères de long.",
@ -2118,6 +2253,14 @@
"error.msg.holiday.repayments.rescheduled.date.should.not.fall.on.non.working.day": "Les remboursements prévus à date ne doivent pas tomber sur des jours non ouvrables.",
"validation.msg.holiday.offices.cannot.be.blank": "Veuillez sélectionner un bureau",
"error.msg.currency.currencyCode.inUse": "La devise que vous essayez de supprimer est utilisée",
"validation.msg.tax.component.percentage.is.greater.than.max": "Le pourcentage doit être inférieur à 100",
"validation.msg.tax.component.startDate.is.less.than.date": "La date de début doit être supérieure ou égale à la date actuelle et à la précédente date de début",
"validation.msg.tax.group.taxComponents.not.greater.than.zero": "Les composants de taxe doivent être ici",
"validation.msg.tax.group.component.dates.are.overlapping": "Les dates des composants de taxe se superposent",
"validation.msg.tax.group.component.start.date.is.less.than.date": "La date de début du composant de taxe est superposée",
"validation.msg.tax.group.endDate.can.not.modify.end.date.once.updated": "La modification de la date de fin nest pas supportée",
"validation.msg.tax.group.total.percentage.is.greater.than.max": "Le pourcentage total du groupe doit être inférieur à 100 à tout moment",
"validation.msg.tax.component.group.total.percentage.is.greater.than.max": "Un des totaux du groupe est supérieur à 100 avec cette modification",
"label.heading.text": "Texte",
"label.heading.addcode": "Ajouter un code",
"label.heading.codename": "Nom du code",
@ -2301,6 +2444,8 @@
"receivableFeeAccountId": "Compte de frais dus",
"transactionProcessingStrategyId": "Stratégie de traitement de transaction",
"receivableInterestAccountId": "Compte dintérêts dus",
"clientIdentifierStatusType.inactive": "Inactif",
"clientIdentifierStatusType.active": "Actif",
"label.button.advancedoptions": "Options avancées",
"label.button.createtemplate": "Créer un modèle",
"label.button.addcode": "Ajouter un code",
@ -2418,7 +2563,7 @@
"label.tooltip.global.office-specific-products-enabled": "Déterminer si les produits spécifiques au bureau sont activés.",
"label.tooltip.global.restrict-products-to-user-office": "Cette échéance est en attente dune définition professionnelle.",
"label.tooltip.global.meetings-mandatory-for-jlg-loans": "Cette échéance est en attente dune définition professionnelle.",
"label.tooltip.global.rounding-mode": "Valeurs : 0 - HAUT, 1 - BAS, 2 - PLAFOND, 3 - PLANCHER, 4 - SEMI_HAUT, 5 - SEMI_BAS, 6 - SEMI_ÉGAL",
"label.tooltip.global.rounding-mode": "Valeurs : 0 - SUPÉRIEUR, 1 - INFÉRIEUR, 2 - PLAFOND, 3 - PLANCHER, 4 - DEMI_SUPÉRIEUR, 5 - DEMI_INFÉRIEUR, 6 - DEMI_PAIR",
"label.heading.addproductmix": "Ajouter une gamme de produits",
"label.heading.editproductmix": "Modifier la gamme de produits",
"label.heading.productmix": "Gamme de produits",
@ -2530,6 +2675,9 @@
"label.heading.prematurecloserecurringdepositaccount": "Clôture prématurée du dépôt récurrent",
"label.heading.interestRecalculation": "Recalcul de l'intérêt",
"label.heading.gauranteeRequirements": "Conditions de garantie",
"label.heading.chargeamount": "Montant des frais",
"label.heading.sharereference": "Référence des actions",
"label.heading.sharecontrol": "Contrôle de la suspension des actions",
"label.anchor.products": "Produits",
"label.anchor.charges": "Frais",
"label.anchor.floatingrates": "Taux variables",
@ -2539,6 +2687,11 @@
"label.anchor.createloanproduct": "Créer des produits de prêt",
"label.anchor.createcharge": "Créer les frais",
"label.anchor.savingproducts": "Produits d'épargne",
"label.anchor.shareproducts": "Produits dactions",
"label.anchor.createshareproduct": "Créer un produit dactions",
"label.anchor.editshareproduct": "Modifier le produit dactions",
"label.anchor.dividends": "Dividendes",
"label.anchor.dividendlisting": "Détails du dividende",
"label.anchor.createsavingproduct": "Créer un produit dépargne",
"label.anchor.editcharge": "Modifier les frais",
"label.anchor.editloanproduct": "Modifier le produit de prêt",
@ -2683,9 +2836,13 @@
"label.input.thresholdforlastinstallment": "Seuil de capital (%) pour la dernière mensualité",
"label.input.arrearsbasedonoriginalschedule": "La reconnaissance des arriérés est-elle basée sur le calendrier dorigine",
"label.input.loan.account.moves.out.of.npa.only.on.arrears.completion": "Le compte sort de NPA uniquement après que tous les arriérés ont été effacés?",
"label.input.sharereference": "Référence de l'action",
"label.input.sharecontrol": "contrôle de suspension des actions",
"label.input.equity": "Equité",
"label.button.createcharge": "Créer les frais",
"label.button.createloanproduct": "Créer un produit de prêt",
"label.button.createsavingproduct": "Créer un produit dépargne",
"label.button.createshareproduct": "Créer un produit dactions",
"label.button.top": "Haut",
"label.button.createinterestratechart": "Créer un tableau de taux dintérêt",
"label.button.createfixeddepositproduct": "Créer un produit de dépôt fixe",
@ -2693,12 +2850,16 @@
"label.button.createprovisioningcriteria": "Créer les critères de provisions",
"label.button.createprovisioning.entry": "Créer une entrée pour provision",
"label.button.createfloatingrate": "Créer un taux variable",
"label.button.createtaxcomponent": "Créer un composant de taxe",
"label.button.createtaxgroup": "Créer un groupe de taxe",
"label.button.initiatedividend": "Initier le dividende",
"label.selectproduct": "Sélectionner un produit",
"label.selectfund": "Sélectionner le Fonds",
"label.addnewloanproductor": "Ajouter un nouveau produit de prêt ou modifier ou désactiver un produit de prêt",
"label.definecharges": "Définir les frais/pénalités pour les produits de prêt, et les produits dépargne et de dépôt",
"label.definefloatingrates": "Définir des taux variables pour des produits de prêt",
"label.addnewsavingproductor": "Ajouter un nouveau produit dépargne ou modifier ou désactiver un produit dépargne",
"label.addnewshareproductor": "Ajouter un nouveau, modifier ou désactiver, un produit dactions",
"label.definesrulesfortakingmul": "Définit les règles pour prendre des règles multiples",
"label.notprovided": "Non fourni",
"label.fixeddepositproduct.def": "Ajouter, modifier ou désactiver un produit de dépôt fixe",
@ -2709,6 +2870,7 @@
"chargeAppliesTo.loan": "Prêt",
"chargeAppliesTo.savings": "Épargne et dépôts",
"chargeAppliesTo.client": "Client",
"chargeAppliesTo.shares": "Actions",
"chargeCalculationType.flat": "Plat",
"LoanProductValueConditionType.equal": "=",
"LoanProductValueConditionType.greaterThan": ">",
@ -2736,6 +2898,7 @@
"validation.msg.charge.chargeTimeType.is.not.within.expected.range": "Loption de durée des frais sélectionnée nest pas valide.",
"validation.msg.charge.chargeCalculationType.cannot.be.blank": "Le calcul des frais ne peut pas être vide.",
"validation.msg.charge.chargePaymentMode.cannot.be.blank": "Le mode de paiement des frais ne peut pas être vide.",
"validation.msg.charge.chargeCalculationType.is.not.one.of.expected.enumerations": "Loption de type de calcul de charge sélectionné nest pas valide.",
"error.msg.charge.due.at.disbursement.cannot.be.penalty": "La charge ne peut pas être paramétrée comme une pénalité due au décaissement.",
"error.msg.charge.duplicate.name": "Une charge avec ce nom existe déjà.",
"error.msg.charge.cannot.be.deleted.it.is.already.used.in.loan": "Cette charge ne peut pas être supprimée car elle est déjà associée avec un produit de prêt et/ou un prêt.",
@ -3301,6 +3464,7 @@
"label.heading.incentives": "Incitations",
"label.heading.customerattributes": "Attributs du client",
"label.heading.interestratedetails.incentive.attributename": "Attribut",
"label.heading.interestratedetails.incentive.conditiontype": "<span/>",
"label.heading.interestratedetails.incentive.attributevalue": "Valeur",
"label.heading.interestratedetails.incentive.incentivetype": "Type",
"label.heading.interestratedetails.incentive.amount": "Intérêt",
@ -3416,7 +3580,7 @@
"label.input.teller.cashiertxn.txnAmount": "Montant",
"label.input.teller.cashiertxn.txnNote": "Notes/Commentaires",
"label.button.addpaymentdetail": "Ajouter des informations de paiement",
"label.anchor.individualcollectionsheet": "Feuille de collection individuelle",
"label.anchor.individualcollectionsheet": "Feuille de collecte individuelle",
"------------------": "------------",
"office_access_to_loan_products": "Bureaux --> Produits de prêt",
"office_access_to_savings_products": "Bureaux --> Produits dépargne",
@ -3454,5 +3618,105 @@
"label.heading.Survey": "Enquête",
"label.anchor.survey": "Enquête",
"label.surveyName": "Nom de lenquête",
"label.selectsurvey": "Sélectionner lenquête"
"label.selectsurvey": "Sélectionner lenquête",
"label.heading.isDormancyTrackingActive": "La traque des comptes dormants est-elle active",
"label.input.isDormancyTrackingActive": "Activer la traque des comptes dormants",
"label.tooltip.isDormancyTrackingActive": "Active la définition et la trace des comptes dépargne inactifs",
"label.heading.daysToInactive": "Nombre de jours pour passer au sous-état inactif",
"label.input.daysToInactive": "Nombre de jours pour passer au sous-état inactif",
"label.tooltip.daysToInactive": "Nombre de jours consécutif de période dinactivité pour marquer un compte comme inactif",
"label.heading.daysToDormancy": "Nombre de jours dans le sous-état dormance",
"label.input.daysToDormancy": "Nombre de jours pour passer dans le sous-état dormant",
"label.tooltip.daysToDormancy": "Nombre de jours consécutifs de période dinactivité pour marquer un compte comme dormant",
"label.heading.daysToEscheat": "Nombre de jours à Escheat",
"label.input.daysToEscheat": "Nombre de jours à Escheat",
"label.tooltip.daysToEscheat": "Nombre de jours consécutifs de période dinactivité pour marquer un compte comme en déshérance",
"label.heading.escheatLiability": "Passif de déshérence",
"label.input.escheatLiability": "Passif de déshérence",
"label.tooltip.escheatLiability": "Compte de passif où les fonds en déshérence sont maintenus",
"label.heading.lastActive": "Dernier actif",
"Loan Transaction Receipt": "Reçu de transaction de prêt",
"Savings Transaction Receipt": "Reçu de transaction de prêt",
"Staff Assignment History": "Historique de laffectation de léquipe",
"Balance Sheet": "Feuille de bilan",
"GeneralLedgerReport": "GeneralLedgerReport",
"Income Statement": "Compte de résultat",
"Progress Report": "Rapport d'avancement",
"Trial Balance": "Balance de vérification",
"BranchOverView": "BranchOverView",
"Client Listing": "Liste des clients",
"Client Listing(Pentaho)": "Liste des clients(Pentaho)",
"Client Loans Listing": "Liste des prêts client",
"Client Loans Listing(Pentaho)": "Liste des prêts des clients(Pentaho)",
"Funds Disbursed Between Dates Summary": "Résumé des fonds versés entre les dates",
"Funds Disbursed Between Dates Summary by Office": "Résumé par bureau des fonds versés entre les dates",
"Funds Disbursed Between Dates Summary by Office(Pentaho)": "Résumé par bureau (Pentaho) des fonds versés entre les dates",
"Funds Disbursed Between Dates Summary(Pentaho)": "Résumé (Pentaho) des fonds versés entre les dates",
"Active Loans - Details": "Prêts actifs — Détails",
"Active Loans - Details(Pentaho)": "Prêts actifs - Détails(Pentaho)",
"Active Loans - Summary": "Prêts actifs — Résumé",
"Active Loans - Summary(Pentaho)": "Prêts actifs — Résumé (Pentaho)",
"Active Loans by Disbursal Period": "Prêts actifs par période de versement",
"Active Loans by Disbursal Period(Pentaho)": "Prêts actifs par période de versement (Pentaho)",
"Active Loans in last installment": "Prêts actifs dans la dernière livraison",
"Active Loans in last installment Summary": "Résumé des prêts actifs dans la dernière livraison",
"Active Loans in last installment Summary(Pentaho)": "Résumé (Pentaho) des prêts actifs dans la dernière livraison",
"Active Loans in last installment(Pentaho)": "Prêts actifs dans la dernière livraison (Pentaho)",
"Active Loans Passed Final Maturity": "Prêts actifs passés en échéance finale",
"Active Loans Passed Final Maturity Summary": "Résumé des prêts actifs passés en échéance finale",
"Active Loans Passed Final Maturity Summary(Pentaho)": "Résumé (Pentaho) des prêts actifs passés en échéance finale",
"Active Loans Passed Final Maturity(Pentaho)": "Prêts actifs passés en échéance finale (Pentaho)",
"Aging Detail": "Détail du vieillissement",
"Aging Detail(Pentaho)": "Détail du vieillissement (Pentaho)",
"Aging Summary (Arrears in Months)": "Résumé du vieillissement (retards en mois)",
"Aging Summary (Arrears in Months)(Pentaho)": "Résumé du vieillissement (retards en mois) (Pentaho)",
"Aging Summary (Arrears in Weeks)": "Résumé du vieillissement (retards en semaines)",
"Aging Summary (Arrears in Weeks)(Pentaho)": "Résumé du vieillissement (retards en semaines) (Pentaho)",
"Branch Expected Cash Flow": "Flux de trésorerie attendu de la branche",
"Branchwise Loan Summary": "Résumé de prêt par branche",
"Daily Loan Officer Wise Loan Summary": "Résumé du prêt dhonneur dagent de crédit quotidien",
"Expected Payments By Date - Basic": "Paiements prévus par date - Basique",
"Expected Payments By Date - Basic(Pentaho)": "Paiements attendus par date — basique (Pentaho)",
"Expected Payments By Date - Formatted": "Paiements attendus par date — Mis en forme",
"Loan Aging Report By Periods": "Rapport de vieillissement de prêt par période",
"LoanPortfolio": "Portefeuille des prêts",
"Loans Awaiting Disbursal": "Prêts en attente de versement",
"Loans Awaiting Disbursal Summary": "Résumé des prêts en attente de versement",
"Loans Awaiting Disbursal Summary by Month": "Résumé des prêts en attente de versement par mois",
"Loans Awaiting Disbursal Summary by Month(Pentaho)": "Résumé des prêts en attente de versement par mois (Pentaho)",
"Loans Awaiting Disbursal Summary(Pentaho)": "Résumé des prêts en attente de versement (Pentaho)",
"Loans Awaiting Disbursal(Pentaho)": "Prêts en attente de versement (Pentaho)",
"Loans Pending Approval": "Prêts en attente dapprobation",
"Loans Pending Approval(Pentaho)": "Prêts en attente dapprobation (Pentaho)",
"Obligation Met Loans Details": "Détails des prêts à obligation",
"Obligation Met Loans Details(Pentaho)": "Détails des prêts à obligation (Pentaho)",
"Obligation Met Loans Summary": "Résumé des prêts à obligation",
"Obligation Met Loans Summary(Pentaho)": "Résumé des prêts à obligation (Pentaho)",
"Portfolio at Risk": "Portefeuille à risque",
"Portfolio at Risk by Branch": "Portefeuille des risques par branche",
"Portfolio at Risk by Branch(Pentaho)": "Portefeuille des risques par branche (Pentaho)",
"Portfolio at Risk(Pentaho)": "Portefeuille à risque(Pentaho)",
"Rescheduled Loans": "Prêts réévalués",
"Rescheduled Loans(Pentaho)": "Prêts replanifiés (Pentaho)",
"Written-Off Loans": "Prêts irrécupérables",
"Written-Off Loans(Pentaho)": "Prêts irrécupérables (Pentaho)",
"Active Loan Summary per Branch": "Résumé des prêts actifs par branche",
"Balance Outstanding": "Solde exceptionnel",
"Collection Report": "Rapport de collecte",
"Disbursal Report": "Rapport de versement",
"Client Savings Summary": "Résumé des épargnes client",
"Savings Transactions": "Transactions dépargne",
"TxnRunningBalances(Pentaho)": "TxnRunningBalances(Pentaho)",
"day.monday": "Lundi",
"day.tuesday": "Mardi",
"day.wednesday": "Mercredi",
"day.thursday": "Jeudi",
"day.friday": "Vendredi",
"day.saturday": "Samedi",
"day.sunday": "Dimanche",
"RepaymentRescheduleType.same.day": "le même jour",
"RepaymentRescheduleType.move.to.next.working.day": "passer au prochain jour ouvré",
"RepaymentRescheduleType.move.to.next.repayment.meeting.day": "aller à la prochaine journée de remboursement",
"RepaymentRescheduleType.move.to.previous.working.day": "aller au jour ouvré précédent",
"label.heading.loan.foreclosure": "Saisie de prêt"
}

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@
"label.heading.activationdate": "Data dactivacion",
"label.heading.externalid": "Id extèrne",
"label.heading.summary": "Resumit",
"label.heading.products": "Produches",
"label.heading.products": "Produits",
"label.heading.branch": "Branca",
"label.heading.notes": "Nòtas",
"label.heading.closedaccount": "Compte tampat",
@ -183,6 +183,7 @@
"label.percentage": "Percentatge",
"label.outstanding.amount": "Montant impagat del prèst",
"label.and": "e",
"label.select": "-- Seleccionar --",
"label.error": "Error",
"error.login.failed": "Ensajatz tornarmai, vòstras informacions d'identificacion son pas validas",
"error.msg.command.unsupported": "Error de programacion : la comanda emesa es pas presa en carga.",
@ -202,9 +203,9 @@
"validation.msg.document.name.cannot.be.blank": "Picatz lo nom pel document.",
"resourceId.not.integer": "Lid deu èsser un entièr.",
"error.msg.resource.not.found": "La ressorsa demandada es pas disponibla.",
"error.msg.code.identifier.not.found": "Lo còde amb lidentificant `{{params[0].value}}` existís pas.",
"error.msg.code.identifier.not.found": "Lo còdi amb lidentificant `{{params[0].value}}` existís pas.",
"error.msg.configuration.property.invalid": "La proprietat de configuracion globala nomenada `{{params[0].value}}` existís pas.",
"error.msg.permission.code.invalid": "Lo drech de còde `{{params[0].value}}` existís pas.",
"error.msg.permission.code.invalid": "Lo dreit de còdi `{{params[0].value}}` existís pas.",
"error.msg.role.id.invalid": "Lo ròtle didentificant `{{params[0].value}}` existís pas.",
"error.msg.user.id.invalid": "Lutilizaire didentificant `{{params[0].value}}` existís pas.",
"error.msg.office.id.invalid": "Lo burèu didentificant `{{params[0].value}}` existís pas.",
@ -232,9 +233,9 @@
"label.anchor.paycharge": "Pagar los fraisses",
"label.input.paymentdate": "Data de pagament",
"label.heading.dashboard": "Tablèu de bòrd",
"label.heading.pendingtasks": "Prètzfaches en espèra",
"label.heading.pendingtasks": "Prètzfaits en espèra",
"label.heading.enteractivationdate": "Entrar la data dactivacion",
"label.heading.madeondate": "Fach a la data",
"label.heading.madeondate": "Fait a la data",
"label.heading.action": "Accion",
"label.heading.entity": "Entitat",
"label.heading.mifosxdashhome": "Tablèu de bòrd dacuèlh de MifosX",
@ -320,7 +321,7 @@
"label.button.day": "Jorn",
"label.button.signin": "Se connectar",
"label.button.resetPassword": "Reïnicializar lo senhal",
"label.button.viewpermissions": "Afichar los dreches",
"label.button.viewpermissions": "Afichar los dreits",
"label.selectaction": "Seleccionar una accion",
"label.selectentity": "Seleccionar una entitat",
"label.nodata": "Pas de donadas",
@ -452,7 +453,7 @@
"label.heading.chartofaccounts": "Plan comptable",
"label.heading.closingentries": "Escrituras de clausura",
"label.heading.accountingrules": "Règlas comptablas",
"label.heading.glcode": "Còde GL",
"label.heading.glcode": "Còdi GL",
"label.heading.acctype": "Tipe de compte",
"label.heading.manualentriesallowed": "Escrituras manualas autorizadas",
"label.heading.usedas": "Utilizat coma",
@ -497,13 +498,13 @@
"label.input.creditruletype": "Tipe de règla de crèdit",
"label.input.debitruletype": "Tipe de règla de debit",
"label.input.account": "Compte",
"label.input.glcode": "Còde GL",
"label.input.glcode": "Còdi GL",
"label.input.accounttype": "Tipe de compte",
"label.input.tag": "Balisa",
"label.input.accountusage": "Utilizacion del compte",
"label.input.parent": "Parent",
"label.input.entryid": "ID descritura",
"label.input.filterbyAccountGlcodeAccounttype": "Filtrar per Compte/Còde GL/Tipe de compte",
"label.input.filterbyAccountGlcodeAccounttype": "Filtrar per Compte/Còdi GL/Tipe de compte",
"journalEntryType.credit": "Crèdit",
"journalEntrytType.debit": "Debit",
"label.button.listview": "Vista lista",
@ -575,7 +576,7 @@
"loanOfficerIdSelectAll": "Seleccionar lagent de crèdit",
"currencyIdSelectAll": "Seleccionar la devisa",
"fundIdSelectAll": "Seleccionar los fonses",
"loanProductIdSelectAll": "Seleccionar lo produch de prèst",
"loanProductIdSelectAll": "Seleccionar lo produit de prèst",
"loanPurposeIdSelectAll": "Seleccionar l'objècte de prèst",
"parTypeSelect": "Seleccionar lo tipe de PAR",
"label.heading.duecollection": "Escasença/Collècta",
@ -597,7 +598,7 @@
"label.heading.dob": "Data de Naissença",
"label.heading.address": "Adreça",
"label.heading.city": "Vila",
"label.heading.zip": "Còde postal",
"label.heading.zip": "Còdi postal",
"label.heading.mobile": "Numèro de mobil",
"label.heading.residence": "Domicili",
"label.heading.joindate": "Data dinscripcion",
@ -635,7 +636,7 @@
"label.input.dob": "Data de naissença",
"label.input.address": "Adreça",
"label.input.city": "Vila",
"label.input.zip": "Còde postal",
"label.input.zip": "Còdi postal",
"label.input.mobile": "Numèro de mobil",
"label.input.residence": "Domicili",
"label.input.purpose": "Objectiu",
@ -675,14 +676,14 @@
"label.input.chargecalculation": "Calcul de las cargas",
"label.input.dueon": "Degut lo",
"label.input.applicant": "Demandaire",
"label.input.product": "Produch",
"label.input.product": "Produit",
"label.input.fieldofficer": "Agent de terrenh",
"label.input.submittedon": "Somés lo",
"label.input.interestrate": "Taus dinterès",
"label.input.repayments": "# de remborsaments",
"label.input.accnum": "Compte#",
"label.input.checknumber": "Numèro de chèc",
"label.input.routingcode": "Còde dacaminament",
"label.input.routingcode": "Còdi dacaminament",
"label.input.receiptnumber": "Recebut#",
"label.input.banknumber": "Banca#",
"label.input.loanofficer": "Agent de crèdit",
@ -757,7 +758,7 @@
"label.text": "Tèxte",
"label.columntypeerr": "Lo tipe necessita",
"label.columnnameerr": "Lo nom de colomna necessita",
"error.msg.codeValue.in.use": "La valor del còde es utilizada",
"error.msg.codeValue.in.use": "La valor del còdi es utilizada",
"label.heading.accounting": "Comptabilitat",
"label.heading.configurefundsourcesforpaymentchannels": "Configurar las fonts de fonses pels canals de pagament",
"label.heading.liabilities": "Passiu",
@ -768,7 +769,7 @@
"label.heading.interestRateCycleVariations": "Taus d'interès pel cicle de l'empruntaire",
"label.heading.numerOfRepaymentCycleVariations": "# de remborsaments pel cicle de l'empruntaire",
"label.input.savingproduct": "Seleccionar un compte destalvi",
"label.menu.selectsavingproduct": "Seleccionar un produch destalvi",
"label.menu.selectsavingproduct": "Seleccionar un produit destalvi",
"label.input.opensavingsproduct": "Dobrir un compte destalvi",
"label.input.feefrequency": "Frequéncia dels fraisses",
"label.input.addfeefrequency": "Apondre una frequéncia de fraisses",
@ -777,5 +778,14 @@
"label.selectoverduecharge": "Seleccionar una carga en retard",
"error.msg.charge.must.be.penalty": "La carga en retard deu èsser una penalitat",
"grace-on-penalty-posting": "Gràcia sus lafectacion de la penalitat",
"label.input.payspenaltyportion": "La carga de penalitat serà pagada amb aqueste remborsament"
"label.input.payspenaltyportion": "La carga de penalitat serà pagada amb aqueste remborsament",
"Balance Sheet": "Fuèlh de bilanç",
"Client Listing": "Lista dels clients",
"day.monday": "Diluns",
"day.tuesday": "Dimars",
"day.wednesday": "Dimècres",
"day.thursday": "Dijòus",
"day.friday": "Divendres",
"day.saturday": "Dissabte",
"day.sunday": "Dimenge"
}

View File

@ -0,0 +1,3 @@
{
"label.input.loanexternalid": "PF Code"
}

View File

@ -1052,5 +1052,12 @@
"label.heading.cashmgmt.cashier.txnDetails": "Detalhes",
"label.heading.cashmgmt.cashier.txnTotals": "Totais",
"label.input.teller.cashiertxn.txnDate": "Data",
"label.anchor.editExternalServicesConfiguration": "Editar a Configuração dos Serviços \nExternos"
"label.anchor.editExternalServicesConfiguration": "Editar a Configuração dos Serviços \nExternos",
"day.monday": "Segunda-feira",
"day.tuesday": "Terça-feira",
"day.wednesday": "Quarta-feira",
"day.thursday": "Quinta-feira",
"day.friday": "Sexta-feira",
"day.saturday": "Sábado",
"day.sunday": "Domingo"
}

View File

@ -9,7 +9,8 @@
"Robby",
"Liuxinyu970226",
"Hwangjy9",
"Alber85"
"Alber85",
"Verdy p"
]
},
"label.heading.name": "{{Identical|Name}}",
@ -86,6 +87,8 @@
"label.heading.outstandingamount": "{{identical|Loan balance}}",
"label.heading.dueamount": "{{Identical|Amount paid}}",
"label.heading.reset": "{{Identical|Reset}}",
"label.heading.dividends": "{{Identical|Dividend}}",
"label.heading.equity": "{{Identical|Equity}}",
"label.menu.selectloanofficer": "{{Identical|Select staff}}",
"label.menu.selectone": "{{Identical|Select one}}",
"label.anchor.delete": "{{Identical|Delete}}",
@ -141,6 +144,7 @@
"label.button.summary": "{{Identical|Summary}}",
"label.button.submit": "{{Identical|Submit}}",
"label.button.selectAll": "{{Identical|Select all}}",
"label.button.dividends": "{{Identical|Dividend}}",
"label.areyousure": "{{Identical|Are you sure?}}",
"label.requiredfield": "{{Identical|Required field}}",
"label.all": "{{Identical|All}}",
@ -208,6 +212,7 @@
"label.anchor.editclient": "{{Identical|Edit client}}",
"label.anchor.clientscreenreport": "{{Identical|Client screen report}}",
"label.anchor.reactivate": "{{Identical|Reactivate}}",
"label.input.documenttype": "{{Identical|Status}}",
"label.button.print": "{{Identical|Print}}",
"label.button.uploadpic": "attach or select or upload client's photo or portrait",
"label.button.reactivate": "{{Identical|Reactivate}}",
@ -465,6 +470,7 @@
"recurring.deposit.frequency.periodFrequencyType.weeks": "{{Identical|Week}}",
"recurring.deposit.frequency.periodFrequencyType.months": "{{Identical|Month}}",
"recurring.deposit.frequency.periodFrequencyType.years": "{{Identical|Year}}",
"validation.msg.savingsproduct.taxGroupId.cannot.be.blank": "",
"label.heading.createuser": "{{Identical|Create user}}",
"label.heading.permissions": "{{Identical|Permission}}",
"label.heading.edituser": "{{Identical|Edit user}}",
@ -496,6 +502,7 @@
"label.heading.clients": "{{Identical|Client}}",
"label.anchor.organization": "{{Identical|Organization}}",
"label.anchor.editrole": "{{Identical|Edit role}}",
"label.input.percentage": "{{Identical|Percentage}}",
"validation.msg.office.name.cannot.be.blank": "{{Identical|Name is mandatory}}",
"validation.msg.fund.name.cannot.be.blank": "{{Identical|Name is mandatory}}",
"validation.msg.staff.lastname.cannot.be.blank": "{{Identical|Last name is mandatory}}",
@ -553,6 +560,8 @@
"amortizationType": "{{Identical|Amortization}}",
"accountingRule": "{{Identical|Accounting rule}}",
"writeOffAccountId": "{{Identical|Writeoff account}}",
"clientIdentifierStatusType.inactive": "{{Identical|Inactive}}",
"clientIdentifierStatusType.active": "{{Identical|Active}}",
"label.button.addcode": "{{Identical|Add code}}",
"label.button.createdatatable": "{{Identical|Create data table}}",
"label.button.refresh": "{{Identical|Refresh}}",
@ -576,6 +585,7 @@
"validation.msg.code.name.cannot.be.blank": "{{Identical|Name is mandatory}}",
"validation.msg.code.value.name.cannot.be.blank": "{{Identical|Name is mandatory}}",
"validation.msg.role.name.cannot.be.blank": "{{Identical|Name is mandatory}}",
"label.tooltip.global.rounding-mode": "These are the [https://en.wikipedia.org/wiki/IEEE_floating_point#Rounding_rules standard IEEE rounding modes] used for computing or displaying values when not all decimals can be represented:\n* 0 : round up to the nearest upper value (towards +Infinity)\n* 1 : round down to the nearest lower value (towards -Infinity)\n* 2 : round the absolute value to the nearest upper value (towards -Infinity if negative, or +Infinity if positive)\n* 3 : round the absolute value to the nearest lower value (towards zero)\n* 4 : round to the nearest value, or round up the exact half values (towards +Infinity)\n* 5 : round to the nearest value, or round down the exact half values (towards -Infinity)\n* 6 : round to the nearest value, or round up or down the exact half value to the nearest even value\n\nThe two first modes (0 and 1) are generally not suitable for accounting as they are not symetric but they are used for some mathematical formulas (notably those using modular arithmetic).\n\nFor pricing, billing or tax reports, mode 3 (round down the absolute value) is generally used.\n\nFor currency conversion, mode 4 (round to the nearest value, or round up the exact half values) is most often used. Mode 5 is rarely used.\n\nThe last mode (6) is generally recommended for scientific computation in intermediate results, as it minimizes the average rounding errors. (It is usually the default rounding mode in programming languages).",
"label.heading.addproductmix": "{{Identical|Add product mix}}",
"label.heading.editproductmix": "{{Identical|Edit product mix}}",
"label.heading.productmix": "{{Identical|Product mix}}",
@ -602,6 +612,7 @@
"label.heading.interestratedetails.description": "{{Identical|Description}}",
"label.anchor.products": "{{Identical|Product}}",
"label.anchor.charges": "{{Identical|Charge}}",
"label.anchor.dividends": "{{Identical|Dividend}}",
"label.anchor.addproductmix": "{{Identical|Add product mix}}",
"label.add.row": "{{Identical|Add}}",
"label.remove.row": "{{Identical|Remove}}",
@ -624,11 +635,13 @@
"label.input.interestratechart.description": "{{Identical|Description}}",
"label.input.interestratechart.valid.to": "{{Identical|End date}}",
"label.input.days": "{{Identical|Day}}",
"label.input.equity": "{{Identical|Equity}}",
"label.button.top": "{{Identical|Top}}",
"label.mandatory": "{{Identical|Mandatory}}",
"chargeAppliesTo.loan": "{{Identical|Loan}}",
"chargeAppliesTo.savings": "{{Identical|Saving and deposit}}",
"chargeAppliesTo.client": "{{Identical|Client}}",
"chargeAppliesTo.shares": "{{Identical|Share}}",
"chargeCalculationType.flat": "{{Identical|Flat}}",
"chargeTimeType.disbursement": "{{Identical|Disbursement}}",
"chargeTimeType.savingsActivation": "{{Identical|Savings activation}}",
@ -787,5 +800,12 @@
"label.input.teller.cashiertxn.txnDate": "{{Identical|Date}}",
"label.input.teller.cashiertxn.txnAmount": "{{Identical|Amount}}",
"label.heading.Survey": "{{Identical|Survey}}",
"label.anchor.survey": "{{Identical|Survey}}"
"label.anchor.survey": "{{Identical|Survey}}",
"day.monday": "{{Identical|Monday}}",
"day.tuesday": "{{Identical|Tuesday}}",
"day.wednesday": "{{Identical|Wednesday}}",
"day.thursday": "{{Identical|Thursday}}",
"day.friday": "{{Identical|Friday}}",
"day.saturday": "{{Identical|Saturday}}",
"day.sunday": "{{Identical|Sunday}}"
}

View File

@ -73,6 +73,7 @@
"label.heading.fromdate": "Från datum",
"label.input.between": "mellan",
"label.heading.percentage": "Procent",
"label.heading.reset": "Återställ",
"label.menu.selectloanofficer": "Välj personal",
"label.menu.selectone": "Välj en",
"label.anchor.delete": "Radera",
@ -93,6 +94,7 @@
"label.input.notes": "Anteckningar",
"label.input.externalid": "Externt ID",
"label.input.active": "Aktiv",
"label.input.assignstaff": "Tilldela personal",
"label.input.description": "Beskrivning",
"label.input.repeat": "Upprepa",
"label.input.comments": "Kommentarer",
@ -108,7 +110,12 @@
"label.input.note": "Anteckning",
"label.input.language": "Språk",
"label.input.dateformat": "Datumformat",
"label.input.gender": "Kön",
"label.input.dateofbirth": "Födelsedatum",
"label.input.sqlSearch": "SQL-sökning",
"label.input.transfertype": "Överföringstyp",
"label.input.true": "Sant",
"label.input.false": "Falskt",
"label.button.previous": "Föregående",
"label.button.next": "Nästa",
"label.button.save": "Skicka",
@ -135,7 +142,12 @@
"label.button.more": "Mer",
"label.button.reject": "Avvisa",
"label.button.pay": "Betala",
"label.button.summary": "Sammanfattning",
"label.button.submit": "Skicka",
"label.button.selectAll": "Markera alla",
"label.button.deselectAll": "Avmarkera alla",
"label.button.validate": "Validera",
"label.button.pattern": "Mönster",
"label.belongsto": "Tillhör",
"label.memberof": "Medlem i",
"label.createdby": "Skapad av",
@ -150,7 +162,9 @@
"label.none": "Ingen",
"label.nodatafound": "Ingen data relaterad till sökparametrarna hittades.",
"label.mustbenumeric": "Måste vara numerisk",
"label.and": "och",
"label.today": "Idag",
"label.select": "Välj ett alternativ",
"label.error": "Fel",
"error.login.failed": "Var god försök igen. Dina inloggningsuppgifter är ogiltiga.",
"error.connection.failed": "Kunde inte ansluta till servern. Se till att du använder rätt inställningar.",
@ -208,11 +222,13 @@
"label.heading.memberof": "Medlem av",
"label.heading.firstname": "Förnamn",
"label.heading.lastname": "Efternamn",
"label.heading.fullname": "Namn",
"label.heading.mifosxclient": "Mifos X-klient",
"label.heading.mifosx": "Mifos X",
"label.heading.uptodate": "Mifos X är uppdaterad",
"label.heading.resources": "Resurser",
"label.heading.community": "Gemenskap",
"label.heading.contribute": "Bidra",
"label.heading.loginname": "Inloggningsnamn",
"label.heading.userprofile": "Användarprofil",
"label.heading.userid": "Användar-ID",
@ -228,6 +244,7 @@
"label.heading.help": "Hjälp",
"label.heading.language": "Språk",
"label.heading.primaryemail": "Primär e-post",
"label.heading.categoryname": "Kategorinamn",
"label.menu.office": "Kontor",
"label.anchor.startpage": "Startsida",
"label.anchor.homepage": "Hemsida",
@ -238,6 +255,7 @@
"label.anchor.home": "Hem",
"label.anchor.all": "Alla",
"label.anchor.loans": "Lån",
"label.anchor.savings": "Besparingar",
"label.anchor.funds": "Fonder",
"label.anchor.admin": "Administratör",
"label.anchor.reports": "Rapporter",
@ -251,17 +269,26 @@
"label.anchor.frequentpostings": "Frekventa inlägg",
"label.anchor.addjournalentries": "Lägg till journalinlägg",
"label.anchor.usermanual": "Användarmanual",
"label.anchor.developerzone": "Utvecklarzon",
"label.anchor.usersgroup": "Användargrupp",
"label.anchor.developergroup": "Utvecklargrupp",
"label.anchor.workingwithcode": "Arbetar med kod",
"label.anchor.donate": "Donera",
"label.anchor.irc": "IRC",
"label.anchor.dashboard": "Kontrollpanel",
"label.anchor.help": "Hjälp",
"label.anchor.about": "Om",
"label.anchor.advsearch": "Avancerad sökning",
"label.anchor.keyboardshortcut": "Kortkommandon",
"label.anchor.save": "Spara",
"label.input.searchbyuser": "Sök efter användare",
"label.input.searchactivities": "Sök aktiviteter",
"label.input.additionalinformation": "Ytterligare information",
"label.input.changelanguage": "Ändra språk:",
"label.search.scope.all": "Alla",
"label.search.scope.clients.and.clientIdentifiers": "Klienter",
"label.search.scope.groups.and.centers": "Grupper",
"label.search.scope.savings": "Besparingar",
"label.button.login": "Logga in",
"label.button.approve": "Godkänn",
"label.button.offices": "Kontor",
@ -273,10 +300,12 @@
"label.button.month": "Månad",
"label.button.day": "Dag",
"label.button.signin": "Logga in",
"label.button.resetPassword": "Återställ lösenord",
"label.button.viewpermissions": "Visa behörigheter",
"label.youneedtologintoaccessthisarea": "Du behöver logga in för att komma åt detta område",
"label.selectaction": "Välj åtgärd",
"label.selectentity": "Välj enhet",
"label.selectugdtemplate": "Välj UGD-mall",
"label.nodata": "Ingen data",
"label.notactivated": "Inte aktiverad",
"label.unassigned": "Otilldelad",
@ -292,26 +321,32 @@
"label.heading.addclientidentifier": "Lägg till klientidentifierare",
"label.heading.groupclosed": "Gruppen är stängd",
"label.heading.clientid": "Klient-ID",
"label.heading.numofloancycle": "Antal lånecykler",
"label.heading.createclient": "Skapa klient",
"label.heading.selectclientimage": "Välj klientbild",
"label.heading.deleteclientimage": "Radera klientbild",
"label.heading.selectclientsignature": "Välj klientsignatur",
"label.heading.clientsignature": "Klientsignatur",
"label.heading.clientscreenreport": "Kundens Skärmrapport",
"label.heading.clientno": "Klient #",
"label.anchor.clients": "Klienter",
"label.anchor.createclient": "Skapa klient",
"label.anchor.viewclient": "Visa klient",
"label.anchor.transferclient": "Överför klient",
"label.anchor.editclient": "Redigera klient",
"label.anchor.uploaddocument": "Ladda upp dokument",
"label.anchor.addclientidentities": "Lägg till klientidentiteter",
"label.anchor.reactivate": "Återaktivera",
"label.input.filterbynameaccno": "Filtrera efter namn/kontonummer/personal/kontor",
"label.input.filterbynameaccno": "Filtrera visning efter namn/klientnummer/personal/kontor",
"label.input.searchByNameAccNo": "Sök efter namn/mobilnummer/klientnummer/externtID/identifieringsnummer",
"label.input.selectclientimage": "Välj klientbild",
"label.input.selectfile": "Välj fil",
"label.input.documenttype": "Dokumenttyp",
"label.input.documenttype": "Status",
"label.input.uniqueidentification": "Unikt ID #",
"label.input.mobilenumber": "Mobilnummer",
"label.input.client.activationdate": "Aktiveringsdatum",
"label.input.clientName": "Klientnamn",
"label.input.clientId": "Klient-ID",
"label.button.createclient": "Skapa klient",
"label.button.print": "Skriv ut",
"label.button.savingdetails": "Spara uppgifter",
@ -322,8 +357,10 @@
"label.button.uploadpic": "Ladda upp klientbild",
"label.button.viewactiveloans": "Visa aktiva lån",
"label.button.viewactivesavings": "Visa aktiva besparingar",
"label.button.reactivate": "Återaktivera",
"label.button.ok": "OK",
"label.button.reset": "Återställ",
"label.button.clear": "Rensa",
"label.numofloancycles": "Antal låncykler",
"label.lastloanamount": "Sista lånebeloppet",
"label.numofactiveloans": "# av aktiva lån",
@ -585,6 +622,7 @@
"validation.msg.Guarantor.housePhoneNumber.format.is.invalid": "Hemtelefonnumrets format är ogiltigt.",
"label.heading.charges": "Kostnader",
"label.heading.repeatson": "Upprepas",
"label.heading.marketprice": "Marknadspris",
"label.input.charges": "Kostnader",
"label.input.product": "Produkt",
"label.input.daysinyears": "Dagar i året",
@ -594,8 +632,10 @@
"label.input.banknumber": "Banknummer",
"label.input.months": "månader",
"label.input.weeks": "veckor",
"label.input.todaysprice": "Dagens pris",
"label.totalwithdarawals": "Totala uttag",
"label.on": "på",
"label.survey": "Undersökning",
"savings.interest.rate.savingsPeriodFrequencyType.days": "Per dag",
"savings.interest.rate.savingsPeriodFrequencyType.weeks": "Per vecka",
"savings.interest.rate.savingsPeriodFrequencyType.months": "Per månad",
@ -764,6 +804,8 @@
"label.input.events": "Händelser",
"label.input.addcolumns": "Lägg till kolumner",
"label.input.accountType": "Kontotyp",
"clientIdentifierStatusType.inactive": "Inaktiv",
"clientIdentifierStatusType.active": "Aktiv",
"label.button.addcode": "Lägg till kod",
"label.button.addcodevalues": "Lägg till kodvärden",
"label.button.viewhistory": "Visa historik",
@ -915,5 +957,19 @@
"label.anchor.workingDays": "Arbetsdagar",
"label.heading.workingDays": "Arbetsdagar",
"label.input.workingDays": "Arbetsdagar",
"label.view.paymentTypes": "Hantera betalningsmetoder"
"label.view.paymentTypes": "Hantera betalningsmetoder",
"label.heading.Survey": "Undersökning",
"label.anchor.survey": "Undersökning",
"label.surveyName": "Undersökningsnamn",
"label.selectsurvey": "Välj undersökning",
"Savings Transactions": "Besparingstransaktioner",
"day.monday": "måndag",
"day.tuesday": "tisdag",
"day.wednesday": "onsdag",
"day.thursday": "torsdag",
"day.friday": "fredag",
"day.saturday": "lördag",
"day.sunday": "söndag",
"RepaymentRescheduleType.same.day": "samma dag",
"RepaymentRescheduleType.move.to.previous.working.day": "flytta till föregående arbetsdag"
}

View File

@ -189,6 +189,7 @@
"label.outstanding.amount": "Непогашена сума кредиту",
"label.and": "та",
"label.message.password.expired": "Термін дії вашого пароля закінчився, будь ласка, оновіть пароль",
"label.select": "--Вибір--",
"label.error": "Помилка",
"error.login.failed": "Будь ласка, спробуйте ще раз, у вас неприпустимі облікові дані.",
"error.msg.command.unsupported": "Програмна помилка: вжита команда не підтримується.",

View File

@ -12,9 +12,16 @@
"Linforest",
"Cdz",
"Jiang123aa",
"Xxoopiggy"
"Xxoopiggy",
"Winston6666",
"損齋"
]
},
"label.heading.totalshares": "总股份数",
"label.heading.sharenominalprice": "名义价格/单价",
"label.heading.shareperclient": "每位客户的股金",
"label.heading.suspenseaccount": "暂记帐户",
"label.heading.equityaccount": "股本帐号",
"label.heading.name": "名称",
"label.heading.accnum": "账户 #",
"label.heading.staff": "职员",
@ -122,6 +129,20 @@
"label.input.defaultfloatinginterestrate": "默认利率",
"label.input.maxfloatinginterestrate": "最大利率",
"label.input.differentialrate": "差率",
"label.heading.sharesaccoverview": "股金帐户概述",
"label.heading.shareaccount": "股金账户#",
"label.heading.approvedshares": "通过的股金",
"label.heading.purchasedsharesoverview": "交易概述",
"label.heading.applyadditionalshares": "申请额外股金",
"label.heading.rejectadditionalshares": "赎回股份",
"label.heading.sharesapplication": "股金账户申请",
"label.heading.dividendperiodstartdate": "红利期开始日期",
"label.heading.dividendamount": "红利金额",
"label.heading.shareequity": "股权",
"label.heading.dividends": "股息",
"label.heading.amountreceivedorreturned": "已收金额/已退金额",
"label.heading.totalamountreceivedorreturned": "应收/退回的总金额",
"label.heading.equity": "股权",
"label.menu.selectloanofficer": "选择职员",
"label.menu.selectone": "选择一个",
"label.menu.constitution": "选择机构",
@ -201,6 +222,7 @@
"label.button.staffassignmenthistory": "职员分配历史记录",
"label.button.activate": "激活",
"label.button.newloan": "新贷款",
"label.button.newshareaccount": "新股金帐户",
"label.button.transferclient": "转移客户",
"label.button.newsaving": "新存款",
"label.button.newcharge": "添加费用",
@ -235,6 +257,8 @@
"label.button.addjournalentry": "添加日记记录",
"label.button.validate": "证实",
"label.button.pattern": "模式",
"label.button.dividends": "股息",
"label.button.postdividends": "张贴股息",
"label.uniquelyidentifiedwithid": "通过id唯一地识别",
"label.belongsto": "属于",
"label.memberof": "成员隶属",
@ -258,6 +282,7 @@
"label.today": "今天",
"label.relDate": "Mifos X发布日期",
"label.relVersion": "发行版本:",
"label.select": "选择一个选项",
"label.error": "错误",
"error.login.failed": "请重试,您的凭据无效。",
"error.connection.failed": "不能连接服务器。请确保您使用了正确的设置。",
@ -430,11 +455,11 @@
"label.anchor.closingentries": "关闭条目",
"label.anchor.usermanual": "用户手册",
"label.anchor.functionalspec": "功能规范",
"label.anchor.developerzone": "开发者区",
"label.anchor.usersgroup": "用户组",
"label.anchor.developerzone": "开发人员区域",
"label.anchor.usersgroup": "用户组",
"label.anchor.developergroup": "开发人员小组",
"label.anchor.keydesignprinciples": "主要设计原则",
"label.anchor.workingwithcode": "参与代码开发",
"label.anchor.workingwithcode": "处理代码",
"label.anchor.donate": "捐款",
"label.anchor.irc": "线上中继聊天",
"label.anchor.dashboard": "综合信息面板",
@ -514,7 +539,7 @@
"label.input.searchByNameAccNo": "依名称/移动#/客户#/外部ID/标识符#查找",
"label.input.selectclientimage": "选择客户图像",
"label.input.selectfile": "选择文件",
"label.input.documenttype": "文档类型",
"label.input.documenttype": "状态",
"label.input.uniqueidentification": "唯一id号码",
"label.input.mobilenumber": "移动电话号码",
"label.input.client.activationdate": "激活日期",
@ -546,6 +571,8 @@
"label.button.ok": "确认",
"label.button.reset": "重置",
"label.button.clear": "清除",
"label.button.viewclosedshares": "查看已关闭的股金",
"label.button.viewactiveshares": "查看活跃股金",
"label.numofloancycles": "贷款周期数",
"label.lastloanamount": "上次贷款金额",
"label.numofactiveloans": "活跃贷款:",
@ -586,7 +613,7 @@
"error.msg.client.not.active.exception": "id为`{{params[0].value}}`的客户尚未激活。",
"validation.msg.clientIdentifier.documentKey.cannot.be.blank": "必须提供识别码。",
"validation.msg.clientIdentifier.documentTypeId.cannot.be.blank": "必须提供一个身份文件类型。",
"error.msg.clientIdentifier.type.duplicate": "该客户的类型为`{{params[0].value}}`的客户身份文件已存在。",
"error.msg.clientIdentifier.type.duplicate": "类型为“{{params[0].value}}”的活跃客户身份文档已在此客户端存在。",
"error.msg.clientIdentifier.identityKey.duplicate": "来自办公室{{params[1].value}}的客户“{{params[0].value}}”已经有了一个唯一识别键值为{{params[3].value}}的{{params[2].value}}。",
"error.msg.image.type.upload": "只接受类型为GIF、PNG或JPG的文件。",
"validation.msg.clientImage.cannot.be.blank": "请选择要上传的图片。",
@ -670,6 +697,7 @@
"label.selectgroup": "选择组",
"label.selectstaff": "选择员工",
"label.active": "激活",
"label.selectshareproduct": "选择股金产品",
"groupingStatusType.pending": "待处理",
"groupingStatusType.active": "活跃",
"groupingStatusType.closed": "已关闭",
@ -863,6 +891,7 @@
"cashAtTeller": "出纳员/收银员现金",
"liabilityTransfer": "债务转移",
"fundSource": "基金来源",
"payableDividends": "应付股息",
"label.thesearepredefinedpostings": "这些都是预定义的记账",
"label.manualjournalentrytransactionsrecordedinajournal": "日志中记录的手动日志条目交易",
"label.advancesearchoptionforjournalentries": "日记帐的高级搜索选项",
@ -1189,6 +1218,7 @@
"label.input.approvedOnDate": "通过于",
"label.input.rejectedOnDate": "拒绝于",
"label.input.submittedOnDate": "提交于",
"label.input.applicationdate": "申请日期",
"label.button.addloancharge": "添加贷款费用",
"label.button.addcollateral": "添加抵押品",
"label.button.guarantor": "担保人",
@ -1210,6 +1240,7 @@
"label.button.newrepaymentschedule": "查看新的还款计划",
"label.button.reschedule": "重新计划",
"label.button.recreate": "重新创建",
"label.button.foreclosure": "法院拍卖房屋",
"label.selectpurpose": "选择用途",
"label.selectloanproduct": "选择贷款产品",
"label.selectsavingsofficer": "选择储蓄专员",
@ -1303,8 +1334,20 @@
"label.heading.activatedon": "激活于",
"label.heading.enforceMinRequiredBalance": "强制最低余额",
"label.heading.minRequiredBalance": "最低余额",
"label.heading.withholdtax": "预扣税是否使用",
"label.heading.withholdtaxgroup": "预扣税组",
"label.heading.marketprice": "市场价格",
"label.heading.shareapplication": "股金申请",
"label.heading.approveshareaccount": "批准股金账户",
"label.heading.rejectshareaccount": "拒绝股金账户",
"label.heading.activateshareaccount": "激活股金账户",
"label.heading.undoapproveshareaccount": "撤销对股金账户的批准",
"label.heading.requesteddate": "申请日期",
"label.heading.closeshareaccount": "关闭股金账户",
"label.anchor.editsavingapplication": "编辑储蓄应用",
"label.anchor.editfixeddepositapplication": "编辑定期存款应用",
"label.anchor.sharesapplication": "股金申请",
"label.anchor.viewshareaccount": "查看股金帐户",
"label.input.charges": "费用",
"label.input.dueon": "到期",
"label.input.applicant": "申请人",
@ -1312,6 +1355,14 @@
"label.input.product": "产品",
"label.input.fieldofficer": "陆军军官",
"label.input.submittedon": "提交于",
"label.input.totalnumberofshares": "股金总数",
"label.input.totalsharestobeissue": "要发行的股金",
"label.input.nominalprice": "名义价格",
"label.input.capitalvalue": "资本价值",
"label.input.sharesperclient": "每位客户的股金",
"label.input.suspenseaccount": "暂记帐户",
"label.input.equityaccount": "股本帐号",
"label.input.requreddate": "申请日期",
"label.input.daysinyears": "年中一天",
"label.input.daysinmonth": "月内一日",
"label.input.savingaccountapprovedOnDate": "通过于",
@ -1334,6 +1385,12 @@
"label.input.onAccountClosure": "动作",
"label.input.enforceMinRequiredBalance": "强制最低余额",
"label.input.minRequiredBalance": "最低余额",
"label.input.withholdtax": "预扣税是否使用",
"label.input.requesteddate": "申请日期",
"label.input.dividendperiodstartdate": "红利期开始日期",
"label.input.dividendperiodenddate": "红利期结束日期",
"label.input.dividendamount": "红利金额",
"label.input.todaysprice": "今日价格",
"label.button.undo": "撤销",
"label.button.addcharge": "添加费用",
"label.button.undoapproval": "撤销批准",
@ -1344,10 +1401,20 @@
"label.button.inactivatecharge": "不活跃费用",
"label.button.showActiveCharges": "活动费用",
"label.button.showInactiveCharges": "不活跃的费用",
"label.button.disableWithHoldTax": "停用预扣税",
"label.button.enableWithHoldTax": "启用预扣税",
"label.button.applyadditionalshares": "申请额外股金",
"label.button.rejectadditionalshares": "拒绝额外股金",
"label.button.redeemshares": "赎回股份",
"label.selectcharge": "选择费用",
"label.selectsavingproduct": "选择储蓄产品",
"label.totalwithdarawals": "提款总额:",
"label.interestEarnedNotPosted": "挣取未过帐的利息",
"label.overdraftInterestNotPosted": "未过帐的透支利息",
"label.noofdaysinyear": "年中一天#",
"label.subStatus": "子状态",
"label.daysToInactive": "不活跃之前剩余日",
"label.daysToEscheat": "归还财产日期",
"label.annualfee": "年费",
"label.on": "在",
"label.maximumdepositterm": "最大存款期限",
@ -1364,8 +1431,14 @@
"label.account.recurring.deposit.amount": "循环存款金额",
"label.account.deposit.frequency": "存款频率",
"label.account.closed.on.date": "关闭日期",
"label.heading.interest.calculation.date": "利息重新计算日期",
"label.tooltip.totalshares": "一款产品提供的股金总数",
"label.tooltip.nominalprice": "每笔股金的单价/名义价格",
"label.tooltip.capitalvalue": "总资本价值",
"label.tooltip.marketprice": "每股价格",
"label.tooltip.fixeddepositproduct.calcmethod": "用于计算利息的方法。",
"label.tooltip.recurringdepositproduct.ismandatory": "值识别循环存款是否强制或自愿。",
"label.tooltip.marketpriceaddition": "添加带日期范围的未来股票价值",
"savings.interest.rate.savingsPeriodFrequencyType.days": "每天",
"savings.interest.rate.savingsPeriodFrequencyType.weeks": "每周",
"savings.interest.rate.savingsPeriodFrequencyType.months": "每月",
@ -1423,6 +1496,7 @@
"validation.msg.savingsaccount.transaction.invalid.charge.amount.paid.in.access": "支付金额不应多于未偿还的应付金额。",
"validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due": "当费用到期时,不允许费用失活",
"validation.msg.recurringdepositaccount.mandatoryRecommendedDepositAmount.cannot.be.blank": "必须提供循环存款金额。",
"validation.msg.savingsproduct.taxGroupId.cannot.be.blank": "需要税务组以获取持有税",
"label.heading.createuser": "创建用户",
"label.heading.permissions": "权限",
"label.heading.edituser": "编辑用户",
@ -1473,6 +1547,12 @@
"label.heading.managefunds": "管理资金",
"label.heading.todate": "截止日",
"label.heading.officeName": "办公室名字",
"label.heading.createtaxcomponent": "创建税金成分",
"label.heading.edittaxcomponent": "编辑税金成分",
"label.heading.createtaxgroup": "创建税务组",
"label.heading.edittaxgroup": "编辑税务组",
"label.heading.viewtaxgroup": "查看税务组",
"label.heading.taxcomponent": "税金成分",
"label.anchor.organization": "组织",
"label.anchor.bulkjlgloanapplication": "大量JLG贷款申请",
"label.anchor.manageemployees": "管理员工",
@ -1485,21 +1565,40 @@
"label.anchor.manageoffices": "管理办公室",
"label.anchor.editrole": "编辑角色",
"label.anchor.standinginstruction.history": "持续说明历史",
"label.anchor.createtaxcomponent": "创建税金成分",
"label.anchor.edittaxcomponent": "编辑税金成分",
"label.anchor.managetaxconfigurations": "管理税金配置",
"label.anchor.managetaxgroup": "管理税务组",
"label.anchor.createtaxgroup": "创建税务组",
"label.anchor.edittaxgroup": "编辑税务组",
"label.anchor.viewtaxgroup": "查看税务组",
"label.input.openedon": "开启于",
"label.input.parentoffice": "父办公室",
"label.input.fromAccountId": "来自帐户id",
"label.input.tosavingsofficer": "致储蓄专员",
"label.input.percentage": "百分比",
"label.input.debitaccounttype": "借记账户类型",
"label.input.creditaccounttype": "信用账户类型",
"label.input.debitaccount": "借记帐户",
"label.input.creditaccount": "信用帐户",
"label.input.taxcomponents": "税金成分",
"label.input.taxcomponent": "税金成分",
"label.input.taxgroup": "税务组",
"label.button.createholiday": "创建假日",
"label.button.createoffice": "创建办公室",
"label.button.addedit": "添加/编辑",
"label.addnewofficeormodifyordeactivateofficeormodifyofficeheirarchy": "添加新的办公室或修改/停用现有办公室或修改办公室层级",
"label.aemployeerepresentsloanofficerswithnoaccesstosystem": "一位雇员代表信贷员而没有系统访问权",
"label.view.standinginstructions.history.logging": "查看记录的标准指令历史",
"label.view.taxcomponent": "定义税金成分",
"validation.msg.staff.lastname.cannot.be.blank": "必须提供姓。",
"validation.msg.staff.firstname.cannot.be.blank": "必须提供名。",
"validation.msg.staff.officeId.cannot.be.blank": "办公室是强制的。",
"validation.msg.staff.officeId.not.greater.than.zero": "无效的办公室。",
"error.msg.currency.currencyCode.inUse": "您在尝试移除的货币正在使用中",
"validation.msg.tax.component.percentage.is.greater.than.max": "百分比应小于100",
"validation.msg.tax.group.endDate.can.not.modify.end.date.once.updated": "不支持结束日期修改",
"validation.msg.tax.group.total.percentage.is.greater.than.max": "组的总百分比在任何时间点都必须少于100",
"label.heading.text": "文本",
"label.heading.addcode": "添加代码",
"label.heading.codename": "代号",
@ -1607,6 +1706,8 @@
"incomeFromFeeAccountId": "来自付费账户的收入",
"fundSourceAccountId": "资金来源账户",
"writeOffAccountId": "注销账户",
"clientIdentifierStatusType.inactive": "不活跃",
"clientIdentifierStatusType.active": "激活",
"label.button.addcode": "添加代码",
"label.button.addhook": "创建钩子",
"label.button.createdatatable": "创建数据表",
@ -1695,6 +1796,9 @@
"label.heading.interestratedetails.period.type": "周期类型",
"label.heading.interestratedetails.interest": "利息",
"label.heading.interestratedetails.description": "描述",
"label.heading.chargeamount": "费用总额",
"label.heading.sharereference": "股票参考",
"label.heading.sharecontrol": "股金暂收控制",
"label.anchor.products": "产品",
"label.anchor.charges": "费用",
"label.anchor.floatingrates": "浮动利率",
@ -1702,6 +1806,11 @@
"label.anchor.floatingrate": "浮动利率",
"label.anchor.loanproducts": "贷款产品",
"label.anchor.savingproducts": "储蓄产品",
"label.anchor.shareproducts": "股份产品",
"label.anchor.createshareproduct": "创建股金产品",
"label.anchor.editshareproduct": "编辑股金账户",
"label.anchor.dividends": "股息",
"label.anchor.dividendlisting": "红利细节",
"label.anchor.createsavingproduct": "创建储蓄产品",
"label.anchor.editsavingproduct": "编辑储蓄产品",
"label.anchor.addproductmix": "添加产品组合",
@ -1753,15 +1862,22 @@
"validation.msg.loanproduct.recalculationRestFrequencyInterval.cannot.be.blank": "重新计算频率区间为必填项",
"validation.msg.loanproduct.recalculationRestFrequencyType.cannot.be.blank": "重新计算频率类型为必填项",
"label.input.loan.account.moves.out.of.npa.only.on.arrears.completion": "只在所有欠款均已清算完后再移动账户的NPA",
"label.input.sharereference": "股金参考",
"label.input.sharecontrol": "股金暂收控制",
"label.input.equity": "股权",
"label.button.createshareproduct": "创建股金产品",
"label.button.top": "顶部",
"label.button.createprovisioning.entry": "创建准备金提取记录",
"label.button.createfloatingrate": "创建浮动利率",
"label.button.createtaxgroup": "创建税务组",
"label.addnewloanproductor": "添加新的贷款产品或修改/叫停现有贷款产品",
"label.addnewsavingproductor": "添加新的存款产品或修改/叫停现有存款产品",
"label.addnewshareproductor": "添加新的股金产品或修改/叫停现有股金产品",
"label.mandatory": "强制的",
"chargeAppliesTo.loan": "贷款",
"chargeAppliesTo.savings": "储蓄与存款",
"chargeAppliesTo.client": "客户端",
"chargeAppliesTo.shares": "股份",
"chargeCalculationType.flat": "平地",
"LoanProductValueConditionType.equal": "=",
"LoanProductValueConditionType.greaterThan": ">",
@ -1776,6 +1892,7 @@
"chargeCalculationType.percent.of.interest": "%利息",
"chargepaymentmode.regular": "正常模式",
"chargepaymentmode.accounttransfer": "账户转账方式",
"validation.msg.charge.chargeCalculationType.is.not.one.of.expected.enumerations": "选择的收费计算类型选项无效。",
"validation.msg.loanproduct.transactionProcessingStrategyId.cannot.be.blank": "必须提供偿还策略。",
"validation.msg.savingsproduct.withdrawalFeeType.is.not.one.of.expected.enumerations": "必须提供取款费用周期类型。",
"validation.msg.savingsproduct.annualFeeAmount.cannot.be.blank": "必须提供年费金额。",
@ -2015,5 +2132,32 @@
"label.heading.Survey": "调查",
"label.anchor.survey": "调查",
"label.surveyName": "调查名称",
"label.selectsurvey": "选择调查"
"label.selectsurvey": "选择调查",
"label.heading.escheatLiability": "归还财产责任",
"label.input.escheatLiability": "归还财产责任",
"label.heading.lastActive": "最近活跃",
"Loan Transaction Receipt": "贷款交易收据",
"Balance Sheet": "资产负债表",
"Progress Report": "进度报告",
"Client Listing": "客户清单",
"Active Loans - Details": "激活贷款 - 详情",
"Active Loans - Summary": "激活贷款 - 摘要",
"Aging Detail": "老化详情",
"Branchwise Loan Summary": "Branchwise贷款摘要",
"Loans Awaiting Disbursal": "等待支出的贷款",
"Loans Awaiting Disbursal Summary by Month(Pentaho)": "按月排序的等待支出的贷款摘要Pentaho",
"Loans Awaiting Disbursal(Pentaho)": "等待支出的贷款Pentaho",
"Collection Report": "收集报告",
"Client Savings Summary": "客户端存款摘要",
"day.monday": "星期一",
"day.tuesday": "星期二",
"day.wednesday": "星期三",
"day.thursday": "星期四",
"day.friday": "星期五",
"day.saturday": "星期六",
"day.sunday": "星期日",
"RepaymentRescheduleType.same.day": "同日",
"RepaymentRescheduleType.move.to.next.working.day": "移至下一个工作日",
"RepaymentRescheduleType.move.to.previous.working.day": "移至上一个工作日",
"label.heading.loan.foreclosure": "贷款法院拍卖房屋"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

BIN
app/images/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

BIN
app/images/top_nav_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -2,175 +2,156 @@
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="icon" type="image/png" href="./images/favicon.ico" />
<title>{{ 'label.heading.mifosxclient' | translate }}</title>
<link rel="icon" type="image/png" href="./images/favicon.png" ng-if="!isFaviconPath" />
<link rel="icon" type="image/png" href="{{faviconPath}}" ng-if="isFaviconPath" />
<title>{{ 'label.heading.finflux' | translate }}</title>
<style>[data-ng-cloak] { display: none !important; }</style>
<link rel="stylesheet" href="./styles/dots.css" type="text/css">
</head>
<body class="preview whitebg" id="top" data-spy="scroll" data-target=".subnav" data-offset="80" data-ng-controller="MainController">
<body class="preview " id="top" data-spy="scroll" data-target=".subnav" data-offset="80" data-ng-controller="MainController">
<!--Loader -->
<div id="loaderWrapper" data-ng-hide="domReady" style="position: absolute; height: 100%; width: 100%; top: 0;">
<div id="loader" style="margin: 175px auto">
<img src="./images/MifosX_logo.png" alt="MifosX" style="min-width: 50px; width: 6%; margin: 0 auto" class="img-responsive">
<img src="./images/loader.gif" style="margin: 10px auto" class="img-responsive">
<div id="loadrWrappeer" data-ng-hide="domReady">
<div class="loader">
<figure>
<div class="dot white"></div>
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</figure>
</div>
</div>
<div data-ng-hide="!domReady" data-ng-cloak>
<div >
<nav class="navbar navbar-fixed-top navbarColor" data-ng-hide="currentSession.user != null">
<div class="container-fluid">
<div class="col-md-6">
<a class="navbar-brand" href="http://www.confluxtechnologies.com/">
<img src="./images/top_nav_logo.png" alt="FINFLUX" class="img-responsive" ng-if="!isHeaderLogoPath">
<img src="{{headerLogoPath}}" alt="FINFLUX" class="img-responsive" ng-if="isHeaderLogoPath">
</a>
</div>
<div class="pull-right language">
<div class="btn-group" dropdown >
<button type="button" class="btn btn-primary dropdown-toggle" ng-disabled="disabled">
{{optlang.name}} <span class="caret"></span>
</button>
<ul class="dropdown-menu lang-dropdown">
<li ng-repeat="lang in langs">
<a href="#" ng-click="changeLang(lang, $event)">{{lang.name}}</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
<!-- Login Form -->
<div class="container well" data-ng-hide="currentSession.user != null" >
<div class="container" data-ng-hide="currentSession.user != null">
<div class="row form-search ng-pristine ng-valid paddedbottom" data-ng-form="loginForm" data-ng-controller="LoginFormController">
<div class="pull-right ">
{{ 'label.input.changelanguage' | translate }}
<div class="btn-group" dropdown>
<button type="button" class="btn btn-primary dropdown-toggle" ng-disabled="disabled">
{{optlang.name}} <span class="caret"></span>
</button>
<ul class="dropdown-menu lang-dropdown">
<li ng-repeat="lang in langs">
<a href="#" ng-click="changeLang(lang, $event)">{{lang.name}}</a>
</li>
</ul>
</div>
<div class="col-md-3"></div>
<div class="panel panel-default col-md-6 loginpanel">
<div class="row" align="center">
<br/>
<img src="./images/login_large_logo.png" alt="FINFLUX" ng-if="!isLargeLogoPath">
<img src="{{largeLogoPath}}" alt="FINFLUX" ng-if="isLargeLogoPath">
<!-- <h3>{{ 'label.heading.welcome.message' | translate }}</h3> -->
</div>
<br/><br/>
<div ng-hide="resetPassword">
<form class="form-inline pull-right" role="form">
<div data-ng-show="load" style="position: absolute; top: 50%; left: 48%; z-index: 1000;">
<img src="images/cubic_loader.gif" class="img-responsive">
</div>
<label class="error" data-ng-show="authenticationFailed"><strong>{{ authenticationErrorMessage | translate }}</strong></label>
<div class="form-group">
<input ng-autofocus="true" type="text" data-ng-model="loginCredentials.username" placeholder="{{ 'label.input.username' | translate }}" class="input-sm form-control" required id="uid">
</div>
<div class="form-group">
<input type="password" data-ng-model="loginCredentials.password" placeholder="{{ 'label.input.password' | translate }}" class="input-sm form-control" required id="pwd">
</div>
<button class="btn btn-success" type="submit" data-ng-click="login()" id="login-button">{{ 'label.button.signin' | translate }}</button>
</form>
</div>
<div ng-show="resetPassword">
<form class="form-inline pull-right" role="form">
<label><strong>{{ 'label.message.password.expired' | translate }}</strong></label>
<div class="form-group">
<input type="password" data-ng-model="passwordDetails.password" placeholder="{{ 'label.input.password' | translate }}" class="input-sm form-control" required id="password">
</div>
<div class="form-group">
<input type="password" data-ng-model="passwordDetails.repeatPassword" placeholder="{{ 'label.input.repeatpassword' | translate }}" class="input-sm form-control" required id="repeatPassword">
</div>
<button class="btn btn-success" type="submit" data-ng-click="updatePassword()" id="updatepassword-button">{{ 'label.button.resetPassword' | translate }}</button>
</form>
</div>
</div>
<div class="row col-md-8 col-lg-offset-2 paddedbottom">
<div class="col-md-3">
<img src="./images/MifosX_logo.png" alt="Mifos X" width="150" class="img-responsive"/>
</div>
<div class="col-md-9">
<h1>{{ 'label.heading.mifosx' | translate }}</h1>
<span>{{ 'label.heading.version' | translate }} {{ version }}</span>
<br /> <span>{{ 'label.heading.uptodate' | translate }}</span>
<br /> <span ng-bind-html="text"></span>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div style="border: 1px solid #DDDDDD;padding:15px;">
<div style="background-color: #F5F5F5;border-bottom: 1px solid #DDDDDD;padding: 10px 15px;margin: -15px -15px 15px;">
<strong>{{ 'label.heading.resources' | translate }}</strong>
<div class="panel-body" >
<div class="row form-search ng-pristine ng-valid" data-ng-form="loginForm" data-ng-controller="LoginFormController">
<div ng-hide="resetPassword">
<div class="col-md-2"></div>
<form class="form col-md-8" role="form">
<label class="error" data-ng-show="authenticationFailed"><strong>{{ authenticationErrorMessage | translate }}</strong></label>
<div class="form-group ">
<input ng-autofocus="true" type="text" data-ng-model="loginCredentials.username" placeholder="{{ 'label.input.username' | translate }}" class="input-sm form-control" required id="uid" style="border-radius: 5px;">
</div>
<div class="form-group ">
<input type="password" data-ng-model="loginCredentials.password" placeholder="{{ 'label.input.password' | translate }}" class="input-sm form-control" required id="pwd" style="border-radius: 5px;">
</div>
<div class="form-group" align="center">
<button class="btn btn-success btn-md" type="submit" data-ng-click="login()" id="login-button">{{ 'label.button.signin' | translate }}</button>
</div>
</form>
<div class="col-md-2"></div>
</div>
<ul>
<li><a target="https://mifosforge.jira.com/wiki/display/MIFOS/User+Manual" href="https://mifosforge.jira.com/wiki/display/MIFOS/User+Manual">{{ 'label.anchor.usermanual' | translate }}</a></li>
<li><a target="https://mifosforge.jira.com/wiki/pages/viewpage.action?pageId=14712842" href="https://mifosforge.jira.com/wiki/pages/viewpage.action?pageId=14712842">{{ 'label.anchor.functionalspec' | translate }}</a></li>
<li><a href="https://mifosforge.jira.com/wiki/display/MDZ/Welcome+in+the+Zone">{{ 'label.anchor.developerzone' | translate }}</a></li>
</ul>
</div>
</div>
<div class="col-md-4">
<div style="border: 1px solid #DDDDDD;padding:15px;">
<div style="background-color: #F5F5F5;border-bottom: 1px solid #DDDDDD;padding: 10px 15px;margin: -15px -15px 15px;">
<strong>{{ 'label.heading.community' | translate }}</strong>
<div ng-show="resetPassword">
<form class="form col-md-8" role="form">
<api-validate></api-validate>
<label><strong>{{ 'label.message.password.expired' | translate }}</strong></label>
<div class="form-group">
<input type="password" data-ng-model="passwordDetails.password" placeholder="{{ 'label.input.password' | translate }}" class="input-sm form-control" required id="password">
</div>
<div class="form-group">
<input type="password" data-ng-model="passwordDetails.repeatPassword" placeholder="{{ 'label.input.repeatpassword' | translate }}" class="input-sm form-control" required id="repeatPassword">
</div>
<div>
<button class="btn btn-success" type="submit" data-ng-click="updatePassword()" id="updatepassword-button">{{ 'label.button.resetPassword' | translate }}</button>
</div>
</form>
</div>
<ul>
<li><a target="https://groups.google.com/forum/#!forum/mifosusers" href="https://groups.google.com/forum/#!forum/mifosusers">{{ 'label.anchor.usersgroup' | translate }}</a></li>
<li><a target="https://groups.google.com/forum/#!forum/mifosdeveloper" href="https://groups.google.com/forum/#!forum/mifosdeveloper">{{ 'label.anchor.developergroup' | translate }}</a></li>
<li><a target="http://mifos.org/resources/community/communications/#mifos-irc" href="http://mifos.org/community/communications/mifos-irc">{{ 'label.anchor.irc' | translate }}</a></li>
</ul>
</div>
</div>
<div class="col-md-4">
<div style="border: 1px solid #DDDDDD;padding:15px;">
<div style="background-color: #F5F5F5;border-bottom: 1px solid #DDDDDD;padding: 10px 15px;margin: -15px -15px 15px;">
<strong>{{ 'label.heading.contribute' | translate }}</strong>
</div>
<ul>
<li><a target="https://mifosforge.jira.com/wiki/display/MDZ/Key+Design+Principles" href="https://mifosforge.jira.com/wiki/display/MDZ/Key+Design+Principles/">{{ 'label.anchor.keydesignprinciples' | translate }}</a></li>
<li><a target="https://mifosforge.jira.com/wiki/display/MDZ/Working+with+Code" href="http://sourceforge.net/projects/mifos/">{{ 'label.anchor.workingwithcode' | translate }}</a></li>
<li><a target="http://mifos.org/donate/" href="http://mifos.org/donate/">{{ 'label.anchor.donate' | translate }}</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-md-3"></div>
</div>
<!-- Navbar -->
<div ng-class="{fullscreen:true ,blockui:blockUI==true}" id="main" data-ng-hide="currentSession.user == null">
<div class="loading-widget-div" data-ng-show="blockUI">
<div id="circularG">
<div id="circularG_1" class="circularG">
</div>
<div id="circularG_2" class="circularG">
</div>
<div id="circularG_3" class="circularG">
</div>
<div id="circularG_4" class="circularG">
</div>
<div id="circularG_5" class="circularG">
</div>
<div id="circularG_6" class="circularG">
</div>
<div id="circularG_7" class="circularG">
</div>
<div id="circularG_8" class="circularG">
</div>
</div>
</div>
<div class="left-nav">
<ul class="nav nav-pills nav-stacked margin-nav">
<li><a class="black" href="#/help"><i class="icon-keyboard icon-large"></i>&nbsp;&nbsp;{{ 'label.anchor.keyboardshortcut' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/nav/offices"><i class="icon-compass icon-large"></i>&nbsp;&nbsp;{{ 'label.anchor.navigation' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/tasks"><i class="icon-check icon-large"></i>&nbsp;&nbsp;{{ 'label.anchor.tasks' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/entercollectionsheet"><i class="icon-tasks icon-large"></i>&nbsp;&nbsp;{{ 'label.anchor.collectionsheet' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/individualcollectionsheet"><i class="icon-tasks icon-large"></i>&nbsp;&nbsp;{{ 'label.anchor.individualcollectionsheet' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/freqposting"><i class="icon-repeat icon-large"></i>&nbsp;&nbsp;&nbsp;{{ 'label.anchor.frequentpostings' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/journalentry"><i class="icon-plus icon-large"></i>&nbsp;&nbsp;&nbsp;&nbsp;{{ 'label.anchor.addjournalentries' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/accounts_closure"><i class="icon-folder-close icon-large"></i>&nbsp;&nbsp;&nbsp;{{ 'label.anchor.closingentries' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/accounting_coa"><i class="icon-sitemap icon-large"></i>&nbsp;&nbsp;&nbsp;{{ 'label.heading.chartofaccounts' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/createclient"><i class="icon-user icon-large"></i> + {{ 'label.anchor.client' | translate}} </a></li>
<li class="divider"></li>
<li><a class="black" href="#/creategroup"><i class="icon-group icon-large"></i> + {{ 'label.anchor.group' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" href="#/createcenter"><i class="icon-map-marker icon-large"></i> + {{ 'label.anchor.center' | translate}}</a></li>
<li class="divider"></li>
<li><a class="black" ng-click= "helpf()" ><i class="icon-question-sign icon-large"></i>&nbsp;&nbsp;&nbsp;{{ 'label.anchor.help' | translate }}</a></li>
<div class="left-nav tooltip-wide">
<ul class="nav nav-stacked margin-nav">
<li><a class="black" href="#/richdashboard"><i class="icon-bar-chart icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.heading.dashboard' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/nav/offices" ><i class="icon-compass icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.navigation' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/tasks" ><i class="icon-check icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.tasks' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/entercollectionsheet" ><i class="icon-list-alt icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.collectionsheet' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/individualcollectionsheet" ><i class="icon-sitemap icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.individualcollectionsheet' | translate}}"></i></a></li>
<li class="divider"></li>
<li><hr/></li>
<li><a class="black" href="#/createclient" ><i class="icon-user icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.client' | translate}}"></i> </a></li>
<li class="divider"></li>
<li><a class="black" href="#/creategroup" ><i class="icon-group icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.group' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/createcenter" ><i class="icon-map-marker icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.center' | translate}}"></i></a></li>
<li class="divider"></li>
<li><hr/></li>
<li><a class="black" href="#/freqposting" ><i class="icon-repeat icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.frequentpostings' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/journalentry" ><i class="icon-plus icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.addjournalentries' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/accounts_closure"><i class="icon-folder-close icon-large" data-toggle="tooltip" tooltip-placement="right" tooltip="{{ 'label.anchor.closingentries' | translate}}"></i></a></li>
<li class="divider"></li>
<li><hr/></li>
<li><a class="black" href="#/collateralvaluecalculator"><i class="ng-scope icon-indent-right icon-large" tooltip-placement="right" tooltip="{{ 'label.calculatecollateralvalue' | translate}}"></i></a></li>
<li class="divider"></li>
<li><a class="black" href="#/searchpledge"><i class="ng-scope icon-search icon-large" tooltip-placement="right" tooltip="{{ 'label.anchor.searchpledge' | translate}}"></i></a></li>
</ul>
</div>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container-fluid container">
<nav class="navbar navbar-inverse navbar-fixed-top navigationhome" role="navigation">
<div class="container-fluid container">
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<a class="brand" href="#/home"><img src="./images/MifosX_logoSmall.png" alt="Mifos X" height="20"></a>
<a class="brand" href="#/home">
<img src="./images/top_nav_logo.png" alt="FINFLUX" ng-if="!isHeaderLogoPath">
<img src="{{headerLogoPath}}" alt="FINFLUX" ng-if="isHeaderLogoPath">
</a>
<ul class="nav navbar-nav" id="main-menu-left">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" ng-class="{ activate: isActive('clients') }" href="#"><i class="icon-group"></i> {{ 'label.anchor.clients' | translate }}<b class="caret"></b></a>
@ -178,6 +159,7 @@
<li><a href="#/clients" has-permission='READ_CLIENT'>{{ 'label.anchor.clients' | translate }}</a></li>
<li><a href="#/groups" has-permission='READ_GROUP'>{{ 'label.anchor.groups' | translate }}</a></li>
<li><a href="#/centers" has-permission='READ_CENTER'>{{ 'label.anchor.centers' | translate }}</a></li>
<li><a href="#/villages" has-permission='READ_VILLAGE'>{{ 'label.anchor.villages' | translate }}</a></li>
</ul>
</li>
<li><a ng-class="{ activate: isActive('acc') }" href="#/accounting"><i class="icon-money"></i> {{ 'label.anchor.accounting' | translate }}</a></li>
@ -190,6 +172,7 @@
<li><a href="#/reports/savings" has-permission='READ_REPORT'>{{ 'label.anchor.savings' | translate }}</a></li>
<li><a href="#/reports/funds" has-permission='READ_REPORT'>{{ 'label.anchor.funds' | translate }}</a></li>
<li><a href="#/reports/accounting" has-permission='READ_REPORT'>{{ 'label.anchor.accounting' | translate }}</a></li>
<li><a href="#/reports/custom" has-permission='READ_REPORT'>{{ 'label.anchor.customreport' | translate }}</a></li>
<li><a href="#/xbrl" has-permission='READ_REPORT'>{{ 'label.anchor.xbrl' | translate }}</a></li>
</ul>
</li>
@ -203,12 +186,13 @@
<li><a href="#/templates" has-permission='READ_TEMPLATE'>{{ 'label.anchor.templates' | translate }}</a></li>
</ul>
</li>
</ul>
</ul>
<ul class="nav navbar-nav navbar-right" id="main-menu-right">
<li class="dropdown" id="user-menu">
<a id="user-dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#"> {{currentSession.user.name}}<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a id="help" ng-click="helpf()"><i class="icon-question-sign"></i> {{ 'label.anchor.help' | translate }}</a></li>
<li><a class="black" href="#/help"><i class="icon-keyboard"></i> {{ 'label.anchor.keyboardshortcut' | translate}}</a></li>
<li><a href="#/profile"><i class="icon-user"></i> {{ 'label.anchor.profile' | translate }}</a></li>
<li><a href="#/usersetting"><i class="icon-cog"></i> {{ 'label.anchor.settings' | translate }}</a></li>
<li><a id="logout" data-ng-click="logout()"><i class="icon-off"></i> {{ 'label.anchor.logout' | translate }}</a></li>
@ -216,19 +200,7 @@
</li>
</ul>
<form ng-submit="search()" class="navbar-form navbar-right ng-pristine ng-valid">
<div class="input-group" style="width:250px">
<div class="input-group-btn search-panel">
<button type="button" class="btn btn-warn dropdown-toggle" data-toggle="dropdown">
{{currentScope.name | translate}}<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li ng-repeat="searchScope in searchScopes" ng-click="changeScope(searchScope)">
<a href= "">{{ searchScope.name |translate}}</a>
</li>
</ul>
</div>
<input id ="search" type="text" class="form-control" data-ng-model="search.query" placeholder="{{'label.searchorpress'|translate}}">
</div>
<input id="search" data-ng-model="search.query" type="text" placeholder="{{ 'label.searchorpress' | translate }}" class="form-control search-query col-md-4" />
</form>
</div>
</div>
@ -237,42 +209,28 @@
<div>
<div class="row whitebg">
<div class="col-md-12 pull-right whitebg">
<div class="whitebg" ng-view></div>
<div class="whitebg" ng-view>
</div>
</div>
<!-- Footer -->
<footer>
<p align="center"> <a href="https://mifosforge.jira.com/browse/MIFOSX/component/11710/?selectedTab=com.atlassian.jira.jira-projects-plugin:component-changelog-panel" target="_blank"> {{'label.relVersion' | translate}} {{version}} | {{'label.relDate' | translate}} {{releasedate}} </a> </p>
</footer>
<footer>
<p align="center"> {{'label.relVersion' | translate}} {{version}} | {{'label.relDate' | translate}} {{releasedate}}</p>
</footer>
<hr>
</div> <!-- /row-fluid -->
</div><!-- /blockui-->
</div><!-- /container -->
</div>
</div>
<!-- Le javascript -->
<script type='text/javascript' data-main="scripts/loader.js" src='bower_components/requirejs/require.js'></script>
<!-- Placed at the end of the document so the pages load faster -->
<!-- devcode: !production -->
<!-- begin olark code -->
<!--<script data-cfasync="false" type='text/javascript'>/*<![CDATA[*/window.olark||(function(c){var f=window,d=document,l=f.location.protocol=="https:"?"https:":"http:",z=c.name,r="load";var nt=function(){
f[z]=function(){
(a.s=a.s||[]).push(arguments)};var a=f[z]._={
},q=c.methods.length;while(q--){(function(n){f[z][n]=function(){
f[z]("call",n,arguments)}})(c.methods[q])}a.l=c.loader;a.i=nt;a.p={
0:+new Date};a.P=function(u){
a.p[u]=new Date-a.p[0]};function s(){
a.P(r);f[z](r)}f.addEventListener?f.addEventListener(r,s,false):f.attachEvent("on"+r,s);var ld=function(){function p(hd){
hd="head";return["<",hd,"></",hd,"><",i,' onl' + 'oad="var d=',g,";d.getElementsByTagName('head')[0].",j,"(d.",h,"('script')).",k,"='",l,"//",a.l,"'",'"',"></",i,">"].join("")}var i="body",m=d[i];if(!m){
return setTimeout(ld,100)}a.P(1);var j="appendChild",h="createElement",k="src",n=d[h]("div"),v=n[j](d[h](z)),b=d[h]("iframe"),g="document",e="domain",o;n.style.display="none";m.insertBefore(n,m.firstChild).id=z;b.frameBorder="0";b.id=z+"-loader";if(/MSIE[ ]+6/.test(navigator.userAgent)){
b.src="javascript:false"}b.allowTransparency="true";v[j](b);try{
b.contentWindow[g].open()}catch(w){
c[e]=d[e];o="javascript:var d="+g+".open();d.domain='"+d.domain+"';";b[k]=o+"void(0);"}try{
var t=b.contentWindow[g];t.write(p());t.close()}catch(x){
b[k]=o+'d.write("'+p().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}a.P(2)};ld()};nt()})({
loader: "static.olark.com/jsclient/loader0.js",name:"olark",methods:["configure","extend","declare","identify"]});
/* custom configuration goes here (www.olark.com/documentation) */
olark.identify('9391-547-10-6064');/*]]>*/</script><noscript><a href="https://www.olark.com/site/9391-547-10-6064/contact" title="Send Feedback" target="_blank">Questions? Feedback?</a> powered by <a href="http://www.olark.com?welcome" title="Olark live chat software">Olark live chat software</a></noscript>
&lt;!&ndash; end olark code &ndash;&gt;
&lt;!&ndash; endcode &ndash;&gt;-->
</div>
</body>
</html>

View File

@ -1,5 +1,5 @@
{
"version": "16.05.01.RELEASE",
"releasedate": "13/May/2016"
"version": "16.05.18.beta.RELEASE",
"releasedate": "18/May/2016"
}

View File

View File

@ -1,34 +0,0 @@
{
"enableUIDisplayConfiguration": false,
"uiDisplayConfigurations": {
"loanAccount": {
"isHiddenField": {
"fundId": true,
"linkAccountId": true,
"createStandingInstruction": true,
"numberOfRepayments": true,
"repaymentEvery": true,
"repaymentFrequencyType": true,
"repaymentFrequencyNthDayType": true,
"repaymentFrequencyDayOfWeekType": true,
"interestChargedFromDate": true,
"repaymentsStartingFromDate": true,
"interestType": true,
"amortizationType": true,
"interestCalculationPeriodType": true,
"inArrearsTolerance": true,
"graceOnInterestCharged": true,
"transactionProcessingStrategyId": true,
"graceOnInterestPayment": true,
"graceOnArrearsAgeing": true
},
"isHiddenSection": {
"interestRecalculationSection": true,
"collateralSection": true
},
"isReadOnlyField": {
"loanTermFrequencyType": true
}
}
}
}

View File

@ -0,0 +1,127 @@
{
"enableUIDisplayConfiguration": true,
"uiDisplayConfigurations": {
"loanAccount": {
"isHiddenField": {
"fundId": false,
"linkAccountId": true,
"createStandingInstruction": true,
"numberOfRepayments": false,
"repaymentEvery": false,
"repaymentFrequencyType": true,
"repaymentFrequencyNthDayType": true,
"repaymentFrequencyDayOfWeekType": true,
"interestChargedFromDate": true,
"repaymentsStartingFromDate": false,
"interestType": true,
"amortizationType": true,
"interestCalculationPeriodType": true,
"inArrearsTolerance": true,
"graceOnInterestCharged": true,
"transactionProcessingStrategyId": true,
"graceOnInterestPayment": true,
"graceOnArrearsAgeing": true,
"syncDisbursementDateWithMeeting":true
},
"isMandatory":{
"externalId":false
},
"isHiddenSection": {
"interestRecalculationSection": true,
"collateralSection": true
},
"isReadOnlyField": {
"loanTermFrequencyType": true,
"interestChargedFromDate": true,
"displayName": true,
"interestRatePerPeriod": true,
"loanPurposeId": true,
"syncRepaymentsWithMeeting" : true,
"repaymentFrequencyType": true
},
"isAutoPopulate":{
"interestChargedFromDate": false
},
"isDefaultValue": {
"fundId": 45,
"syncDisbursementWithMeeting": false,
"paymentTypeId": 750,
"considerFutureDisbursmentsInSchedule": false
},
"isMandatory":{
"repaymentsStartingFromDate":true,
"loanPurposeId": true
}
},
"viewLoanAccountDetails":{
"isHiddenFeild":{
"viewReportButton":true,
"editTranches" :true
}
},
"clientAccount":{
"isMandatory":{
"externalId":false
}
},
"collectionSheet": {
"isAutoPopulate": {
"paymentTypeOption": true
},
"isHiddenFeild":{
"newtransactionDate":false
}
},
"createClient": {
"isReadOnlyField": {
"staff": true
}
},
"defaultGISConfig":{
"address":{
"countryName":"India",
"stateName":"Karnataka"
}
},
"createGroup": {
"isReadOnlyField": {
"staff": true,
"active": true
},
"isAutoPopulate": {
"active": true
}
},
"createCenter": {
"isReadOnlyField": {
"active": true,
"name": true
},
"isHiddenField": {
"villageOptions": false
}
},
"createGroup": {
"isReadOnlyField": {
"staff": true,
"active": true
},
"isAutoPopulate": {
"active": true
},
"isHiddenMenu": {
"attachmeeting": true
}
},
"labelChanges": {
"calendarChagesEffectiveFrom" : true
},
"createVillage": {
"isReadOnlyField": {
"active": true
}
}
}
}

View File

@ -0,0 +1,131 @@
{
"enableUIDisplayConfiguration": false,
"uiDisplayConfigurations": {
"loanAccount": {
"isHiddenField": {
"fundId": false,
"linkAccountId": true,
"createStandingInstruction": true,
"numberOfRepayments": false,
"repaymentEvery": false,
"repaymentFrequencyType": true,
"repaymentFrequencyNthDayType": true,
"repaymentFrequencyDayOfWeekType": true,
"interestChargedFromDate": false,
"repaymentsStartingFromDate": false,
"interestType": true,
"amortizationType": true,
"interestCalculationPeriodType": true,
"inArrearsTolerance": true,
"graceOnInterestCharged": true,
"transactionProcessingStrategyId": true,
"graceOnInterestPayment": true,
"graceOnArrearsAgeing": true,
"syncDisbursementDateWithMeeting":true,
"recurringMoratoriumOnPrincipalPeriods" : true
},
"isMandatory":{
"externalId":false
},
"isHiddenSection": {
"interestRecalculationSection": true,
"collateralSection": true
},
"isShowField":{
"nextRepaymentDateDisburseScreen": false,
"adjustRepaymentDateDisburseScreen": false
},
"isReadOnlyField": {
"loanTermFrequencyType": true,
"interestChargedFromDate": true,
"displayName": true,
"interestRatePerPeriod": true,
"loanPurposeId": true,
"syncRepaymentsWithMeeting": false,
"repaymentFrequencyType": false
},
"isAutoPopulate":{
"interestChargedFromDate": true
},
"isDefaultValue": {
"syncDisbursementWithMeeting": false,
"considerFutureDisbursmentsInSchedule": true
},
"isMandatory":{
"loanPurposeId": true
}
},
"clientAccount":{
"isMandatory":{
"externalId":false
}
},
"collectionSheet": {
"isAutoPopulate": {
"paymentTypeOption": true
},
"isHiddenFeild":{
"newtransactionDate":false
}
},
"createClient": {
"isReadOnlyField": {
"staff": true
}
},
"createGroup": {
"isReadOnlyField": {
"staff": true,
"active": true
},
"isAutoPopulate": {
"active": true
}
},
"createCenter": {
"isReadOnlyField": {
"active": true,
"name": true
},
"isHiddenField": {
"villageOptions": false
}
},
"createGroup": {
"isReadOnlyField": {
"staff": true,
"active": true
},
"isAutoPopulate": {
"active": true
},
"isHiddenMenu": {
"attachmeeting": true
}
},
"labelChanges": {
"calendarChagesEffectiveFrom" : true
},
"createVillage": {
"isReadOnlyField": {
"active": true
}
},
"viewLoanAccountDetails":{
"isHiddenFeild":{
"viewReportButton":true
}
},
"clientIdentifier":{
"identitiesMatchLuhnsAlgorithm": {
"clientIdentifierValidation":false
}
}
},
"reportParameterConfiguration": {
"datePicker": {
"reportNames": "'Expected Payments By Date - Basic'",
"restrictedDate":""
}
}
}

View File

@ -0,0 +1,102 @@
{
"enableUIDisplayConfiguration": true,
"uiDisplayConfigurations": {
"loanAccount": {
"isHiddenField": {
"fundId": true,
"linkAccountId": true,
"createStandingInstruction": true,
"numberOfRepayments": false,
"repaymentEvery": false,
"repaymentFrequencyType": true,
"repaymentFrequencyNthDayType": true,
"repaymentFrequencyDayOfWeekType": true,
"interestChargedFromDate": false,
"repaymentsStartingFromDate": false,
"interestType": true,
"amortizationType": true,
"interestCalculationPeriodType": true,
"inArrearsTolerance": true,
"graceOnInterestCharged": true,
"transactionProcessingStrategyId": true,
"graceOnInterestPayment": true,
"graceOnArrearsAgeing": true,
"syncDisbursementDateWithMeeting":true,
"recurringMoratoriumOnPrincipalPeriods" : false
},
"isHiddenSection": {
"interestRecalculationSection": true,
"collateralSection": true
},
"isShowField":{
"nextRepaymentDateDisburseScreen": false,
"adjustRepaymentDateDisburseScreen": false
},
"isReadOnlyField": {
"loanTermFrequencyType": true,
"interestChargedFromDate": true,
"displayName": false,
"interestRatePerPeriod": true
},
"isAutoPopulate":{
"interestChargedFromDate": true
},
"isDefaultValue": {
"syncDisbursementWithMeeting": false
},
"isMandatory":{
"loanPurposeId": true
}
},
"collectionSheet": {
"isAutoPopulate": {
"paymentTypeOption": true
},
"isHiddenFeild":{
"newtransactionDate":false
}
},
"createClient": {
"isReadOnlyField": {
"staff": true
}
},
"createGroup": {
"isReadOnlyField": {
"staff": true,
"active": false
},
"isAutoPopulate": {
"active": false
}
},
"createCenter": {
"isReadOnlyField": {
"active": true,
"name": false
},
"isHiddenField": {
"villageOptions": true
}
},
"labelChanges": {
"calendarChagesEffectiveFrom" : true
},
"createVillage": {
"isReadOnlyField": {
"active": true
}
},
"viewLoanAccountDetails":{
"isHiddenFeild":{
"viewReportButton":true
}
}
},
"reportParameterConfiguration": {
"datePicker": {
"reportNames": "'Expected Payments By Date - Basic'",
"restrictedDate":""
}
}
}

View File

@ -0,0 +1,127 @@
{
"enableUIDisplayConfiguration": true,
"uiDisplayConfigurations": {
"loanAccount": {
"isHiddenField": {
"fundId": false,
"linkAccountId": true,
"createStandingInstruction": true,
"numberOfRepayments": false,
"repaymentEvery": false,
"repaymentFrequencyType": true,
"repaymentFrequencyNthDayType": true,
"repaymentFrequencyDayOfWeekType": true,
"interestChargedFromDate": false,
"repaymentsStartingFromDate": false,
"interestType": true,
"amortizationType": false,
"interestCalculationPeriodType": false,
"inArrearsTolerance": false,
"graceOnInterestCharged": false,
"transactionProcessingStrategyId": false,
"graceOnInterestPayment": false,
"graceOnArrearsAgeing": false,
"syncDisbursementDateWithMeeting":true
},
"isMandatory":{
"externalId":true
},
"isHiddenSection": {
"interestRecalculationSection": false,
"collateralSection": false
},
"isReadOnlyField": {
"loanTermFrequencyType": false,
"interestChargedFromDate": false,
"displayName": false,
"interestRatePerPeriod": false,
"loanPurposeId": false,
"repaymentFrequencyType": false,
"syncRepaymentsWithMeeting": false
},
"isAutoPopulate":{
"interestChargedFromDate": false
},
"isDefaultValue": {
"fundId": 45,
"syncDisbursementWithMeeting": false,
"considerFutureDisbursmentsInSchedule": true,
"syncDisbursementWithMeeting": false
}
},
"clientAccount":{
"isMandatory":{
"externalId":true
}
},
"collectionSheet": {
"isAutoPopulate": {
"paymentTypeOption": false
},
"isHiddenFeild":{
"newtransactionDate":false
}
},
"createClient": {
"isReadOnlyField": {
"staff": false
}
},
"createGroup": {
"isReadOnlyField": {
"staff": false,
"active": false
},
"isAutoPopulate": {
"active": true
}
},
"createCenter": {
"isReadOnlyField": {
"active": false,
"name": false
},
"isHiddenField": {
"villageOptions": false
}
},
"createGroup": {
"isReadOnlyField": {
"staff": false,
"active": false
},
"isAutoPopulate": {
"active": false
},
"isHiddenMenu": {
"attachmeeting": false
}
},
"labelChanges": {
"calendarChagesEffectiveFrom" : false
},
"createVillage": {
"isReadOnlyField": {
"active": false
}
},
"viewLoanAccountDetails":{
"isHiddenFeild":{
"viewReportButton":false
}
},
"clientIdentifier":{
"identitiesMatchLuhnsAlgorithm": {
"clientIdentifierValidation":true
}
}
},
"reportParameterConfiguration": {
"datePicker": {
"reportNames": "'Expected Payments By Date - Basic'",
"restrictedDate":""
}
}
}

View File

@ -1,6 +1,6 @@
(function (module) {
mifosX.controllers = _.extend(module, {
AccCoaController: function (scope,$rootScope, resourceFactory, location) {
AccCoaController: function (scope,$rootScope, translate, resourceFactory, location) {
$rootScope.tempNodeID = -100; // variable used to store nodeID (from directive), so it(nodeID) is available for detail-table
@ -42,14 +42,19 @@
resourceFactory.accountCoaResource.getAllAccountCoas(function (data) {
scope.coadatas = scope.deepCopy(data);
scope.ASSET = translate('ASSET') ;
scope.LIABILITY = translate('LIABILITY') ;
scope.EQUITY = translate('EQUITY') ;
scope.INCOME = translate('INCOME') ;
scope.EXPENSE = translate('EXPENSE') ;
scope.Accounting = translate('Accounting') ;
var assetObject = {id: -1, name: "ASSET", parentId: -999, children: []};
var liabilitiesObject = {id: -2, name: "LIABILITY", parentId: -999, children: []};
var equitiyObject = {id: -3, name: "EQUITY", parentId: -999, children: []};
var incomeObject = {id: -4, name: "INCOME", parentId: -999, children: []};
var expenseObject = {id: -5, name: "EXPENSE", parentId: -999, children: []};
var rootObject = {id: -999, name: "Accounting", children: []};
var assetObject = {id: -1, name: scope.ASSET, parentId: -999, children: []};
var liabilitiesObject = {id: -2, name: scope.LIABILITY, parentId: -999, children: []};
var equitiyObject = {id: -3, name: scope.EQUITY, parentId: -999, children: []};
var incomeObject = {id: -4, name: scope.INCOME, parentId: -999, children: []};
var expenseObject = {id: -5, name: scope.EXPENSE, parentId: -999, children: []};
var rootObject = {id: -999, name: scope.Accounting, children: []};
var rootArray = [rootObject, assetObject, liabilitiesObject, equitiyObject, incomeObject, expenseObject];
var idToNodeMap = {};
@ -84,6 +89,16 @@
return a.parentId - b.parentId;
}
function sortGlCode(a, b) {
if(a.glCode < b.glCode){
return -1;
}
if(a.glCode > b.glCode){
return 1;
}
return 0;
}
data.sort(sortByParentId);
var glAccountsArray = rootArray.concat(data);
@ -96,6 +111,7 @@
parentNode = idToNodeMap[currentObj.parentId];
parentNode.children.push(currentObj);
currentObj.collapsed = "true";
parentNode.children.sort(sortGlCode);
}
}
scope.treedata = root;
@ -104,7 +120,7 @@
}
});
mifosX.ng.application.controller('AccCoaController', ['$scope','$rootScope', 'ResourceFactory', '$location', mifosX.controllers.AccCoaController]).run(function ($log) {
mifosX.ng.application.controller('AccCoaController', ['$scope','$rootScope', '$translate', 'ResourceFactory', '$location', mifosX.controllers.AccCoaController]).run(function ($log) {
$log.info("AccCoaController initialized");
});
}(mifosX.controllers || {}));

View File

@ -10,12 +10,13 @@
scope.coadata = data;
scope.accountTypes = data.accountTypeOptions;
scope.usageTypes = data.usageOptions;
scope.formData = {
manualEntriesAllowed: true,
type: scope.accountTypes[0].id,
usage: scope.usageTypes[0].id
};
manualEntriesAllowed: true,
type: scope.accountTypes[0].id,
usage: scope.usageTypes[0].id
};
scope.formData.type;
scope.formData.parentId;
@ -27,29 +28,11 @@
}
//by default display assetTagsOptions and assetHeaderAccountOptions
scope.types = data.allowedAssetsTagOptions,
scope.headerTypes = data.assetHeaderAccountOptions
changeType();
scope.types = data.allowedAssetsTagOptions;
scope.headerTypes = data.assetHeaderAccountOptions;
function changeType () {
if (scope.formData.type == 1) {
scope.types = data.allowedAssetsTagOptions;
scope.headerTypes = data.assetHeaderAccountOptions
} else if (scope.formData.type == 2) {
scope.types = data.allowedLiabilitiesTagOptions;
scope.headerTypes = data.liabilityHeaderAccountOptions;
} else if (scope.formData.type == 3) {
scope.types = data.allowedEquityTagOptions;
scope.headerTypes = data.equityHeaderAccountOptions;
} else if (scope.formData.type == 4) {
scope.types = data.allowedIncomeTagOptions;
scope.headerTypes = data.incomeHeaderAccountOptions;
} else if (scope.formData.type == 5) {
scope.types = data.allowedExpensesTagOptions;
scope.headerTypes = data.expenseHeaderAccountOptions;
}
scope.changeType();
}
for (var i = 0; i < scope.headerTypes.length; i++) {
if(scope.headerTypes[i].id == $routeParams.parent ) {
console.log($routeParams.parent + scope.headerTypes[i].id)
@ -59,6 +42,34 @@
});
scope.changeType = function () {
var data = scope.coadata;
if (scope.formData.type == 1) {
scope.types = data.allowedAssetsTagOptions;
scope.headerTypes = data.assetHeaderAccountOptions
} else if (scope.formData.type == 2) {
scope.types = data.allowedLiabilitiesTagOptions;
scope.headerTypes = data.liabilityHeaderAccountOptions;
} else if (scope.formData.type == 3) {
scope.types = data.allowedEquityTagOptions;
scope.headerTypes = data.equityHeaderAccountOptions;
} else if (scope.formData.type == 4) {
scope.types = data.allowedIncomeTagOptions;
scope.headerTypes = data.incomeHeaderAccountOptions;
} else if (scope.formData.type == 5) {
scope.types = data.allowedExpensesTagOptions;
scope.headerTypes = data.expenseHeaderAccountOptions;
}
for (var i = 0; i < scope.headerTypes.length; i++) {
if(scope.headerTypes[i].id == $routeParams.parent ) {
console.log($routeParams.parent + scope.headerTypes[i].id)
scope.formData.parentId = scope.headerTypes[i].id;
}
}
}
if($routeParams.parent){
scope.cancel = '#/viewglaccount/' + $routeParams.parent
}else{

View File

@ -84,6 +84,7 @@
accountingRule.name = this.formData.name;
accountingRule.officeId = this.formData.officeId;
accountingRule.description = this.formData.description;
accountingRule.isInheritedToChildOffices = this.formData.isInheritedToChildOffices || false;
//Construct creditsTags array
if (this.creditRuleType == 'tags') {

View File

@ -6,12 +6,16 @@
scope.usageTypes = [];
scope.headerTypes = [];
scope.accountOptions = [];
scope.glClassificationTypeId ;
resourceFactory.accountCoaResource.get({glAccountId: routeParams.id, template: 'true'}, function (data) {
scope.coadata = data;
scope.glAccountId = data.id;
scope.accountTypes = data.accountTypeOptions;
scope.usageTypes = data.usageOptions;
if(data.glClassificationType) {
scope.glClassificationTypeId = data.glClassificationType.id;
}
scope.formData = {
name: data.name,
glCode: data.glCode,
@ -20,7 +24,8 @@
type: data.type.id,
tagId: data.tagId.id,
usage: data.usage.id,
parentId: data.parentId
parentId: data.parentId,
glClassificationType : scope.glClassificationTypeId
};
//to display tag name on i/p field

View File

@ -8,6 +8,7 @@
scope.formData.creditTags = [];
scope.formData.debitTags = [];
scope.offices = [];
scope.formData.isInheritedToChildOffices = false;
resourceFactory.accountingRulesResource.getById({accountingRuleId: routeParams.id, template: true}, function (data) {
//Initialize the template options
@ -21,6 +22,10 @@
scope.formData.officeId = data.officeId;
scope.formData.description = data.description;
if(data.isInheritedToChildOffices){
scope.formData.isInheritedToChildOffices = true;
}
//update formData for view previous details.
for (var i = 0; i < data.allowedOffices.length; i++) {
if (data.officeId == data.allowedOffices[i].id) {
@ -125,6 +130,7 @@
accountingRule.name = this.formData.name;
accountingRule.officeId = this.formData.officeId;
accountingRule.description = this.formData.description;
accountingRule.isInheritedToChildOffices = this.formData.isInheritedToChildOffices || false;
//Construct creditsTags array
if (this.creditRuleType == 'tags') {

View File

@ -13,9 +13,7 @@
scope.restrictDate = new Date();
scope.showPaymentDetails = false;
resourceFactory.accountingRulesResource.getAllRules({associations: 'all'}, function (data) {
scope.rules = data;
});
resourceFactory.paymentTypeResource.getAll( function (data) {
scope.paymentTypes = data;
@ -28,8 +26,15 @@
resourceFactory.officeResource.getAllOffices(function (data) {
scope.offices = data;
scope.formData.officeId = scope.offices[0].id;
scope.getAccountingRules();
});
scope.getAccountingRules = function(){
resourceFactory.accountingRulesResource.get({officeId: scope.formData.officeId,includeInheritedRules:true}, function(data){
scope.rules = data;
});
}
//event for rule change
scope.resetCrAndDb = function (rule) {
scope.rule = rule;

View File

@ -1,22 +1,50 @@
(function (module) {
mifosX.controllers = _.extend(module, {
AccountingClosureController: function (scope, resourceFactory, location, translate, routeParams, dateFilter) {
AccountingClosureController: function (scope, resourceFactory, location, translate, routeParams, dateFilter, $rootScope, paginatorService) {
scope.first = {};
scope.formData = {};
scope.first.date = new Date();
scope.accountClosures = [];
scope.restrictDate = new Date();
resourceFactory.officeResource.getAllOffices(function (data) {
scope.offices = data;
});
scope.isTreeView = false;
var idToNodeMap = {};
scope.showclosure = true;
scope.getFetchData = true;
scope.tempOfficeId = 1;
var params = {}
scope.showClosure = false;
scope.accountClosurePerPage = 10;
scope.limitToOne = false;
if (routeParams.officeId != undefined) {
params.officeId = routeParams.officeId;
}
resourceFactory.officeResource.getAllOffices(function (data) {
scope.offices = data;
for (var i in data) {
data[i].children = [];
idToNodeMap[data[i].id] = data[i];
}
function sortByParentId(a, b) {
return a.parentId - b.parentId;
}
resourceFactory.accountingClosureResource.get(params, function (data) {
scope.accountClosures = data;
data.sort(sortByParentId);
var root = [];
for (var i = 0; i < data.length; i++) {
var currentObj = data[i];
if (currentObj.children) {
currentObj.collapsed = "true";
}
if (typeof currentObj.parentId === "undefined") {
root.push(currentObj);
} else {
parentNode = idToNodeMap[currentObj.parentId];
parentNode.children.push(currentObj);
}
}
scope.treedata = root;
});
scope.routeTo = function (id) {
@ -33,8 +61,10 @@
});
}
scope.updateLastClosed = function (officeId) {
resourceFactory.accountingClosureResource.get({officeId: officeId}, function (data) {
resourceFactory.accountingClosureResource.get({officeId: officeId, limitToOne: false}, function (data) {
scope.accountClosures = data;
scope.lastClosed = undefined;
if (data.length > 0) {
@ -42,14 +72,38 @@
}
});
}
scope.closedAccountingDetails = function (officeId) {
resourceFactory.accountingClosureResource.get({officeId: officeId}, function (data) {
scope.accountClosures = data;
});
scope.fetchFunction = function (offset, limit, callback) {
var params = {};
params.offset = offset;
params.limit = limit;
params.paged ='true';
params.orderBy = 'name';
params.officeId = scope.tempOfficeId;
params.limitToOne = scope.limitToOne;
params.sortOrder = 'ASC';
resourceFactory.accountingClosureResource.getView(params, callback);
}
scope.closedAccountingDetails = function (officeId, limitToOne) {
scope.tempOfficeId = officeId;
scope.limitToOne = limitToOne;
scope.accountClosures = paginatorService.paginate(scope.fetchFunction, scope.accountClosurePerPage);
}
scope.fetchData = function (officeId) {
scope.tempOfficeId = officeId;
scope.limitToOne = false;
scope.accountClosures = paginatorService.paginate(scope.fetchFunction, scope.accountClosurePerPage);
if( scope.accountClosures) {
scope.showClosure = true;
}else{
scope.showClosure = false;
}
}
}
});
mifosX.ng.application.controller('AccountingClosureController', ['$scope', 'ResourceFactory', '$location', '$translate', '$routeParams', 'dateFilter', mifosX.controllers.AccountingClosureController]).run(function ($log) {
mifosX.ng.application.controller('AccountingClosureController', ['$scope', 'ResourceFactory', '$location', '$translate', '$routeParams', 'dateFilter', '$rootScope', 'PaginatorService', mifosX.controllers.AccountingClosureController]).run(function ($log) {
$log.info("AccountingClosureController initialized");
});
}(mifosX.controllers || {}));

View File

@ -1,6 +1,6 @@
(function (module) {
mifosX.controllers = _.extend(module, {
JournalEntryController: function (scope, resourceFactory, location, dateFilter) {
JournalEntryController: function (scope, resourceFactory, location, dateFilter, routeParams, localStorageService) {
scope.formData = {};
scope.formData.crAccounts = [{}];
@ -12,6 +12,12 @@
scope.debitaccounttemplate = false;
scope.restrictDate = new Date();
scope.showPaymentDetails = false;
scope.transactionnumber = routeParams.transactionId;
scope.showTransactionDetails = false;
scope.first.date = new Date();
scope.numberOfCredits = 1;
scope.numberOfDebits = 1;
scope.error = null;
resourceFactory.accountCoaResource.getAllAccountCoas({manualEntriesAllowed: true, usage: 1, disabled: false}, function (data) {
scope.glAccounts = data;
});
@ -22,30 +28,60 @@
resourceFactory.currencyConfigResource.get({fields: 'selectedCurrencyOptions'}, function (data) {
scope.currencyOptions = data.selectedCurrencyOptions;
scope.formData.currencyCode = scope.currencyOptions[0].code;
scope.formData.currencyCode = localStorageService.getFromCookies('currencyCode') || scope.currencyOptions[0].code;
});
resourceFactory.officeResource.getAllOffices(function (data) {
scope.offices = data;
scope.formData.officeId = scope.offices[0].id;
scope.formData.officeId = parseInt(localStorageService.getFromCookies('officeId')) || scope.offices[0].id;
});
if(scope.transactionnumber != null){
scope.showTransactionDetails = true;
}
//events for credits
scope.addCrAccount = function () {
scope.formData.crAccounts.push({});
scope.limitingCreditToOne();
}
scope.removeCrAccount = function (index) {
scope.formData.crAccounts.splice(index, 1);
scope.numberOfCredits = scope.numberOfCredits - 1;
scope.error = null;
}
//events for debits
scope.addDebitAccount = function () {
scope.formData.dbAccounts.push({});
scope.limitingDebitToOne();
}
scope.removeDebitAccount = function (index) {
scope.formData.dbAccounts.splice(index, 1);
scope.numberOfDebits = scope.numberOfDebits - 1;
scope.error = null;
}
scope.viewTransaction = function(){
location.path('/viewtransactions/' +scope.transactionnumber );
}
scope.limitingCreditToOne = function(){
if(scope.numberOfDebits <= 1){
scope.formData.crAccounts.push({});
scope.numberOfCredits = scope.numberOfCredits + 1;
} else{
scope.error = "validation.msg.journal.entry.limit.credit.to.one";
}
}
scope.limitingDebitToOne = function(){
if(scope.numberOfCredits <= 1) {
scope.formData.dbAccounts.push({});
scope.numberOfDebits = scope.numberOfDebits + 1;
} else{
scope.error = "validation.msg.journal.entry.limit.debit.to.one";
}
}
scope.submit = function () {
@ -86,13 +122,16 @@
jeTransaction.debits.push(temp);
}
localStorageService.addToCookies('officeId', this.formData.officeId);
localStorageService.addToCookies('currencyCode', this.formData.currencyCode);
resourceFactory.journalEntriesResource.save(jeTransaction, function (data) {
location.path('/viewtransactions/' + data.transactionId);
location.path('/journalentry/' + data.transactionId);
});
}
}
});
mifosX.ng.application.controller('JournalEntryController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', mifosX.controllers.JournalEntryController]).run(function ($log) {
mifosX.ng.application.controller('JournalEntryController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$routeParams', 'localStorageService', mifosX.controllers.JournalEntryController]).run(function ($log) {
$log.info("JournalEntryController initialized");
});
}(mifosX.controllers || {}));

View File

@ -17,6 +17,26 @@
scope.routeTo = function (id) {
location.path('/viewtransactions/' + id);
};
scope.viewloantransactionjournalentries = function (entityId,transactionId) {
if (transactionId.toString().indexOf("L") >= 0)
location.path('/viewloantrxn/' + entityId + '/trxnId/' + transactionId.toString().replace("L", ""));
if (transactionId.toString().indexOf("S") >= 0) {
resourceFactory.savingsResource.get({accountId: entityId}, function (accountData) {
if (accountData.depositType.code == "depositAccountType.fixedDeposit") {
location.path('/viewfixeddepositaccounttrxn/' + entityId + '/' + transactionId.toString().replace("S", ""));
}
if (accountData.depositType.code == "depositAccountType.recurringDeposit") {
location.path('/viewrecurringdepositaccounttrxn/' + entityId + '/' + transactionId.toString().replace("S", ""));
}
if (accountData.depositType.code == "depositAccountType.savingsDeposit") {
location.path('/viewsavingtrxn/' + entityId + '/trxnId/' + transactionId.toString().replace("S", ""));
}
});
}
if(transactionId.toString().indexOf("C")>=0)
location.path('/viewclient/' + entityId + '/chargeoverview');
};
resourceFactory.accountCoaResource.getAllAccountCoas({
manualEntriesAllowed: true,

View File

@ -1,7 +1,7 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewTransactionController: function (scope, routeParams, resourceFactory, location, route, $modal) {
ViewTransactionController: function (scope, routeParams, resourceFactory, location, route, $modal, http, API_VERSION, $rootScope, $sce) {
scope.flag = false;
scope.manualEntry = false;
scope.productName = routeParams.productName;
@ -12,6 +12,12 @@
scope.groupId = routeParams.groupId;
scope.groupName = routeParams.groupName;
scope.journalEntryTransactionId = routeParams.transactionId;
scope.transactionIdStringvalue = routeParams.transactionId.toString();
scope.bankStatementId = location.search().id;
scope.isFromBankStatement = (scope.bankStatementId != undefined);
scope.hidePentahoReport = true;
scope.reportName = 'Journal Voucher';
scope.reportOutputType = 'PDF';
if(scope.journalEntryTransactionId != null && scope.journalEntryTransactionId !=""){
scope.journalEntryTransactionId = scope.journalEntryTransactionId.substring(1,scope.journalEntryTransactionId.length);
}
@ -103,9 +109,27 @@
};
};
scope.runReport = function () {
scope.hidePentahoReport = false;
var reportURL = $rootScope.hostUrl + API_VERSION + "/runreports/" + encodeURIComponent(scope.reportName);
reportURL += "?output-type=" + encodeURIComponent(scope.reportOutputType) + "&tenantIdentifier=" + $rootScope.tenantIdentifier + "&locale="
+ scope.optlang.code + "&dateFormat=" + scope.df + "&R_transactionId=" + scope.transactionIdStringvalue;
reportURL = $sce.trustAsResourceUrl(reportURL);
http.get(reportURL, {responseType: 'arraybuffer'}).
success(function (data, status, headers, config) {
var contentType = headers('Content-Type');
var file = new Blob([data], {type: contentType});
var fileContent = URL.createObjectURL(file);
scope.baseURL = $sce.trustAsResourceUrl(fileContent);
});
}
}
});
mifosX.ng.application.controller('ViewTransactionController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$route', '$modal', mifosX.controllers.ViewTransactionController]).run(function ($log) {
mifosX.ng.application.controller('ViewTransactionController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$route', '$modal', '$http', 'API_VERSION', '$rootScope', '$sce', mifosX.controllers.ViewTransactionController]).run(function ($log) {
$log.info("ViewTransactionController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,19 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateBankController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.formData = {};
scope.glAccounts = [];
resourceFactory.accountCoaResource.getAllAccountCoas(function (data) {
scope.glAccounts = data;
});
scope.submit = function () {
resourceFactory.bankResource.save(this.formData, function (data) {
location.path('/viewbank');
});
};
}
});
mifosX.ng.application.controller('CreateBankController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.CreateBankController]).run(function ($log) {
$log.info("CreateBankController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,27 @@
(function (module) {
mifosX.controllers = _.extend(module, {
UpdateBankController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.formData = {};
scope.updatedData = {};
resourceFactory.bankResource.get({'bankId': routeParams.bankId},{}, function (data) {
resourceFactory.accountCoaResource.getAllAccountCoas(function (glAccounts) {
scope.glAccounts = glAccounts;
scope.formData = data;
});
});
scope.submit = function () {
this.formData.glCode = undefined;
resourceFactory.bankResource.update({'bankId': routeParams.bankId}, this.formData, function (data) {
location.path('/viewbank');
});
};
}
});
mifosX.ng.application.controller('UpdateBankController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.UpdateBankController]).run(function ($log) {
$log.info("UpdateBankController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,79 @@
(function (module) {
mifosX.controllers = _.extend(module, {
UpdateBankStatementController: function (scope, location, http, routeParams, resourceFactory, API_VERSION, $upload, $rootScope) {
scope.formData = {};
scope.file = [];
scope.orgfile = null;
scope.baseUri = $rootScope.hostUrl+API_VERSION+'/bankstatement/1/documents/';
scope.appendedUri = '/attachment?tenantIdentifier='+$rootScope.tenantIdentifier;
scope.cpifFileName = null;
scope.orgFileName = null;
scope.cpifFile = null;
scope.orgFile = null;
scope.banks = [];
scope.onCpifFileSelect = function ($files) {
scope.cpifFile = $files[0];
scope.cifFileSize = $files[0].size;
};
scope.onOrgFileSelect = function ($files) {
scope.orgFile = $files[0];
scope.orgFileSize = $files[0].size;
};
resourceFactory.bankStatementsResource.getBankStatement({'bankStatementId': routeParams.bankStatementId}, function (data) {
scope.isOrgFilePresent = data.orgStatementKeyDocumentId > 0;
scope.formData.id = data.id;
scope.formData.name = data.name;
scope.formData.description = data.description;
scope.cpifFileURI = scope.baseUri+ data.cpifKeyDocumentId+ scope.appendedUri;
resourceFactory.bankResource.getAll({}, function (allBank) {
scope.banks = allBank;
scope.formData.bank = data.bankData.id;
});
resourceFactory.bankStatementDocumentResource.getBankStatementDocument({'documentId': data.cpifKeyDocumentId}, function (cpifData) {
scope.cpifFileName = cpifData.fileName;
});
if(data.orgStatementKeyDocumentId > 0){
scope.orgFileURI = scope.baseUri+ data.orgStatementKeyDocumentId+ scope.appendedUri;
resourceFactory.bankStatementDocumentResource.getBankStatementDocument({'documentId': data.orgStatementKeyDocumentId}, function (orgData) {
scope.orgFileName = orgData.fileName;
});
}
});
scope.submit = function () {
scope.formData.orgFileSize = scope.orgFileSize;
scope.formData.cifFileSize = scope.cifFileSize;
if(scope.formData.orgFileSize != undefined && scope.formData.cifFileSize != undefined){
scope.file = [scope.cpifFile, scope.orgFile];
}else if(scope.formData.cifFileSize != undefined){
scope.file = [scope.cpifFile];
}else if(scope.formData.orgFileSize != undefined){
scope.file = [scope.orgFile];
}else{
scope.file = [];
}
if(scope.formData.description==undefined || scope.formData.description=='undefined'){
scope.formData.description = '';
}
var url = $rootScope.hostUrl + API_VERSION + '/bankstatements/'+scope.formData.id;
$upload.upload({
method: 'PUT',
url: url,
data: scope.formData,
file: scope.file
}).then(function (data) {
// to fix IE not refreshing the model
if (!scope.$$phase) {
scope.$apply();
}
location.path('/bankstatements');
});
};
}
});
mifosX.ng.application.controller('UpdateBankStatementController', ['$scope', '$location', '$http', '$routeParams', 'ResourceFactory', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.UpdateBankStatementController]).run(function ($log) {
$log.info("UpdateBankStatementController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,57 @@
(function (module) {
mifosX.controllers = _.extend(module, {
UploadBankStatementController: function (scope, resourceFactory, location, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.file = [];
scope.cifFileSize = null;
scope.orgFileSize = null;
scope.orgfile = null;
scope.ciffile = null;
scope.banks = [];
scope.isCPIFNotSlected = false;
scope.onCIFFileSelect = function ($files) {
scope.ciffile = $files[0];
scope.cifFileSize = $files[0].size;
};
scope.getAllBanks = function(){
resourceFactory.bankResource.getAll({}, function (data) {
scope.banks = data;
});
};
scope.getAllBanks();
scope.onFileSelect = function ($files) {
scope.orgfile = $files[0];
scope.orgFileSize = $files[0].size;
};
scope.submit = function () {
if(scope.ciffile == null){
scope.isCPIFNotSlected = true;
return false;
}
if(scope.orgfile == null){
scope.file = [scope.ciffile];
}else{
scope.file = [scope.ciffile, scope.orgfile];
scope.formData.orgFileSize = scope.orgFileSize;
}
scope.formData.cifFileSize = scope.cifFileSize;
$upload.upload({
url: $rootScope.hostUrl + API_VERSION + '/bankstatements',
data: scope.formData,
file: scope.file
}).then(function (data) {
// to fix IE not refreshing the model
if (!scope.$$phase) {
scope.$apply();
}
location.path('/bankstatements');
});
};
}
});
mifosX.ng.application.controller('UploadBankStatementController', ['$scope', 'ResourceFactory', '$location', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.UploadBankStatementController]).run(function ($log) {
$log.info("UploadBankStatementController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,21 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewBankController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.banks = [];
scope.getAllBanks = function(){
resourceFactory.bankResource.getAll({}, function (data) {
scope.banks = data;
});
};
scope.getAllBanks();
scope.deleteBank = function(bankId){
resourceFactory.bankResource.delete({bankId : bankId}, function (data) {
scope.getAllBanks();
});
};
}
});
mifosX.ng.application.controller('ViewBankController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.ViewBankController]).run(function ($log) {
$log.info("ViewBankController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,44 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewBankStatementController: function (scope, resourceFactory, location, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.bankStatements = [];
scope.baseUri = $rootScope.hostUrl+API_VERSION+'/bankstatement/1/documents/';
scope.appendedUri = '/attachment?tenantIdentifier='+$rootScope.tenantIdentifier;
scope.getBankStatement = function() {
resourceFactory.bankStatementsResource.getAllBankStatement(function (data) {
scope.bankStatements = data;
for(var i = 0;i< scope.bankStatements.length; i++){
scope.bankStatements[i].cpifDownloadUri = scope.baseUri+ scope.bankStatements[i].cpifKeyDocumentId+ scope.appendedUri;
if(scope.bankStatements[i].orgStatementKeyDocumentId > 0){
scope.bankStatements[i].orgDownloadUri = scope.baseUri+ scope.bankStatements[i].orgStatementKeyDocumentId+ scope.appendedUri;
}else{
scope.bankStatements[i].orgDownloadUri = null;
}
}
});
};
scope.getBankStatement();
scope.deleteBankStatement = function(bankStatementId){
scope.formData = {};
scope.formData.locale = scope.optlang.code;
scope.formData.dateFormat = scope.df;
resourceFactory.deleteBankStatementsResource.deleteBankStatement({bankStatementId : bankStatementId},scope.formData, function (data) {
scope.getBankStatement();
});
};
scope.makeBankStatementReconcile = function(id){
resourceFactory.bankStatementsResource.reconcileBankStatement({ bankStatementId : id}, function (data) {
scope.getBankStatement();
location.path('/bankstatements');
});
};
}
});
mifosX.ng.application.controller('ViewBankStatementController', ['$scope', 'ResourceFactory', '$location', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.ViewBankStatementController]).run(function ($log) {
$log.info("ViewBankStatementController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,53 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewBankStatementDetailJournalEntryController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.bankStatementDetails = [];
scope.bankStatementId = routeParams.bankStatementId;
scope.isJournalEntryCreated = true;
scope.bankName = "";
scope.bankStatementName = "";
resourceFactory.bankStatementsResource.getBankStatement({'bankStatementId': routeParams.bankStatementId}, function (data) {
scope.bankStatementName = data.name;
scope.bankName = data.bankData.name;
});
scope.getBankStatementDetails = function(){
resourceFactory.bankStatementDetailsResource.getBankStatementDetails({ bankStatementId : routeParams.bankStatementId, command:'journalentry'},function (data) {
scope.bankStatementDetails = data;
scope.isJournalEntriesCreated(data);
});
};
scope.getBankStatementDetails();
scope.submit = function() {
scope.formData = {};
scope.formData.locale = scope.optlang.code;
scope.formData.dateFormat = scope.df;
resourceFactory.bankNonPortfolioResource.createJournalEntries({ bankStatementId : routeParams.bankStatementId},scope.formData,function (data) {
scope.getBankStatementDetails();
scope.isJournalEntriesCreated(scope.bankStatementDetails);
});
};
scope.isJournalEntriesCreated = function(data){
scope.isJournalEntryCreated = true;
var count = 0;
for(var i=0;i<data.length;i++){
if(data[i].hasOwnProperty("transactionId")){
count++;
}
}
scope.isJournalEntryCreated = (count==data.length);
};
scope.routeTo = function (id) {
location.path('/viewtransactions/' + id).search('id',routeParams.bankStatementId);
};
}
});
mifosX.ng.application.controller('ViewBankStatementDetailJournalEntryController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.ViewBankStatementDetailJournalEntryController]).run(function ($log) {
$log.info("ViewBankStatementDetailJournalEntryController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,201 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewBankStatementDetailsController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.bankStatementDetails = [];
scope.offices = [];
scope.formData = [];
scope.loanTransactionData = [];
scope.maxPossibleLength = 3;
scope.searchIndex = -1;
scope.bankId = routeParams.bankStatementId;
scope.action = "default";
scope.toBulkReconcile = [];
scope.isSearchedCriteriaMatched = true;
scope.selectedAll = false;
scope.getBankStatementDetails = function(){
resourceFactory.bankStatementDetailsResource.getBankStatementDetails({ bankStatementId : routeParams.bankStatementId, command:'payment'},function (data) {
scope.bankStatementDetails = data;
});
};
scope.getBankStatementDetails();
scope.goToView = function(index, action){
scope.searchIndex = index;
scope.action = action;
};
resourceFactory.officeResource.getAllOffices(function (data) {
scope.offices = data;
if(scope.offices.length>0){
scope.formData.officeId = scope.offices[0].id;
}
});
scope.isBankTransactionSelected = function(bankTransctionId,loanId){
var bankStatementDetailId = null;
var isLoanTransactionAdded = false;
if(scope.toBulkReconcile.length>0){
for(var i=0;i<scope.toBulkReconcile.length;i++){
if(scope.toBulkReconcile[i].loanTransactionId==loanId){
bankStatementDetailId = scope.toBulkReconcile[i].bankTransctionId;
isLoanTransactionAdded = true;
break;
}
}
}
return ((bankStatementDetailId == bankTransctionId && isLoanTransactionAdded)|| !isLoanTransactionAdded);
};
scope.selectedSearchTransaction = function(index,loanTransaction, isFromSearch){
if(scope.isChecked(loanTransaction.id)){
var j = -1;
if(scope.toBulkReconcile.length>0){
for(var i=0;i<scope.toBulkReconcile.length;i++){
if(scope.toBulkReconcile[i].loanTransactionId==loanTransaction.id && scope.toBulkReconcile[i].bankTransctionId == scope.bankStatementDetails[index].id){
j = i;break;
}
}
}
if(j>-1){
scope.toBulkReconcile.splice(j, 1);
}
}else{
if(isFromSearch){
scope.bankStatementDetails[index].loanTransactionData = [];
scope.bankStatementDetails[index].loanTransactionData.amount = loanTransaction.AMOUNT;
scope.bankStatementDetails[index].loanTransactionData.groupExternalId = loanTransaction.GROUP_EXTERNAL_ID;
scope.bankStatementDetails[index].loanTransactionData.officeName = loanTransaction.BRANCH;
scope.bankStatementDetails[index].loanTransactionData.date = loanTransaction.TRANSACTION_DATE;
scope.bankStatementDetails[index].loanTransactionData.id = loanTransaction.LOAN_TRANSACTION_NO;
scope.bankStatementDetails[index].loanTransactionData.loanAccountNumber = loanTransaction.LOAN_ACCOUNT_NO;
scope.bankStatementDetails[index].loanTransactionData.type = {};
scope.bankStatementDetails[index].loanTransactionData.type.value = loanTransaction.TRANSACTION_TYPE;
}else{
scope.bankStatementDetails[index].loanTransactionData = loanTransaction;
}
scope.addBankStatementDetailsForBulkReconcile(scope.bankStatementDetails[index].loanTransactionData.id, scope.bankStatementDetails[index].id);
}
};
scope.addBankStatementDetailsForBulkReconcile = function(loanTxnId, bankTransctionId){
if(scope.toBulkReconcile.length>0){
var index = -1;
for(var i=0;i<scope.toBulkReconcile.length;i++){
if(scope.toBulkReconcile[i].bankTransctionId==bankTransctionId){
index = i;break;
}
}
if(index>-1){
scope.toBulkReconcile.splice(index, 1);
}
}
scope.toBulkReconcile.push({'loanTransactionId' : loanTxnId, 'bankTransctionId' : bankTransctionId});
};
scope.isChecked = function(id){
var bool = false;
for(var i=0;i<scope.toBulkReconcile.length;i++){
if(scope.toBulkReconcile[i].loanTransactionId==id){
bool = true;break;
}
}
return bool;
};
scope.submit = function () {
var criteria = ' tr.is_reconciled = 0 ';
var amountMinRange = false;
var amountMaxRange = false;
var dateRange = false;
var groupId = false;
if(scope.isValidInput('min')){
criteria = criteria+ ' and tr.amount >= '+(this.formData.min)+' ';
amountMinRange = true;
}
if(scope.isValidInput('max')){
criteria = criteria+ ' and tr.amount <= '+this.formData.max+' ';
amountMaxRange = true;
}
var amountRange = amountMaxRange && amountMinRange;
if(scope.isValidInput('groupExternalId')){
criteria = criteria+ ' and g.external_id = \''+this.formData.groupExternalId+'\' ';
groupId = true;
}
if(scope.isValidInput('startDate') && scope.isValidInput('endDate')){
var startDate = dateFilter(this.formData.startDate,'yyyy-MM-dd');
var endDate = dateFilter(this.formData.endDate,'yyyy-MM-dd');
criteria = criteria+ ' and tr.transaction_date between \''+startDate+'\' and \''+endDate+'\' ';
dateRange = true;
}
if(!amountRange && !dateRange && !groupId){
scope.isSearchedCriteriaMatched = false;
return false;
}else{
scope.isSearchedCriteriaMatched = true;
resourceFactory.runReportsResource.get({reportSource: 'LoanTransactionsForPaymentReconciliation', R_searchCriteria: criteria, R_officeId: this.formData.officeId, genericResultSet: false}, function (data) {
scope.loanTransactionData = data;
});
}
};
scope.checkCriteria = function(){
if(this.formData.groupExternalId != undefined && this.formData.groupExternalId.length > 0){
scope.isSearchedCriteriaMatched = true;
}else if((this.formData.min != undefined && this.formData.min.length > 0) && (this.formData.max != undefined && this.formData.max.length > 0)){
scope.isSearchedCriteriaMatched = true;
}else if((this.formData.startDate != undefined && this.formData.startDate.length > 0) && (this.formData.endDate != undefined && this.formData.endDate.length > 0)){
scope.isSearchedCriteriaMatched = true;
}
};
scope.isValidInput = function(property){
if(property == 'startDate' || property == 'endDate' ){
if(this.formData[property] != undefined){
var data = this.formData[property]+'';
return (data.length>0);
}
}else{
if(this.formData.hasOwnProperty(property)){
if(this.formData[property] != undefined){
return (this.formData[property].length>0);
}
}
}
return false;
};
scope.selectAll = function(){
scope.selectedAll = !scope.selectedAll;
if(scope.selectedAll == true){
for(var i=0;i<scope.bankStatementDetails.length; i++){
if(scope.bankStatementDetails[i].hasOwnProperty('loanTransactionData')){
scope.selectedSearchTransaction(i,scope.bankStatementDetails[i].loanTransactionData, false);
}
}
}else{
scope.toBulkReconcile = [];
}
};
scope.makeBulkBankStatementDetailsReconcile = function(){
var reconcileData = {};
reconcileData.transactionData = scope.toBulkReconcile;
resourceFactory.bankStatementDetailsResource.reconcileBankStatement({ bankStatementId : routeParams.bankStatementId, command:'reconcile'},reconcileData, function (data) {
location.path('/bankstatementsdetails/'+routeParams.bankStatementId+'/reconciledtransaction');
});
};
}
});
mifosX.ng.application.controller('ViewBankStatementDetailsController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.ViewBankStatementDetailsController]).run(function ($log) {
$log.info("ViewBankStatementDetailsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,21 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewBankStatementSummaryController: function (scope, resourceFactory, location, http, routeParams, $rootScope) {
scope.bankStatement = [];
resourceFactory.bankStatementSummaryResource.get({ bankStatementId : routeParams.bankStatementId},function (data) {
scope.bankStatement = data;
});
scope.printDiv = function(print) {
var printContents = document.getElementById(print).innerHTML;
var popupWin = window.open('', '_blank', 'width=300,height=300');
popupWin.document.open();
popupWin.document.write('<html><head><link rel="stylesheet" type="text/css" href="styles/repaymentscheduleprintstyle.css" />' +
'</head><body onload="window.print()">' + printContents + '</body></html>');
popupWin.document.close();
}
}
});
mifosX.ng.application.controller('ViewBankStatementSummaryController', ['$scope', 'ResourceFactory', '$location', '$http', '$routeParams', '$rootScope', mifosX.controllers.ViewBankStatementSummaryController]).run(function ($log) {
$log.info("ViewBankStatementSummaryController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,45 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewGeneratePortfolioTransactionsController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.bankStatementDetails = [];
scope.bankStatementId = routeParams.bankStatementId;
scope.isTransactionsCreated = true;
scope.getBankStatementDetails = function(){
resourceFactory.bankStatementDetailsResource.getBankStatementDetails({ bankStatementId : routeParams.bankStatementId, command:'generatetransactions'},function (data) {
scope.bankStatementDetails = data;
});
};
scope.getBankStatementDetails();
scope.submit = function() {
scope.formData = {};
scope.formData.locale = scope.optlang.code;
scope.formData.dateFormat = scope.df;
resourceFactory.bankStatementGeneratePortfolioResource.createPortfolioTransactions({ bankStatementId : routeParams.bankStatementId},scope.formData,function (data) {
scope.getBankStatementDetails();
scope.isTransactionsCreated(scope.bankStatementDetails);
});
};
scope.isTransactionsCreated = function(data){
scope.isTransactionsCreated = true;
var count = 0;
for(var i=0;i<data.length;i++){
if(data[i].hasOwnProperty("transactionId")){
count++;
}
}
scope.isTransactionsCreated = (count==data.length);
};
scope.routeTo = function (data) {
location.path('/viewloantrxn/' + data.loanAccountNumber+'/trxnId/'+data.transactionId);
};
}
});
mifosX.ng.application.controller('ViewGeneratePortfolioTransactionsController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.ViewGeneratePortfolioTransactionsController]).run(function ($log) {
$log.info("ViewGeneratePortfolioTransactionsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,16 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewMiscellaneousBankStatementDetailsController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.bankStatementDetails = [];
scope.formData = [];
scope.inflowAmount = 0;
scope.outflowAmount = 0;
resourceFactory.bankStatementDetailsResource.getBankStatementDetails({ bankStatementId : routeParams.bankStatementId, command:'miscellaneous'},function (data) {
scope.bankStatementDetails = data;
});
}
});
mifosX.ng.application.controller('ViewMiscellaneousBankStatementDetailsController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.ViewMiscellaneousBankStatementDetailsController]).run(function ($log) {
$log.info("ViewMiscellaneousBankStatementDetailsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,61 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewReconciledBankStatementDetailsController: function (scope, resourceFactory, location, dateFilter, http, routeParams, API_VERSION, $upload, $rootScope) {
scope.reconciledBankStatementDetails = [];
scope.undoReconcileData = [];
scope.selectedAll = false;
scope.bankStatementId = routeParams.bankStatementId;
scope.getReconciledBankStatementDetails = function(){
resourceFactory.bankStatementDetailsResource.getBankStatementDetails({ bankStatementId : scope.bankStatementId, command:'reconciled'},function (data) {
scope.reconciledBankStatementDetails = data;
});
};
scope.getReconciledBankStatementDetails();
scope.getAddedIndex = function(bankTransctionId){
var index = -1;
for(var i=0;i<scope.undoReconcileData.length;i++){
if(scope.undoReconcileData[i].bankTransctionId==bankTransctionId){
index = i;break;
}
}
return index;
};
scope.addDetailsForUndoReconcile = function(bankTransctionId){
var index = scope.getAddedIndex(bankTransctionId);
if(index>-1){
scope.undoReconcileData.splice(index, 1);
}else{
scope.undoReconcileData.push({'bankTransctionId' : bankTransctionId});
}
};
scope.selectAll = function(){
scope.selectedAll = !scope.selectedAll;
if(scope.selectedAll == true){
for(var i=0;i<scope.reconciledBankStatementDetails.length; i++){
scope.addDetailsForUndoReconcile(scope.reconciledBankStatementDetails[i].id)
}
}else{
scope.undoReconcileData = [];
}
};
scope.undoReconcile = function(){
var reconcileData = {};
reconcileData.transactionData = scope.undoReconcileData;
resourceFactory.bankStatementDetailsResource.reconcileBankStatement({ bankStatementId : routeParams.bankStatementId, command: 'undoreconcile'},reconcileData, function (data) {
location.path('/bankstatementsdetails/'+routeParams.bankStatementId+'/reconciledtransaction');
scope.getReconciledBankStatementDetails();
});
};
}
});
mifosX.ng.application.controller('ViewReconciledBankStatementDetailsController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', '$http', '$routeParams', 'API_VERSION', '$upload', '$rootScope', mifosX.controllers.ViewReconciledBankStatementDetailsController]).run(function ($log) {
$log.info("ViewReconciledBankStatementDetailsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,70 @@
(function (module) {
mifosX.controllers = _.extend(module, {
BulkUndoTransactionsController: function (scope, rootScope, routeParams, resourceFactory, location, dateFilter, route) {
scope.centerId = routeParams.centerId;
scope.transactionsDate = new Date();
scope.transactionData = [];
resourceFactory.centerResource.get({centerId: scope.centerId, associations: 'groupMembers,collectionMeetingCalendar'}, function (data) {
scope.center = data;
});
scope.getLoanRepaymentDetails = function () {
resourceFactory.centerBulkTransactionResource.get({
centerId: scope.centerId,
transactionDate: dateFilter(scope.transactionsDate, "yyyy-MM-dd")
}, function (data) {
scope.transactionData = data;
});
};
scope.checkAll = function () {
if (scope.selectedAll) {
scope.selectedAll = true;
} else {
scope.selectedAll = false;
}
angular.forEach(scope.transactionData, function (txn) {
txn.isSelected = !scope.selectedAll;
});
};
scope.cancel = function () {
history.back();
};
scope.submit = function () {
this.batchRequests = [];
for (var i in scope.transactionData) {
if( scope.transactionData[i].isSelected ){
var loanRepaymentTransaction = {};
loanRepaymentTransaction.dateFormat = scope.df;
loanRepaymentTransaction.locale = scope.optlang.code;
loanRepaymentTransaction.transactionAmount = 0;
loanRepaymentTransaction.transactionDate = dateFilter(scope.transactionsDate, scope.df);
var relativeUrl = "loans/"+scope.transactionData[i].id+"/transactions/"+scope.transactionData[i].transactions[0].id+"?command=undo";
this.batchRequests.push({requestId: i, relativeUrl: relativeUrl,
method: "POST", body: JSON.stringify(loanRepaymentTransaction)});
}
}
resourceFactory.batchResource.post(this.batchRequests, function (data) {
console.log('data : ',data);
scope.getLoanRepaymentDetails();
});
};
}
});
mifosX.ng.application.controller('BulkUndoTransactionsController', ['$scope', '$rootScope', '$routeParams', 'ResourceFactory', '$location', 'dateFilter', '$route', mifosX.controllers.BulkUndoTransactionsController]).run(function ($log) {
$log.info("BulkUndoTransactionsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -3,6 +3,7 @@
CreateCenterController: function (scope, resourceFactory, location, dateFilter) {
scope.offices = [];
scope.staffs = [];
scope.villages = [];
scope.data = {};
scope.first = {};
scope.first.submitondate = new Date ();
@ -10,22 +11,56 @@
scope.restrictDate = new Date();
scope.first.date = new Date();
scope.addedGroups = [];
scope.isHiddenVillageOption = true;
scope.villageCount = {};
scope.count = "";
resourceFactory.centerTemplateResource.get({staffInSelectedOfficeOnly:true},function (data) {
scope.offices = data.officeOptions;
scope.villageCount = data.villageCounter;
scope.staffs = data.staffOptions;
scope.groups = data.groupMembersOptions;
scope.formData.officeId = data.officeOptions[0].id;
if(scope.response != undefined && scope.response.uiDisplayConfigurations.createCenter.isReadOnlyField.active){
scope.choice = 1;
}else{
scope.choice = 0;
}
});
if(scope.response != undefined){
scope.isHiddenVillageOption = scope.response.uiDisplayConfigurations.createCenter.isHiddenField.villageOptions;
}
scope.$watch(scope.formData.officeId, function() {
scope.changeOffice();
});
scope.changeOffice = function () {
scope.formData.villageId = null;
scope.villageCount = null;
resourceFactory.centerTemplateResource.get({staffInSelectedOfficeOnly:true, officeId: scope.formData.officeId
}, function (data) {
scope.staffs = data.staffOptions;
});
resourceFactory.centerTemplateResource.get({officeId: scope.formData.officeId, villagesInSelectedOfficeOnly:true}, function (data) {
scope.villages = data.villageOptions;
});
resourceFactory.centerTemplateResource.get({officeId: scope.formData.officeId }, function (data) {
scope.groups = data.groupMembersOptions;
});
};
scope.changeVillage = function () {
resourceFactory.centerTemplateResource.get({officeId: scope.formData.officeId, villagesInSelectedOfficeOnly:true,
villageId: scope.formData.villageId}, function (data) {
scope.villageCount = data.villageCounter;
scope.count = scope.villageCount.counter+1;
});
}
scope.setChoice = function () {
if (this.formData.active) {
scope.choice = 1;
@ -60,6 +95,10 @@
scope.submit = function () {
var reqDate = dateFilter(scope.first.date, scope.df);
this.formData.activationDate = reqDate;
if(scope.response != undefined && !scope.response.uiDisplayConfigurations.createCenter.isHiddenField.villageOptions){
this.formData.name = scope.villageCount.villageName +" "+ (scope.villageCount.counter+1);
}
if (scope.first.submitondate) {
reqDate = dateFilter(scope.first.submitondate, scope.df);
@ -71,6 +110,10 @@
scope.formData.groupMembers[i] = scope.addedGroups[i].id;
}
if(scope.response != undefined && scope.response.uiDisplayConfigurations.createCenter.isReadOnlyField.active){
scope.formData.active = true;
}
this.formData.locale = scope.optlang.code;
this.formData.dateFormat = scope.df;
this.formData.active = this.formData.active || false;

View File

@ -7,14 +7,47 @@
scope.formData = {};
scope.report = false;
scope.hidePentahoReport = true;
scope.groupMemberAccountList = [];
scope.routeToLoan = function (id) {
location.path('/viewloanaccount/' + id);
};
scope.routeToGroup = function (id) {
location.path('/viewgroup/' + id);
};
scope.routeToClient = function (id) {
location.path('/viewclient/' + id);
};
scope.isActiveMember = function (status) {
if (status == 'clientStatusType.active') {
return true;
} else {
return false;
}
};
scope.loanUtilizationChecks = [];
scope.centerId = routeParams.id;
resourceFactory.centerResource.get({centerId: routeParams.id, associations: 'groupMembers,collectionMeetingCalendar'}, function (data) {
scope.center = data;
$rootScope.officeName = data.officeName;
$rootScope.officeId = data.officeId;
$rootScope.centerName=data.name;
scope.isClosedCenter = scope.center.status.value == 'Closed';
scope.staffData.staffId = data.staffId;
if(data.collectionMeetingCalendar) {
scope.meeting = data.collectionMeetingCalendar;
}
var today = new Date();
if(data.collectionMeetingCalendar && data.collectionMeetingCalendar.meetingTime){
scope.meetingtime= new Date(data.collectionMeetingCalendar.meetingTime.iLocalMillis + (today.getTimezoneOffset() * 60*1000) );
}
//scope.meetingtime= new Date(data.collectionMeetingCalendar.meetingTime);
});
resourceFactory.centerLookupResource.get({centerId: routeParams.id}, function(data) {
scope.groupMemberAccountList = data;
});
scope.routeTo = function (id) {
location.path('/viewsavingaccount/' + id);
};
@ -28,6 +61,7 @@
resourceFactory.groupNotesResource.getAllNotes({groupId: routeParams.id}, function (data) {
scope.notes = data;
});
scope.deleteCenter = function () {
$modal.open({
templateUrl: 'delete.html',
@ -134,6 +168,20 @@
};
resourceFactory.centerLoanUtilizationCheck.getAll({centerId: routeParams.id}, function (data) {
scope.loanUtilizationChecks = data;
for (var i in scope.loanUtilizationChecks) {
for (var j in scope.loanUtilizationChecks[i].loanUtilizationCheckDetailData) {
scope.loanId = scope.loanUtilizationChecks[i].loanUtilizationCheckDetailData[j].loanId;
scope.auditDoneOn = dateFilter(new Date(scope.loanUtilizationChecks[i].auditDoneOn), scope.df);
}
}
});
scope.showEdit = function(id) {
location.path('/center/'+scope.centerId+'/loans/'+scope.loanId+'/editloanutilization/'+id);
}
scope.deleteAll = function (apptableName, entityId) {
resourceFactory.DataTablesResource.delete({datatablename: apptableName, entityId: entityId, genericResultSet: 'true'}, {}, function (data) {
route.reload();

View File

@ -4,6 +4,7 @@
scope.offices = [];
scope.cancelRoute = routeParams.id;
scope.date = {};
scope.synchmeeting = false;
resourceFactory.clientChargesResource.get({clientId: routeParams.id, resourceType: 'template'}, function (data) {
scope.chargeOptions = data.chargeOptions;
@ -21,6 +22,7 @@
scope.submit = function () {
this.formData.locale = scope.optlang.code;
this.formData.dateFormat = scope.df;
this.formData.synchMeeting = scope.synchmeeting;
if (scope.date.specificduedate) {
this.formData.dueDate = dateFilter(scope.date.specificduedate, scope.df);
}

View File

@ -7,6 +7,8 @@
scope.formData = {};
scope.restrictDate = new Date();
scope.taskPermissionName = 'ALL_FUNCTIONS';
scope.forcedSubmit = false;
scope.forceActivateClientPermission = 'FORCE_ACTIVATE_CLIENT';
// Transaction UI Related
@ -140,9 +142,36 @@
scope.showDateField = false;
scope.taskPermissionName = 'REACTIVATE_CLIENT';
break;
case "undoReject":
resourceFactory.clientResource.get({clientId: routeParams.id}, function (data) {
scope.client = data;
if (data.timeline.submittedOnDate) {
scope.mindate = new Date(data.timeline.submittedOnDate);
}
});
scope.labelName = 'label.input.reopeneddate';
scope.breadcrumbName = 'label.anchor.undoReject';
scope.modelName = 'reopenedDate';
scope.showActivationDateField = true;
scope.showDateField = false;
scope.taskPermissionName = 'UNDOREJECT_CLIENT';
break;
case "undoWithdrawn":
resourceFactory.clientResource.get({clientId: routeParams.id}, function (data) {
scope.client = data;
if (data.timeline.submittedOnDate) {
scope.mindate = new Date(data.timeline.submittedOnDate);
}
});
scope.labelName = 'label.input.reopeneddate';
scope.breadcrumbName = 'label.anchor.undoWithdrawn';
scope.modelName = 'reopenedDate';
scope.showActivationDateField = true;
scope.showDateField = false;
scope.taskPermissionName = 'UNDOWITHDRAWAL_CLIENT';
break;
}
scope.cancel = function () {
location.path('/viewclient/' + routeParams.id);
}
@ -155,9 +184,18 @@
}
if (scope.action == "activate") {
resourceFactory.clientResource.save({clientId: routeParams.id, command: 'activate'}, this.formData, function (data) {
var queryParams = {clientId: routeParams.id, command: 'activate'};
if(scope.forcedSubmit){
queryParams = {clientId: routeParams.id, command: 'forceActivate'};
}
resourceFactory.clientResource.save(queryParams, this.formData, function (data) {
location.path('/viewclient/' + data.clientId);
});
},
function(data){
if(data.data.errors[0].userMessageGlobalisationCode == "error.msg.duplicate.client.entry") {
scope.forcedSubmit = true;
}
});
}
if (scope.action == "assignstaff") {
delete this.formData.locale;
@ -194,6 +232,16 @@
location.path('/viewclient/' + data.clientId);
});
}
if (scope.action == "undoReject") {
resourceFactory.clientResource.save({clientId: routeParams.id, command: 'undoRejection'}, this.formData, function (data) {
location.path('/viewclient/' + data.clientId);
});
}
if (scope.action == "undoWithdrawn") {
resourceFactory.clientResource.save({clientId: routeParams.id, command: 'undoWithdrawal'}, this.formData, function (data) {
location.path('/viewclient/' + data.clientId);
});
}
if (scope.action == "acceptclienttransfer") {
delete this.formData.locale;
delete this.formData.dateFormat;

View File

@ -0,0 +1,190 @@
/**
* Created by jagadeeshakn on 7/20/2016.
*/
(function (module) {
mifosX.controllers = _.extend(module, {
ClientAddressController: function (scope, routeParams, location, resourceFactory) {
scope.clientId = routeParams.clientId;
scope.addressType = [];
scope.countrys = [];
scope.states = [];
scope.districts = [];
scope.talukas = [];
scope.formData = {};
scope.formDataList = [scope.formData];
scope.formData.addressTypes = [];
scope.addressFromVillages = false;
resourceFactory.addressTemplateResource.get({}, function (data) {
scope.addressType = data.addressTypeOptions;
scope.countries = data.countryDatas;
scope.setDefaultGISConfig();
});
resourceFactory.villageResource.getAllVillages({officeId: routeParams.officeId, limit: 1000},function (data) {
scope.villages = data;
});
var villageConfig = 'populate_client_address_from_villages';
resourceFactory.configurationResource.get({configName: villageConfig}, function (response) {
if (response.enabled == true){
scope.addressFromVillages = true;
}else {
scope.addressFromVillages = false;
}
});
scope.setDefaultGISConfig = function () {
if(scope.responseDefaultGisData && scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig && scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address){
if(scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.countryName) {
var countryName = scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.countryName;
scope.defaultCountry = _.filter(scope.countries, function (country) {
return country.countryName === countryName;
});
scope.formData.countryId = scope.defaultCountry[0].countryId;
scope.states = scope.defaultCountry[0].statesDatas;
}
if(scope.states && scope.states.length > 0 && scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.stateName) {
var stateName = scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.stateName;
scope.defaultState = _.filter(scope.states, function (state) {
return state.stateName === stateName;
});
scope.formData.stateId = scope.defaultState[0].stateId;
scope.districts = scope.defaultState[0].districtDatas;
}
}
};
scope.changeCountry = function (countryId) {
if (countryId != null) {
scope.selectCountry = _.filter(scope.countries, function (country) {
return country.countryId == countryId;
})
if (scope.formData.stateId) {
delete scope.formData.stateId;
}
if (scope.formData.districtId) {
delete scope.formData.districtId;
}
if(scope.formData.talukaId){
delete scope.formData.talukaId;
}
scope.states = scope.selectCountry[0].statesDatas;
}
}
scope.changeState = function (stateId) {
if (stateId != null) {
scope.selectState = _.filter(scope.states, function (state) {
return state.stateId == stateId;
})
if (scope.formData.districtId) {
delete scope.formData.districtId;
}
if(scope.formData.talukaId){
delete scope.formData.talukaId;
}
scope.districts = scope.selectState[0].districtDatas;
}
}
scope.changeDistrict = function (districtId) {
if (districtId != null) {
scope.selectDistrict = _.filter(scope.districts, function (districts) {
return districts.districtId == districtId;
})
if(scope.formData.talukaId){
delete scope.formData.talukaId;
}
scope.talukas = scope.selectDistrict[0].talukaDatas;
}
}
scope.changeVillage = function (villageId) {
if (villageId != null) {
if (scope.formData.districtId) {
delete scope.formData.districtId;
}
if(scope.formData.talukaId){
delete scope.formData.talukaId;
}
scope.formData.villageTown =null;
scope.talukas = null;
scope.formData.postalCode = null;
scope.districts = null;
resourceFactory.villageResource.get({villageId: villageId}, function (response) {
if (response.addressData.length > 0) {
if(response.villageName){
scope.formData.villageTown = response.villageName;
}
if (response.addressData[0].countryData) {
scope.formData.countryId = response.addressData[0].countryData.countryId;
}
if (response.addressData[0].stateData) {
scope.states = response.addressData[0].countryData.statesDatas;
scope.formData.stateId = response.addressData[0].stateData.stateId;
}
if (response.addressData[0].districtData) {
scope.districts = response.addressData[0].stateData.districtDatas;
scope.formData.districtId = response.addressData[0].districtData.districtId;
}
scope.talukas = response.addressData[0].districtData.talukaDatas;
if (response.addressData[0].talukaData) {
scope.formData.talukaId = response.addressData[0].talukaData.talukaId;
}
if (response.addressData[0].postalCode) {
scope.formData.postalCode = response.addressData[0].postalCode;
}
}
});
}
}
scope.submit = function () {
scope.entityType = "clients";
scope.formData.locale = scope.optlang.code;
scope.formData.dateFormat = scope.df;
if (scope.formData.countryId == null || scope.formData.countryId == ""){
delete scope.formData.countryId;
}
if (scope.formData.stateId == null || scope.formData.stateId == ""){
delete scope.formData.stateId;
}
if (scope.formData.districtId == null || scope.formData.districtId == ""){
delete scope.formData.districtId;
}
if (scope.formData.talukaId == null || scope.formData.talukaId == ""){
delete scope.formData.talukaId;
}
if (scope.formData.addressTypes == null || scope.formData.addressTypes == "") {
delete scope.formData.addressTypes;
}
if (scope.formData.houseNo == null || scope.formData.houseNo == "") {
delete scope.formData.houseNo;
}
if (scope.formData.addressLineOne == null || scope.formData.addressLineOne == "") {
delete scope.formData.addressLineOne;
}
resourceFactory.addressResource.create({entityType:scope.entityType,entityId :scope.clientId }, {addresses: scope.formDataList}, function (data) {
location.path('/viewclient/' + scope.clientId);
});
};
}
});
mifosX.ng.application.controller('ClientAddressController', ['$scope', '$routeParams', '$location', 'ResourceFactory',mifosX.controllers.ClientAddressController]).run(function ($log) {
$log.info("ClientAddressController initialized");
});
}(mifosX.controllers || {}));

View File

@ -4,10 +4,21 @@
scope.clientId = routeParams.id
scope.charges = [];
scope.chargesPerPage = 14;
scope.clientRecurringCharges=[];
scope.routeToCharge = function (chargeId) {
location.path('/viewclient/' + scope.clientId + '/charges/' + chargeId);
};
scope.routeToRecurringCharge = function (recurringChargeId) {
location.path('/viewclient/' + scope.clientId + '/recurringcharges/' + recurringChargeId);
};
var items = resourceFactory.clientRecurringChargesResource.getRecurringCharges({
clientId:routeParams.id
},function(data){
scope.clientRecurringCharges=data;
})
scope.getClientChargeResultsPage = function (pageNumber) {
var items = resourceFactory.clientChargesResource.getCharges({

View File

@ -1,6 +1,9 @@
/**
* Created by jagadeeshakn on 8/1/2016.
*/
(function (module) {
mifosX.controllers = _.extend(module, {
CreateClientController: function (scope, resourceFactory, location, http, dateFilter, API_VERSION, $upload, $rootScope, routeParams) {
ClientCreationController: function (scope, resourceFactory, location, routeParams, http, dateFilter, API_VERSION, $upload, $rootScope, routeParams) {
scope.offices = [];
scope.staffs = [];
scope.savingproducts = [];
@ -15,6 +18,7 @@
scope.forceOffice = null;
scope.showNonPersonOptions = false;
scope.clientPersonId = 1;
scope.isFamilyMembers = true;
var requestParams = {staffInSelectedOfficeOnly:true};
if (routeParams.groupId) {
@ -51,6 +55,14 @@
scope.formData.staffId = data.staffId;
}
}
if(routeParams.staffId) {
for(var i in scope.staffs) {
if (scope.staffs[i].id == routeParams.staffId) {
scope.formData.staffId = scope.staffs[i].id;
break;
}
}
}
});
scope.displayPersonOrNonPersonOptions = function (legalFormId) {
@ -78,10 +90,10 @@
}
};
if(routeParams.groupId) {
scope.cancel = '#/viewgroup/' + routeParams.groupId
scope.groupid = routeParams.groupId;
scope.cancel = '#/viewgroup/' + routeParams.groupId
scope.groupid = routeParams.groupId;
}else {
scope.cancel = "#/clients"
scope.cancel = "#/clients"
}
scope.submit = function () {
@ -128,12 +140,19 @@
}
resourceFactory.clientResource.save(this.formData, function (data) {
if(routeParams.pledgeId){
var updatedData = {};
updatedData.clientId = data.clientId;
resourceFactory.pledgeResource.update({ pledgeId : routeParams.pledgeId}, updatedData, function(pledgeData){
});
}
location.path('/viewclient/' + data.clientId);
});
};
}
});
mifosX.ng.application.controller('CreateClientController', ['$scope', 'ResourceFactory', '$location', '$http', 'dateFilter', 'API_VERSION', '$upload', '$rootScope', '$routeParams', mifosX.controllers.CreateClientController]).run(function ($log) {
$log.info("CreateClientController initialized");
mifosX.ng.application.controller('ClientCreationController', ['$scope', 'ResourceFactory', '$location', '$routeParams', '$http', 'dateFilter', 'API_VERSION', '$upload', '$rootScope', '$routeParams', mifosX.controllers.ClientCreationController]).run(function ($log) {
$log.info("ClientCreationController initialized");
});
}(mifosX.controllers || {}));

View File

@ -16,6 +16,91 @@
scope.formData.documentTypeId = data.allowedDocumentTypes[0].id;
});
scope.validateRsaIdnumber=function()
{
var invalid = 0;
if (scope.formData.documentTypeId == 2) {
var idnumber = scope.formData.documentKey;
if (isNaN(idnumber)) {
scope.error = "label.error.LuhnsAlgorithm.notvalidnumber";
invalid++;
}
// check length of 13 digits
if (idnumber.length != 13) {
scope.error = "label.error.LuhnsAlgorithm.numberdosenothave13digits";
invalid++;
}
else {
// check that YYMMDD group is a valid date
var yy = idnumber.substring(0, 2),
mm = idnumber.substring(2, 4),
dd = idnumber.substring(4, 6);
var dob = new Date(yy, (mm - 1), dd);
// check values - add one to month because Date() uses 0-11 for months
if (!(((dob.getFullYear() + '').substring(2, 4) == yy) && (dob.getMonth() == mm - 1) && (dob.getDate() == dd))) {
scope.error = "label.error.LuhnsAlgorithm.firstdigitsinvalid";
invalid++;
}
else {
// evaluate GSSS group for gender and sequence
var gender = parseInt(idnumber.substring(6, 10), 10) > 5000 ? "M" : "F";
// determine citizenship from third to last digit (C)
var saffer = parseInt(idnumber.substring(10, 11), 10) === 0 ? "C" : "F";
// ensure third to last digit is a 1 or a 0
if (idnumber.substring(10, 11) > 2) {
scope.error = "label.error.LuhnsAlgorithm.thirddigitshouldbe1or0";
invalid++;
/*return (ncheck % 10) === 0;*/
}
else {
// ensure second to last digit is a 8 or a 9
if (idnumber.substring(11, 12) < 8) {
scope.error = "label.error.LuhnsAlgorithm.secondlastdigitshould8or9r1";
invalid++;
}
else {
// calculate check bit (Z) using the Luhn algorithm
var ncheck = 0,
beven = false;
for (var c = idnumber.length - 1; c >= 0; c--) {
var cdigit = idnumber.charAt(c),
ndigit = parseInt(cdigit, 10);
if (beven) {
if ((ndigit *= 2) > 9) ndigit -= 9;
}
ncheck += ndigit;
beven = !beven;
}
if ((ncheck % 10) !== 0) {
scope.error = "label.error.LuhnsAlgorithm.checkbitincorrect";
invalid++;
return (ncheck % 10) === 0;
}
// if one or more checks fail, display details
if (invalid <= 0) {
scope.error = "label.error.LuhnsAlgorithm.idnumbervalid";
}
}
}
}
}
}
else {
scope.error = "label.error.LuhnsAlgorithm.selecId";
}
};
scope.submit = function () {
resourceFactory.clientIdenfierResource.save({clientId: scope.clientId}, this.formData, function (data) {
location.path('/viewclient/' + data.clientId);

View File

@ -0,0 +1,47 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateClientOccupationController: function (scope, routeParams, resourceFactory, location, $modal, route, $http) {
scope.clientId = routeParams.clientId;
scope.formData = {};
scope.subOccupations = [];
scope.formData.clientMonthWiseIncomeExpense = [];
scope.formData.isMonthWiseIncome = false;
resourceFactory.cashFlowCategoryResource.getAll({isFetchIncomeExpenseDatas: true}, function(data){
scope.occupations = data;
});
scope.slectedOccupation = function(occupationId, subOccupationId){
_.each(scope.occupationOption.incomeExpenseDatas, function(iterate){
if(iterate.cashflowCategoryId == occupationId && iterate.isQuantifierNeeded == true && iterate.id == subOccupationId){
scope.quantifierLabel = iterate.quantifierLabel;
scope.isQuantifierNeeded = iterate.isQuantifierNeeded;
} else {
scope.isQuantifierNeeded = false;
}
})
}
scope.subOccupationNotAvailable = function(occupationId){
_.each(scope.occupationOption, function(occupation){
if(occupation == occupationId && _.isUndefined(occupation.incomeExpenseDatas)){
scope.isQuantifierNeeded = false;
return scope.isQuantifierNeeded;
}
})
}
scope.submit = function () {
scope.formData.locale = "en";
resourceFactory.incomeExpenseAndHouseHoldExpense.save({clientId: scope.clientId},scope.formData, function (data) {
location.path('/viewclient/' + scope.clientId)
});
}
}
});
mifosX.ng.application.controller('CreateClientOccupationController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', '$http', mifosX.controllers.CreateClientOccupationController]).run(function ($log) {
$log.info("CreateClientOccupationController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,44 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateExistingLoanController: function (scope, routeParams, resourceFactory, location, $modal, route, dateFilter) {
scope.clientId = routeParams.clientId;
scope.formData = {};
scope.sourceCvOptions = [];
scope.bureauCvOptions = [];
scope.lenderCvOptions = [];
scope.loanTypeCvOptions = [];
scope.externalLoanPurposeOptions = [];
scope.loanTenaureOptions = [];
scope.termPeriodFrequencyType = [];
scope.loanStatusOptions = [];
resourceFactory.clientExistingLoanTemplate.get({clientId: scope.clientId}, function (data) {
scope.existingLoanSourceOption = data.existingLoanSourceOption;
scope.creditBureauProductsOption = data.creditBureauProductsOption;
scope.lenderOption = data.lenderOption;
scope.loanTypeOption = data.loanTypeOption;
scope.externalLoanPurposeOption = data.externalLoanPurposeOption;
scope.loanTenaureOption = data.loanTenaureOption;
scope.termPeriodFrequencyType = data.termPeriodFrequencyType;
scope.loanStatusOption = data.loanStatusOption;
});
scope.submit = function () {
scope.formData.archive = "1";
if (!_.isUndefined(scope.formData.disbursedDate)) {
this.formData.disbursedDate = dateFilter(scope.formData.disbursedDate, scope.df);
}
this.formData.dateFormat = scope.df;
this.formData.locale = scope.optlang.code;
resourceFactory.clientExistingLoan.save({clientId: scope.clientId}, this.formData, function (data) {
location.path('/viewclient/' + scope.clientId);
});
};
}
});
mifosX.ng.application.controller('CreateExistingLoanController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', 'dateFilter', mifosX.controllers.CreateExistingLoanController]).run(function ($log) {
$log.info("CreateExistingLoanController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,53 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateFamilyMemberController: function (scope, routeParams, resourceFactory, location, $modal, route, dateFilter) {
scope.clientId = routeParams.clientId;
scope.salutationOptions = [];
scope.relationshipOptions = [];
scope.genderOptions = [];
scope.educationOptions = [];
scope.occupationOptions = [];
scope.subOccupations = [];
resourceFactory.familyDetailsTemplate.get({clientId: scope.clientId}, function (data) {
scope.salutationOptions = data.salutationOptions;
scope.relationshipOptions = data.relationshipOptions;
scope.genderOptions = data.genderOptions;
scope.educationOptions = data.educationOptions;
scope.occupationOptions = data.occupationOptions;
});
scope.submit = function () {
if (scope.salutationId) {
this.formData.salutationId = scope.salutationId;
}
if (scope.relationshipId) {
this.formData.relationshipId = scope.relationshipId;
}
if (scope.genderId) {
this.formData.genderId = scope.genderId;
}
if (scope.formData.dateOfBirth) {
this.formData.dateOfBirth = dateFilter(scope.formData.dateOfBirth, scope.df);
}
if (scope.occupationId) {
this.formData.occupationDetailsId = scope.occupationOption.id;
}
if (scope.educationId) {
this.formData.educationId = scope.educationId;
}
scope.formData.dateFormat = scope.df;
this.formData.locale = scope.optlang.code;
resourceFactory.familyDetails.save({clientId: scope.clientId}, this.formData, function (data) {
location.path('/listfamilydetails/' + scope.clientId)
});
};
}
});
mifosX.ng.application.controller('CreateFamilyMemberController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', 'dateFilter', mifosX.controllers.CreateFamilyMemberController]).run(function ($log) {
$log.info("CreateFamilyMemberController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,19 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateFamilyMemberSummaryController: function (scope, routeParams, resourceFactory, location, $modal, route, $http) {
scope.clientId = routeParams.clientId;
scope.submit = function () {
this.formData.locale = scope.optlang.code;
resourceFactory.familyDetailsSummary.save({clientId: scope.clientId}, this.formData, function (data) {
location.path('/viewclient/' + scope.clientId)
});
};
}
});
mifosX.ng.application.controller('CreateFamilyMemberSummaryController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', '$http', mifosX.controllers.CreateFamilyMemberSummaryController]).run(function ($log) {
$log.info("CreateFamilyMemberSummaryController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,340 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateNewClientController: function (scope, resourceFactory, location, routeParams, http, dateFilter, API_VERSION, $upload, $rootScope, routeParams) {
scope.offices = [];
scope.staffs = [];
scope.savingproducts = [];
scope.first = {};
scope.first.date = new Date();
scope.first.submitondate = new Date ();
scope.formData = {};
scope.clientNonPersonDetails = {};
scope.restrictDate = new Date();
scope.showSavingOptions = false;
scope.opensavingsproduct = false;
scope.forceOffice = null;
scope.showNonPersonOptions = false;
scope.clientPersonId = 1;
scope.addressType = [];
scope.countrys = [];
scope.states = [];
scope.districts = [];
scope.talukas = [];
scope.formAddressData = {};
scope.formDataList = [scope.formAddressData];
scope.formAddressData.addressTypes = [];
scope.configurations = [];
scope.enableClientAddress = false;
scope.addressFromVillages = false;
scope.villages = [];
scope.village = {};
scope.formAddressData.districtId ;
var requestParams = {staffInSelectedOfficeOnly:true};
if (routeParams.groupId) {
requestParams.groupId = routeParams.groupId;
}
if (routeParams.officeId) {
requestParams.officeId = routeParams.officeId;
}
resourceFactory.clientTemplateResource.get(requestParams, function (data) {
scope.offices = data.officeOptions;
scope.staffs = data.staffOptions;
scope.formData.officeId = scope.offices[0].id;
scope.savingproducts = data.savingProductOptions;
scope.genderOptions = data.genderOptions;
scope.clienttypeOptions = data.clientTypeOptions;
scope.clientClassificationOptions = data.clientClassificationOptions;
scope.clientNonPersonConstitutionOptions = data.clientNonPersonConstitutionOptions;
scope.clientNonPersonMainBusinessLineOptions = data.clientNonPersonMainBusinessLineOptions;
scope.clientLegalFormOptions = data.clientLegalFormOptions;
if (data.savingProductOptions.length > 0) {
scope.showSavingOptions = true;
}
if(routeParams.officeId) {
scope.formData.officeId = routeParams.officeId;
for(var i in data.officeOptions) {
if(data.officeOptions[i].id == routeParams.officeId) {
scope.forceOffice = data.officeOptions[i];
break;
}
}
}
if(routeParams.groupId) {
if(typeof data.staffId !== "undefined") {
scope.formData.staffId = data.staffId;
}
}
if(routeParams.staffId) {
for(var i in scope.staffs) {
if (scope.staffs[i].id == routeParams.staffId) {
scope.formData.staffId = scope.staffs[i].id;
break;
}
}
}
var addressConfig = 'enable-clients-address';
resourceFactory.configurationResource.get({configName: addressConfig}, function (response) {
if (response.enabled == true) {
scope.enableClientAddress = true;
resourceFactory.villageResource.getAllVillages({officeId:scope.formData.officeId, limit: 1000},function (data) {
scope.villages = data;
});
resourceFactory.addressTemplateResource.get({}, function (data) {
scope.addressType = data.addressTypeOptions;
scope.countries = data.countryDatas;
scope.setDefaultGISConfig();
});
} else {
scope.enableClientAddress = false;
}
});
});
var villageConfig = 'populate_client_address_from_villages';
resourceFactory.configurationResource.get({configName: villageConfig}, function (response) {
if (response.enabled == true){
scope.addressFromVillages = true;
}else {
scope.addressFromVillages = false;
}
});
scope.setDefaultGISConfig = function () {
if(scope.responseDefaultGisData && scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig && scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address){
if(scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.countryName) {
var countryName = scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.countryName;
scope.defaultCountry = _.filter(scope.countries, function (country) {
return country.countryName === countryName;
});
scope.formAddressData.countryId = scope.defaultCountry[0].countryId;
scope.states = scope.defaultCountry[0].statesDatas;
}
if(scope.states && scope.states.length > 0 && scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.stateName) {
var stateName = scope.responseDefaultGisData.uiDisplayConfigurations.defaultGISConfig.address.stateName;
scope.defaultState = _.filter(scope.states, function (state) {
return state.stateName === stateName;
});
scope.formAddressData.stateId = scope.defaultState[0].stateId;
scope.districts = scope.defaultState[0].districtDatas;
}
}
};
scope.displayPersonOrNonPersonOptions = function (legalFormId) {
if(legalFormId == scope.clientPersonId || legalFormId == null) {
scope.showNonPersonOptions = false;
}else {
scope.showNonPersonOptions = true;
}
};
scope.changeOffice = function (officeId) {
resourceFactory.clientTemplateResource.get({staffInSelectedOfficeOnly:true, officeId: officeId
}, function (data) {
scope.staffs = data.staffOptions;
scope.savingproducts = data.savingProductOptions;
});
if(scope.addressFromVillages ) {
resourceFactory.villageResource.getAllVillages({officeId: officeId, limit: 1000}, function (data) {
scope.villages = data;
});
}
};
scope.setChoice = function () {
if (this.formData.active) {
scope.choice = 1;
}
else if (!this.formData.active) {
scope.choice = 0;
}
};
if(routeParams.groupId) {
scope.cancel = '#/viewgroup/' + routeParams.groupId
scope.groupid = routeParams.groupId;
}else {
scope.cancel = "#/clients"
}
scope.changeVillage = function (villageId) {
if(villageId != null){
if(scope.formAddressData.districtId){
delete scope.formAddressData.districtId;
}
if(scope.formAddressData.talukaId){
delete scope.formAddressData.talukaId;
}
scope.formAddressData.villageTown = null
scope.talukas = null;
scope.formAddressData.postalCode = null;
scope.districts = null;
resourceFactory.villageResource.get({villageId:villageId},function (response) {
if (response.addressData.length > 0) {
if(response.villageName){
scope.formAddressData.villageTown = response.villageName;
}
if (response.addressData[0].countryData) {
scope.formAddressData.countryId = response.addressData[0].countryData.countryId;
}
if (response.addressData[0].stateData) {
scope.states = response.addressData[0].countryData.statesDatas;
scope.formAddressData.stateId = response.addressData[0].stateData.stateId;
}
if (response.addressData[0].districtData) {
scope.districts = response.addressData[0].stateData.districtDatas;
scope.formAddressData.districtId = response.addressData[0].districtData.districtId;
}
scope.talukas = response.addressData[0].districtData.talukaDatas;
if (response.addressData[0].talukaData) {
scope.formAddressData.talukaId = response.addressData[0].talukaData.talukaId;
}
if (response.addressData[0].postalCode) {
scope.formAddressData.postalCode = response.addressData[0].postalCode;
}
}
});
}
}
scope.changeCountry = function (countryId) {
if (countryId != null) {
scope.selectCountry = _.filter(scope.countries, function (country) {
return country.countryId == countryId;
})
if(scope.formAddressData.stateId){
delete scope.formAddressData.stateId;
}
if(scope.formAddressData.districtId){
delete scope.formAddressData.districtId;
}
if(scope.formAddressData.talukaId){
delete scope.formAddressData.talukaId;
}
scope.states = scope.selectCountry[0].statesDatas;
scope.districts = null;
scope.talukas = null;
}
}
scope.changeState = function (stateId) {
if (stateId != null) {
scope.selectState = _.filter(scope.states, function (state) {
return state.stateId == stateId;
})
if(scope.formAddressData.districtId){
delete scope.formAddressData.districtId;
}
if(scope.formAddressData.talukaId){
delete scope.formAddressData.talukaId;
}
scope.districts = scope.selectState[0].districtDatas;
scope.talukas = null;
}
}
scope.changeDistrict = function (districtId) {
if (districtId != null) {
scope.selectDistrict = _.filter(scope.districts, function (districts) {
return districts.districtId == districtId;
})
if(scope.formAddressData.talukaId){
delete scope.formAddressData.talukaId;
}
scope.talukas = scope.selectDistrict[0].talukaDatas;
}
}
scope.submit = function () {
var reqDate = dateFilter(scope.first.date, scope.df);
this.formData.locale = scope.optlang.code;
this.formData.active = this.formData.active || false;
this.formData.dateFormat = scope.df;
this.formData.activationDate = reqDate;
if (routeParams.groupId) {
this.formData.groupId = routeParams.groupId;
}
if (routeParams.officeId) {
this.formData.officeId = routeParams.officeId;
}
if (scope.first.submitondate) {
reqDate = dateFilter(scope.first.submitondate, scope.df);
this.formData.submittedOnDate = reqDate;
}
if (scope.first.dateOfBirth) {
this.formData.dateOfBirth = dateFilter(scope.first.dateOfBirth, scope.df);
}
if(scope.first.incorpValidityTillDate) {
this.formData.clientNonPersonDetails.locale = scope.optlang.code;
this.formData.clientNonPersonDetails.dateFormat = scope.df;
this.formData.clientNonPersonDetails.incorpValidityTillDate = dateFilter(scope.first.incorpValidityTillDate, scope.df);
}
if (!scope.opensavingsproduct) {
this.formData.savingsProductId = null;
}
if (scope.formAddressData.countryId == null || scope.formAddressData.countryId == ""){
delete scope.formAddressData.countryId;
}
if (scope.formAddressData.stateId == null || scope.formAddressData.stateId == ""){
delete scope.formAddressData.stateId;
}
if (scope.formAddressData.districtId == null || scope.formAddressData.districtId == ""){
delete scope.formAddressData.districtId;
}
if (scope.formAddressData.talukaId == null || scope.formAddressData.talukaId == ""){
delete scope.formAddressData.talukaId;
}
if (scope.formAddressData.addressTypes == null || scope.formAddressData.addressTypes == "") {
delete scope.formAddressData.addressTypes;
}
if (scope.formAddressData.houseNo == null || scope.formAddressData.houseNo == "") {
delete scope.formAddressData.houseNo;
}
if (scope.formAddressData.addressLineOne == null || scope.formAddressData.addressLineOne == "") {
delete scope.formAddressData.addressLineOne;
}
if(scope.enableClientAddress){
this.formData.addresses=scope.formDataList;
}
resourceFactory.clientResource.save(this.formData, function (data) {
if(routeParams.pledgeId){
var updatedData = {};
updatedData.clientId = data.clientId;
resourceFactory.pledgeResource.update({ pledgeId : routeParams.pledgeId}, updatedData, function(pledgeData){
});
}
location.path('/viewclient/' + data.clientId);
});
};
}
});
mifosX.ng.application.controller('CreateNewClientController', ['$scope', 'ResourceFactory', '$location', '$routeParams', '$http', 'dateFilter', 'API_VERSION', '$upload', '$rootScope', '$routeParams', mifosX.controllers.CreateNewClientController]).run(function ($log) {
$log.info("CreateNewClientController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,157 @@
/**
* Created by jagadeeshakn on 7/29/2016.
*/
(function (module) {
mifosX.controllers = _.extend(module, {
EditClientAddressController: function (scope, routeParams, location, resourceFactory) {
scope.addressId = routeParams.addressId;
scope.clientId = routeParams.clientId;
scope.addressType = [];
scope.countries = [];
scope.states = [];
scope.districts = [];
scope.talukas = [];
scope.formData = {};
scope.formData.addressTypes = [];
scope.entityType="clients";
resourceFactory.addressTemplateResource.get({},function (data) {
scope.addressType = data.addressTypeOptions;
scope.countries = data.countryDatas;
scope.getClientAddress();
});
scope.getClientAddress = function () {
resourceFactory.entityAddressResource.getAddress({
entityType: scope.entityType,
entityId: scope.clientId,
addressId: scope.addressId
}, function (data) {
if (data.addressEntityData[0].addressType) {
scope.addressTypeId = data.addressEntityData[0].addressType.id;
}
if (data.houseNo) {
scope.formData.houseNo = data.houseNo;
}
if (data.addressLineOne) {
scope.formData.addressLineOne = data.addressLineOne;
}
if (data.villageTown) {
scope.formData.villageTown = data.villageTown;
}
if (data.postalCode) {
scope.formData.postalCode = data.postalCode;
}
scope.districts = data.stateData.districtDatas;
if (data.districtData && data.districtData.districtId) {
scope.formData.districtId = data.districtData.districtId;
}
scope.states = data.countryData.statesDatas;
if (data.stateData && data.stateData.stateId) {
scope.formData.stateId = data.stateData.stateId;
}
if (data.countryData && data.countryData.countryId) {
scope.formData.countryId = data.countryData.countryId;
}
scope.talukas = data.districtData.talukaDatas;
if (data.talukaData && data.talukaData.talukaId) {
scope.formData.talukaId = data.talukaData.talukaId;
}
});
}
scope.changeCountry = function (countryId) {
if (countryId !=null) {
scope.selectCountry = _.filter(scope.countries, function (country) {
return country.countryId == countryId;
})
if(scope.formData.stateId){
delete scope.formData.stateId;
}
if(scope.formData.districtId){
delete scope.formData.districtId;
}
if(scope.formData.talukaId){
delete scope.formData.talukaId;
}
scope.states = scope.selectCountry[0].statesDatas;
scope.districts = null;
scope.talukas = null;
}
}
scope.changeState = function (stateId) {
if (stateId != null) {
scope.selectState = _.filter(scope.states, function (state) {
return state.stateId == stateId;
})
if(scope.formData.districtId){
delete scope.formData.districtId;
}
if(scope.formData.talukaId){
delete scope.formData.talukaId;
}
scope.districts = scope.selectState[0].districtDatas;
scope.talukas = null;
}
}
scope.changeDistrict = function (districtId) {
if (districtId != null) {
scope.talukas = null;
scope.selectDistrict = _.filter(scope.districts, function (districts) {
return districts.districtId == districtId;
})
if(scope.formData.talukaId){
delete scope.formData.talukaId;
}
scope.talukas = scope.selectDistrict[0].talukaDatas;
}
}
scope.submit = function () {
scope.formData.entityId = scope.clientId;
scope.formData.locale = scope.optlang.code;
scope.formData.dateFormat = scope.df;
scope.formData.addressId = scope.addressId;
scope.formData.addressTypes = [scope.addressTypeId];
if (scope.formData.countryId == null || scope.formData.countryId == ""){
delete scope.formData.countryId;
}
if (scope.formData.stateId == null || scope.formData.stateId == ""){
delete scope.formData.stateId;
}
if (scope.formData.districtId == null || scope.formData.districtId == ""){
delete scope.formData.districtId;
}
if (scope.formData.talukaId == null || scope.formData.talukaId == ""){
delete scope.formData.talukaId;
}
if (scope.formData.addressTypes == null || scope.formData.addressTypes == "") {
delete scope.formData.addressTypes;
}
if (scope.formData.houseNo == null || scope.formData.houseNo == "") {
delete scope.formData.houseNo;
}
if (scope.formData.addressLineOne == null || scope.formData.addressLineOne == "") {
delete scope.formData.addressLineOne;
}
resourceFactory.entityAddressResource.update({entityType:scope.entityType,entityId :scope.clientId,addressId :scope.addressId }, scope.formData, function (data) {
location.path('/viewclient/' + scope.clientId);
});
};
}
});
mifosX.ng.application.controller('EditClientAddressController', ['$scope', '$routeParams', '$location', 'ResourceFactory',mifosX.controllers.EditClientAddressController]).run(function ($log) {
$log.info("EditClientAddressController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,63 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditClientAssetController: function (scope, routeParams, resourceFactory, location, $modal, route) {
scope.clientId = routeParams.clientId;
scope.assetId = routeParams.assetId;
scope.formData = {};
scope.formData.isMonthWiseIncome = false;
resourceFactory.cashFlowCategoryResource.getAll({isFetchIncomeExpenseDatas: true}, function(data){
scope.occupations = data;
});
resourceFactory.incomeExpenseAndHouseHoldExpense.get({clientId:scope.clientId, incomeAndExpenseId: scope.assetId}, function(data){
angular.forEach(scope.occupations, function(occ){
if(occ.id == data.incomeExpenseData.cashflowCategoryId){
scope.occupationOption = occ;
}
});
scope.formData.incomeExpenseId = data.incomeExpenseData.id;
scope.formData.quintity = data.quintity;
scope.formData.totalIncome = data.totalIncome;
scope.formData.totalExpense = data.totalExpense;
scope.formData.isPrimaryIncome = data.isPrimaryIncome;
scope.isQuantifierNeeded = data.incomeExpenseData.isQuantifierNeeded;
scope.quantifierLabel = data.incomeExpenseData.quantifierLabel;
});
scope.slectedOccupation = function(occupationId, subOccupationId){
for(var i in scope.occupations){
for(var j in scope.occupations[i].incomeExpenseDatas){
if(scope.occupations[i].incomeExpenseDatas[j].cashflowCategoryId == occupationId
&& scope.occupations[i].incomeExpenseDatas[j].id == subOccupationId &&
scope.occupations[i].incomeExpenseDatas[j].isQuantifierNeeded == true){
delete scope.formData.quintity;
scope.quantifierLabel = scope.occupations[i].incomeExpenseDatas[j].quantifierLabel;
scope.isQuantifierNeeded = scope.occupations[i].incomeExpenseDatas[j].isQuantifierNeeded;
}
}
}
}
scope.subOccupationNotAvailable = function(occupationId){
_.each(scope.occupations, function(occupation){
if(occupation.id == occupationId){
scope.isQuantifierNeeded = false;
}
})
}
scope.submit = function () {
scope.formData.locale = "en";
resourceFactory.incomeExpenseAndHouseHoldExpense.update({clientId: scope.clientId, incomeAndExpenseId: scope.assetId},scope.formData, function (data) {
location.path('/viewclient/' + scope.clientId)
});
}
}
});
mifosX.ng.application.controller('EditClientAssetController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', '$http', mifosX.controllers.EditClientAssetController]).run(function ($log) {
$log.info("EditClientAssetController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,63 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditClientOccupationController: function (scope, routeParams, resourceFactory, location, $modal, route, $http) {
scope.clientId = routeParams.clientId;
scope.incomeAndExpenseId = routeParams.occupationId;
scope.formData = {};
scope.formData.isMonthWiseIncome = false;
resourceFactory.cashFlowCategoryResource.getAll({isFetchIncomeExpenseDatas: true}, function(data){
scope.occupations = data;
});
resourceFactory.incomeExpenseAndHouseHoldExpense.get({clientId:scope.clientId, incomeAndExpenseId: scope.incomeAndExpenseId}, function(data){
angular.forEach(scope.occupations, function(occ){
if(occ.id == data.incomeExpenseData.cashflowCategoryId){
scope.occupationOption = occ;
}
});
scope.formData.incomeExpenseId = data.incomeExpenseData.id;
scope.formData.quintity = data.quintity;
scope.formData.totalIncome = data.totalIncome;
scope.formData.totalExpense = data.totalExpense;
scope.formData.isPrimaryIncome = data.isPrimaryIncome;
scope.isQuantifierNeeded = data.incomeExpenseData.isQuantifierNeeded
scope.quantifierLabel = data.incomeExpenseData.quantifierLabel;
});
scope.slectedOccupation = function(occupationId, subOccupationId){
for(var i in scope.occupations){
for(var j in scope.occupations[i].incomeExpenseDatas){
if(scope.occupations[i].incomeExpenseDatas[j].cashflowCategoryId == occupationId
&& scope.occupations[i].incomeExpenseDatas[j].id == subOccupationId &&
scope.occupations[i].incomeExpenseDatas[j].isQuantifierNeeded == true){
scope.quantifierLabel = scope.occupations[i].incomeExpenseDatas[j].quantifierLabel;
scope.isQuantifierNeeded = scope.occupations[i].incomeExpenseDatas[j].isQuantifierNeeded;
}
}
}
}
scope.subOccupationNotAvailable = function(occupationId){
_.each(scope.occupations, function(occupation){
if(occupation.id == occupationId){
scope.isQuantifierNeeded = false;
}
})
}
scope.submit = function () {
scope.formData.locale = "en";
resourceFactory.incomeExpenseAndHouseHoldExpense.update({clientId: scope.clientId, incomeAndExpenseId: scope.incomeAndExpenseId},scope.formData, function (data) {
location.path('/viewclient/' + scope.clientId)
});
}
}
});
mifosX.ng.application.controller('EditClientOccupationController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', '$http', mifosX.controllers.EditClientOccupationController]).run(function ($log) {
$log.info("EditClientOccupationController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,91 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditExistingLoanController: function (scope, routeParams, resourceFactory, location, $modal, route, dateFilter) {
scope.clientId = routeParams.clientId;
scope.existingloanId = routeParams.existingloanId;
scope.formData = {};
resourceFactory.clientExistingLoanTemplate.get({clientId: scope.clientId}, function (data) {
scope.existingLoanSourceOption = data.existingLoanSourceOption;
scope.creditBureauProductsOption = data.creditBureauProductsOption;
scope.lenderOption = data.lenderOption;
scope.loanTypeOption = data.loanTypeOption;
scope.externalLoanPurposeOption = data.externalLoanPurposeOption;
scope.loanTenaureOption = data.loanTenaureOption;
scope.termPeriodFrequencyType = data.termPeriodFrequencyType;
scope.loanStatusOption = data.loanStatusOption;
scope.getExistingLoan();
});
scope.getExistingLoan = function(){
resourceFactory.clientExistingLoan.get({
clientId: scope.clientId,
existingloanId: scope.existingloanId
}, function (data) {
if (!_.isUndefined(data.source)) {
scope.formData.sourceId = data.source.id;
}
if (!_.isUndefined(data.creditBureauProductData)) {
scope.formData.creditBureauProductId = data.creditBureauProductData.id;
}
if (!_.isUndefined(data.lender)) {
scope.formData.lenderId = data.lender.id;
}
scope.formData.lenderName = data.lenderName;
if (!_.isUndefined(data.loanType)) {
scope.formData.loanTypeId = data.loanType.id;
}
if (!_.isUndefined(data.externalLoanPurpose)) {
scope.formData.externalLoanPurposeId = data.externalLoanPurpose.id;
}
if (!_.isUndefined(data.disbursedDate)) {
scope.formData.disbursedDate = dateFilter(new Date(data.disbursedDate), scope.df);
}
if(!_.isUndefined(data.loanStatus.id) && !_.isNull(data.loanStatus.id)){
scope.formData.loanStatusId = data.loanStatus.id;
}
scope.formData.amountBorrowed = data.amountBorrowed;
scope.formData.gt0dpd3mths = data.gt0Dpd3Mths;
scope.formData.dpd30mths12 = data.dpd30Mths12;
scope.formData.dpd30mths24 = data.dpd30Mths24;
scope.formData.dpd60mths24 = data.dpd60Mths24;
scope.formData.currentOutstanding = data.currentOutstanding;
scope.formData.amtOverdue = data.amtOverdue;
scope.formData.writtenOffAmount = data.writtenOffAmount;
scope.formData.installmentAmount = data.installmentAmount;
scope.formData.loanTenure = data.loanTenure;
if (!_.isUndefined(data.loanTenurePeriodType)) {
scope.formData.loanTenurePeriodType = data.loanTenurePeriodType.id;
}
scope.formData.repaymentFrequencyMultipleOf = data.repaymentFrequencyMultipleOf;
if (!_.isUndefined(data.repaymentFrequency)) {
scope.formData.repaymentFrequency = data.repaymentFrequency.id;
}
scope.formData.archive = data.archive;
});
};
scope.submit = function () {
this.formData.clientId = scope.clientId;
//this.formData.id = scope.existingloanId;
this.formData.archive = "1";
if (!_.isUndefined(scope.formData.disbursedDate)) {
this.formData.disbursedDate = dateFilter(scope.formData.disbursedDate, scope.df);
}
this.formData.dateFormat = scope.df;
this.formData.locale = scope.optlang.code;
resourceFactory.clientExistingLoan.update({
clientId: scope.clientId,
existingloanId: scope.existingloanId
}, this.formData, function (data) {
location.path('/viewclient/' + scope.clientId)
});
};
}
});
mifosX.ng.application.controller('EditExistingLoanController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', 'dateFilter', mifosX.controllers.EditExistingLoanController]).run(function ($log) {
$log.info("EditExistingLoanController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,75 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditFamilyMemberController: function (scope, routeParams, resourceFactory, location, $modal, route, dateFilter) {
scope.clientId = routeParams.clientId;
scope.familyDetailId = routeParams.familyDetailId;
scope.salutationOptions = [];
scope.relationshipOptions = [];
scope.genderOptions = [];
scope.educationOptions = [];
scope.occupationOptions = [];
scope.subOccupations = [];
resourceFactory.familyDetailsTemplate.get({clientId: scope.clientId}, function (data) {
scope.salutationOptions = data.salutationOptions;
scope.relationshipOptions = data.relationshipOptions;
scope.genderOptions = data.genderOptions;
scope.educationOptions = data.educationOptions;
scope.occupationOptions = data.occupationOptions;
resourceFactory.familyDetails.get({
clientId: scope.clientId,
familyDetailId: scope.familyDetailId
}, function (data) {
//console.log(JSON.stringify(data));
scope.formData = {};
scope.formData.firstname = data.firstname;
scope.formData.middlename = data.middlename;
scope.formData.lastname = data.lastname;
scope.formData.dateOfBirth = dateFilter(new Date(data.dateOfBirth), scope.df);
scope.formData.age = data.age;
scope.formData.isDependent = data.isDependent;
scope.formData.isSeriousIllness = data.isSeriousIllness;
scope.formData.isDeceased = data.isDeceased;
if(data.salutation){
scope.formData.salutationId = data.salutation.id;
}
if(data.relationship){
scope.formData.relationshipId = data.relationship.id;
}
if(data.gender){
scope.formData.genderId = data.gender.id;
}
if(data.education){
scope.formData.educationId = data.education.id;
}
if(data.occupation){
scope.occupationOption = data.occupation;
scope.formData.occupationDetailsId = scope.occupationOption.id;
}
});
});
scope.submit = function () {
if(scope.formData.dateOfBirth) {
scope.formData.dateOfBirth = dateFilter(scope.formData.dateOfBirth, scope.df);
}
scope.formData.dateFormat = scope.df;
scope.formData.locale = scope.optlang.code;
resourceFactory.familyDetails.update({
clientId: scope.clientId,
familyDetailId: scope.familyDetailId
}, scope.formData, function (data) {
location.path('/listfamilydetails/' + scope.clientId)
});
};
}
});
mifosX.ng.application.controller('EditFamilyMemberController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', 'dateFilter', mifosX.controllers.EditFamilyMemberController]).run(function ($log) {
$log.info("EditFamilyMemberController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,62 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditHouseHoldExpenseController: function (scope, routeParams, resourceFactory, location, $modal, route, $http) {
scope.clientId = routeParams.clientId;
scope.houseHoldExpenseId = routeParams.houseHoldExpenseId;
scope.formData = {};
scope.formData.isMonthWiseIncome = false;
resourceFactory.cashFlowCategoryResource.getAll({isFetchIncomeExpenseDatas: true}, function(data){
scope.occupations = data;
});
resourceFactory.incomeExpenseAndHouseHoldExpense.get({clientId:scope.clientId, incomeAndExpenseId: scope.houseHoldExpenseId}, function(data){
angular.forEach(scope.occupations, function(occ){
if(occ.id == data.incomeExpenseData.cashflowCategoryId){
scope.occupationOption = occ;
}
});
scope.formData.incomeExpenseId = data.incomeExpenseData.id;
scope.formData.quintity = data.quintity;
scope.formData.totalExpense = data.totalExpense;
scope.formData.isPrimaryIncome = data.isPrimaryIncome;
scope.isQuantifierNeeded = data.incomeExpenseData.isQuantifierNeeded
});
scope.slectedOccupation = function(occupationId, subOccupationId){
for(var i in scope.occupations){
for(var j in scope.occupations[i].incomeExpenseDatas){
if(scope.occupations[i].incomeExpenseDatas[j].cashflowCategoryId == occupationId
&& scope.occupations[i].incomeExpenseDatas[j].id == subOccupationId &&
scope.occupations[i].incomeExpenseDatas[j].isQuantifierNeeded == true){
scope.quantifierLabel = scope.occupations[i].incomeExpenseDatas[j].quantifierLabel;
scope.isQuantifierNeeded = scope.occupations[i].incomeExpenseDatas[j].isQuantifierNeeded;
}
}
}
}
scope.subOccupationNotAvailable = function(occupationId){
_.each(scope.occupations, function(occupation){
if(occupation.id == occupationId){
scope.isQuantifierNeeded = false;
}
})
}
scope.submit = function () {
scope.formData.locale = "en";
resourceFactory.incomeExpenseAndHouseHoldExpense.update({clientId: scope.clientId, incomeAndExpenseId: scope.houseHoldExpenseId},scope.formData, function (data) {
location.path('/viewclient/' + scope.clientId)
});
}
}
});
mifosX.ng.application.controller('EditHouseHoldExpenseController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', '$http', mifosX.controllers.EditHouseHoldExpenseController]).run(function ($log) {
$log.info("EditHouseHoldExpenseController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,51 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ListFamilyDetailController: function (scope, routeParams, resourceFactory, location, $modal, route) {
scope.clientId = routeParams.clientId;
resourceFactory.familyDetails.getAll({clientId: scope.clientId}, function (data) {
scope.familyMembers = data;
});
scope.routeTo = function (id) {
location.path('/clients/' + scope.clientId + '/viewfamilydetails/' + id);
};
scope.showEdit = function (id) {
location.path('/clients/' + scope.clientId + '/editfamilydetails/' + id);
};
var FamilyDetailsDeleteCtrl = function ($scope, $modalInstance, familyDetailsId) {
$scope.delete = function () {
resourceFactory.familyDetails.delete({
clientId: scope.clientId,
familyDetailId: familyDetailsId
}, {}, function (data) {
$modalInstance.close('delete');
route.reload();
});
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
scope.deleteFamilyDetail = function (id) {
$modal.open({
templateUrl: 'deletefamilydetail.html',
controller: FamilyDetailsDeleteCtrl,
resolve: {
familyDetailsId: function () {
return id;
}
}
});
};
}
});
mifosX.ng.application.controller('ListFamilyDetailController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', mifosX.controllers.ListFamilyDetailController]).run(function ($log) {
$log.info("ListFamilyDetailController initialized");
});
}(mifosX.controllers || {}));

View File

@ -12,9 +12,20 @@
scope.openShares = true ;
scope.updateDefaultSavings = false;
scope.charges = [];
scope.showClosedPledges = false;
scope.id = routeParams.id;
scope.pledges = [];
scope.dob = "label.input.dateofbirth";
scope.addressData = [];
scope.addressId ;
scope.enableClientAddress = false;
scope.loancycledetail = [];
scope.routeToLoan = function (id) {
location.path('/viewloanaccount/' + id);
};
scope.routeToLoanApplication = function (loanAppData) {
location.path('/viewloanapplicationreference/' + loanAppData.loanApplicationReferenceId);
};
scope.routeToChargeOverview = function () {
location.path(scope.pathToChargeOverview());
};
@ -44,6 +55,7 @@
scope.haveFile = [];
resourceFactory.clientResource.get({clientId: routeParams.id}, function (data) {
scope.client = data;
$rootScope.clientname=data.displayName;
scope.isClosedClient = scope.client.status.value == 'Closed';
scope.staffData.staffId = data.staffId;
if (data.imagePresent) {
@ -54,6 +66,8 @@
scope.image = imageData.data;
});
}
http({
method: 'GET',
url: $rootScope.hostUrl + API_VERSION + '/clients/' + routeParams.id + '/documents'
@ -134,10 +148,40 @@
}
]
};
scope.buttonsArray.singlebuttons = scope.buttons;
resourceFactory.runReportsResource.get({reportSource: 'ClientSummary', genericResultSet: 'false', R_clientId: routeParams.id}, function (data) {
scope.client.ClientSummary = data[0];
scope.loancycledetail = data;
});
resourceFactory.DataTablesResource.getAllDataTables({apptable: 'm_client'}, function (data) {
scope.clientdatatables = data;
});
resourceFactory.loanApplicationReferencesResource.getByClientId({clientId: routeParams.id}, function (data) {
scope.loanApplications = data;
});
resourceFactory.clientAccountResource.get({clientId: routeParams.id}, function (data) {
scope.clientAccounts = data;
scope.pledges = scope.clientAccounts.pledges;
if (data.savingsAccounts) {
for (var i in data.savingsAccounts) {
if (data.savingsAccounts[i].status.value == "Active") {
scope.updateDefaultSavings = true;
break;
}
}
}
resourceFactory.clientChargesResource.getCharges({clientId: routeParams.id, pendingPayment:true}, function (data) {
scope.charges = data.pageItems;
});
});
});
scope.deleteClient = function () {
$modal.open({
@ -318,21 +362,6 @@
$modalInstance.dismiss('cancel');
};
};
resourceFactory.clientAccountResource.get({clientId: routeParams.id}, function (data) {
scope.clientAccounts = data;
if (data.savingsAccounts) {
for (var i in data.savingsAccounts) {
if (data.savingsAccounts[i].status.value == "Active") {
scope.updateDefaultSavings = true;
break;
}
}
}
});
resourceFactory.clientChargesResource.getCharges({clientId: routeParams.id, pendingPayment:true}, function (data) {
scope.charges = data.pageItems;
});
scope.isClosed = function (loanaccount) {
if (loanaccount.status.code === "loanStatusType.closed.written.off" ||
@ -379,6 +408,16 @@
}
};
scope.isGetAllClientsNotes = false;
scope.getAllClientsNotes = function () {
if(!scope.isGetAllClientsNotes){
resourceFactory.clientNotesResource.getAllNotes({clientId: routeParams.id}, function (data) {
scope.clientNotes = data;
scope.isGetAllClientsNotes = true;
});
}
}
scope.setShares = function () {
if (scope.openShares) {
scope.openShares = false;
@ -387,10 +426,52 @@
}
};
resourceFactory.clientNotesResource.getAllNotes({clientId: routeParams.id}, function (data) {
scope.clientNotes = data;
var addressConfig = 'enable-clients-address';
resourceFactory.configurationResource.get({configName: addressConfig}, function (response) {
if (response.enabled == true) {
scope.enableClientAddress = true;
scope.fetchEntityAddress();
} else {
scope.enableClientAddress = false;
}
});
resourceFactory.configurationResource.get({configName: 'enable-beta'}, function (response) {
scope.isBetaEnabled = response.enabled;
});
scope.fetchEntityAddress = function () {
scope.entityType = "clients";
resourceFactory.addressDataResource.getAll({
entityType: scope.entityType,
entityId: routeParams.id
}, function (response) {
if (response != null) {
scope.addressData = response;
}
});
}
scope.deleteAddress = function (addressId) {
scope.addressId = addressId;
$modal.open({
templateUrl: 'deleteaddress.html',
controller: AddressDeleteCtrl
});
};
var AddressDeleteCtrl = function ($scope, $modalInstance) {
$scope.delete = function () {
resourceFactory.entityAddressResource.delete({entityType: scope.entityType, entityId: routeParams.id, addressId: scope.addressId}, function (response) {
$modalInstance.close('delete');
if(response != null) {
route.reload();
}
});
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
scope.getClientIdentityDocuments = function () {
resourceFactory.clientResource.getAllClientDocuments({clientId: routeParams.id, anotherresource: 'identifiers'}, function (data) {
scope.identitydocuments = data;
@ -412,10 +493,6 @@
});
};
resourceFactory.DataTablesResource.getAllDataTables({apptable: 'm_client'}, function (data) {
scope.clientdatatables = data;
});
scope.dataTableChange = function (clientdatatable) {
resourceFactory.DataTablesResource.getTableDetails({datatablename: clientdatatable.registeredTableName,
entityId: routeParams.id, genericResultSet: 'true'}, function (data) {
@ -505,6 +582,15 @@
}
};
scope.loanAppStatusId = 400;
scope.isLoanAppIncompleted = function (loanAddData) {
if (loanAddData.status.id < scope.loanAppStatusId) {
return true;
} else {
return false;
}
};
scope.isSavingNotClosed = function (savingaccount) {
if (savingaccount.status.code === "savingsAccountStatusType.withdrawn.by.applicant" ||
savingaccount.status.code === "savingsAccountStatusType.closed" ||
@ -627,6 +713,133 @@
};
}
scope.deletePledge = function(id){
resourceFactory.pledgeResource.delete({pledgeId: id}, function (data) {
resourceFactory.clientAccountResource.get({clientId: routeParams.id}, function (data) {
scope.pledges = data.pledges;
});
});
};
scope.requestApprovalLoanAppRef = function (loanApplicationReferenceId) {
resourceFactory.loanApplicationReferencesResource.update({
loanApplicationReferenceId: loanApplicationReferenceId,
command: 'requestforapproval'
}, {}, function (data) {
location.path('/viewloanapplicationreference/' + loanApplicationReferenceId);
});
};
scope.familyDetails = function(){
resourceFactory.familyDetails.getAll({clientId: routeParams.id}, function (data) {
scope.familyMembers = data;
});
};
scope.routeTo = function (id) {
location.path('/clients/' + routeParams.id + '/viewfamilydetails/' + id);
};
scope.showEdit = function (id) {
location.path('/clients/' + routeParams.id + '/editfamilydetails/' + id);
};
var FamilyDetailsDeleteCtrl = function ($scope, $modalInstance, familyDetailsId) {
$scope.delete = function () {
resourceFactory.familyDetails.delete({
clientId: scope.id,
familyDetailId: familyDetailsId
}, {}, function (data) {
$modalInstance.close('delete');
route.reload();
});
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
scope.deleteFamilyDetail = function (id) {
$modal.open({
templateUrl: 'deletefamilydetail.html',
controller: FamilyDetailsDeleteCtrl,
resolve: {
familyDetailsId: function () {
return id;
}
}
});
};
scope.incomeAndexpense = function(){
resourceFactory.incomeExpenseAndHouseHoldExpense.getAll({clientId: routeParams.id},function(data){
scope.incomeAndExpenses = data;
scope.totalIncomeOcc = scope.calculateOccupationTotal();
scope.totalIncomeAsset = scope.calculateTotalAsset();
scope.totalHouseholdExpense = scope.calculateTotalExpense();
});
};
scope.calculateOccupationTotal = function(){
var total = 0;
angular.forEach(scope.incomeAndExpenses, function(data){
if(!_.isUndefined(data.incomeExpenseData.cashFlowCategoryData.categoryEnum) && data.incomeExpenseData.cashFlowCategoryData.categoryEnum.id == 1){
if(!_.isUndefined(data.totalIncome) && !_.isNull(data.totalIncome)){
total = total + data.totalIncome;
}
}
});
return total;
};
scope.calculateTotalAsset = function(){
var total = 0;
angular.forEach(scope.incomeAndExpenses, function(data){
if(!_.isUndefined(data.incomeExpenseData.cashFlowCategoryData.categoryEnum) && data.incomeExpenseData.cashFlowCategoryData.categoryEnum.id == 2){
if(!_.isUndefined(data.totalIncome) && !_.isNull(data.totalIncome)){
total = total + data.totalIncome;
}
}
});
return total;
};
scope.calculateTotalExpense = function(){
var total = 0;
angular.forEach(scope.incomeAndExpenses, function(data){
if(!_.isUndefined(data.incomeExpenseData.cashFlowCategoryData.typeEnum) && data.incomeExpenseData.cashFlowCategoryData.typeEnum.id == 2){
if(!_.isUndefined(data.totalExpense) && !_.isNull(data.totalExpense)){
total = total + data.totalExpense;
}
}
});
return total;
};
scope.showEditClientIncome = function(id){
location.path('/client/'+scope.id+'/editclientoccupation/'+id);
};
scope.showEditClientAsset = function(id){
location.path('/client/'+scope.id+'/editclientasset/'+id);
};
scope.showEditClientHouseHoldExpense = function(id){
location.path('/client/'+scope.id+'/editclienthouseholdexpense/'+id);
};
scope.existingLoans = function(){
resourceFactory.clientExistingLoan.getAll({clientId: routeParams.id}, function(data){
scope.existingLoans = data;
});
};
scope.showEditClientExistLoan = function(id){
location.path('/client/'+scope.id+'/editclientexistingloan/'+id);
}
scope.routeToViewExistingLoan = function(id){
location.path('/client/'+scope.id+'/viewclientexistingloan/'+id);
}
}
});

View File

@ -0,0 +1,26 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewClientRecurringChargeController: function (scope, resourceFactory, location, routeParams, route) {
scope.clientId = routeParams.clientId;
resourceFactory.clientRecurringChargesResource.getRecurringCharge({
clientId: routeParams.clientId,
resourceType: routeParams.recurringChargeId
}, function (data) {
scope.recurringcharge = data;
});
scope.deleteRecurringCharge = function () {
resourceFactory.clientRecurringChargesResource.inactivateRecurringCharge({
clientId: routeParams.clientId,
resourceType: routeParams.recurringChargeId
}, function (data) {
location.path('/viewclient/' + scope.clientId+'/chargeoverview');
});
}
}
});
mifosX.ng.application.controller('ViewClientRecurringChargeController', ['$scope', 'ResourceFactory', '$location', '$routeParams', '$route', mifosX.controllers.ViewClientRecurringChargeController]).run(function ($log) {
$log.info("ViewClientRecurringChargeController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,46 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewExistingLoanController: function (scope, routeParams, resourceFactory, location, $modal, route, dateFilter) {
scope.clientId = routeParams.clientId;
scope.existingloanId = routeParams.existingloanId;
scope.formData = {};
resourceFactory.clientExistingLoan.get({
clientId: scope.clientId,
existingloanId: scope.existingloanId
}, function (data) {
scope.formData.source = data.sourceCvName;
scope.formData.bureau = data.bureauCvName;
scope.formData.lenderCvName = data.lenderCvName;
scope.formData.lenderNotListed = data.lenderNotListed;
scope.formData.loanTypeName = data.loanTypeName;
scope.formData.externalLoanPurposeCvName = data.externalLoanPurposeCvName;
if(!_.isUndefined(data.status.id) && !_.isNull(data.status.id)){
scope.formData.loanStatusValue = data.status.value;
}
scope.formData.amountBorrowed = data.amountBorrowed;
scope.formData.currentOutstanding = data.currentOutstanding;
scope.formData.amtOverdue = data.amountOverdue;
scope.formData.WrittenOffAmount = data.writtenOffAmount;
scope.formData.installmentAmount = data.installmentAmount;
scope.formData.gt0dpd3mths = data.gt0Dpd3Mths;
scope.formData.dpd30mths12 = data.dpd30Mths12;
scope.formData.dpd30mths24 = data.dpd30Mths24;
scope.formData.dpd60mths24 = data.dpd60Mths24;
scope.formData.loanTenure = data.loanTenaure;
scope.formData.loanTenurePeriodType = data.loanTenurePeriodType.value;
scope.formData.repaymentFrequencyMultipleOf = data.repaymentFrequencyMultipleOf;
scope.formData.repaymentFrequency = data.repaymentFrequency.value;
scope.formData.archive = data.archive;
if (!_.isUndefined(data.timeline.disbursedDate)) {
scope.formData.disbursedDate = dateFilter(data.timeline.disbursedDate, scope.df);
};
});
}
});
mifosX.ng.application.controller('ViewExistingLoanController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', 'dateFilter', mifosX.controllers.ViewExistingLoanController]).run(function ($log) {
$log.info("ViewExistingLoanController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,23 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ViewFamilyMemberDetailsController: function (scope, routeParams, resourceFactory, location, $modal, route, dateFilter) {
scope.clientId = routeParams.clientId;
scope.familyDetailId = routeParams.familyDetailId;
resourceFactory.familyDetails.get({
clientId: scope.clientId,
familyDetailId: scope.familyDetailId
}, function (data) {
scope.familyDetail = data;
if(data.dateOfBirth){
scope.familyDetail.dateOfBirth = dateFilter(new Date(scope.familyDetail.dateOfBirth), scope.df);
}
});
}
});
mifosX.ng.application.controller('ViewFamilyMemberDetailsController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$modal', '$route', 'dateFilter', mifosX.controllers.ViewFamilyMemberDetailsController]).run(function ($log) {
$log.info("ViewFamilyMemberDetailsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,34 @@
(function (module) {
mifosX.controllers = _.extend(module, {
AttachPledgeToExistingCustomerController: function ($q, scope, routeParams, route, location, resourceFactory, $modal) {
scope.group = [];
scope.indexOfClientToBeDeleted = "";
scope.allMembers = [];
scope.viewClient = function (item) {
scope.client = item;
};
scope.clientOptions = function(value){
var deferred = $q.defer();
resourceFactory.clientResource.getAllClients({displayName: value, orderBy : 'displayName',
sortOrder : 'ASC'}, function (data) {
deferred.resolve(data.pageItems);
});
return deferred.promise;
};
scope.add = function () {
if(scope.available != ""){
var id = scope.client.id;
resourceFactory.pledgeResource.update({ pledgeId : routeParams.pledgeId}, {clientId : id}, function(pledgeData){
location.path('/viewclient/' + id);
});
}
};
}
});
mifosX.ng.application.controller('AttachPledgeToExistingCustomerController', ['$q','$scope', '$routeParams', '$route', '$location', 'ResourceFactory', '$modal', mifosX.controllers.AttachPledgeToExistingCustomerController]).run(function ($log) {
$log.info("AttachPledgeToExistingCustomerController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,26 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CollateralController: function (scope, resourceFactory, location) {
scope.formData = [];
scope.collaterals = [];
scope.isPresiousMetal = 1;
scope.isPresiousStone = 2;
resourceFactory.collateralsResource.getAll(function(data){
scope.collaterals = data;
});
scope.editcollateral = function(collateralId){
location.path("editcollateral/" + collateralId);
}
}
});
mifosX.ng.application.controller('CollateralController', ['$scope', 'ResourceFactory', '$location', mifosX.controllers.CollateralController]).run(function ($log) {
$log.info("CollateralController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,88 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CollateralQualityStandardsController: function (scope, resourceFactory, location, routeParams) {
scope.formData = {};
scope.requiredPrice = false;
scope.requiredName = false;
scope.editPropertyToSetUndefined = ['createdName', 'updatedName', 'id', 'createdBy', 'updatedBy', 'createdDate', 'updatedDate'];
scope.getData = function(){
resourceFactory.collateralsResource.getCollateralQualityStandards({collateralId: routeParams.collateralId, association: 'qualityStandards'},function(data){
scope.collaterals = data;
if(scope.collaterals.qualityStandards && scope.collaterals.qualityStandards.length>0){
for(var i=0;i<scope.collaterals.qualityStandards.length;i++){
scope.getName(i,scope.collaterals.qualityStandards[i].createdBy,'createdName');
if(scope.collaterals.qualityStandards[i].hasOwnProperty('updatedBy')){
scope.getName(i,scope.collaterals.qualityStandards[i].updatedBy,'updatedName');
}
}
}
});
};
scope.getData();
scope.submit = function () {
scope.requiredPrice = false;
scope.requiredName = false;
if (this.formData.isPercentage) {
this.formData['percentagePrice'] = this.formData.price;
this.formData['absolutePrice'] = null;
} else {
this.formData['absolutePrice'] = this.formData.price;
this.formData['percentagePrice'] = null;
}
this.formData.collateralId = routeParams.collateralId;
this.formData.locale = scope.optlang.code;
this.formData.isPercentage = undefined;
this.formData.price = undefined;
resourceFactory.collateralsQualityStandardsResource.save({collateralId: routeParams.collateralId}, this.formData, function (data) {
scope.formData = {};
scope.getData();
});
};
scope.deleteQualityStandards = function(qualityStandards){
resourceFactory.collateralsQualityStandardsResource.delete({collateralId: qualityStandards.collateralId,qualityId: qualityStandards.id}, function (data) {
scope.formData = {};
scope.getData();
});
};
scope.validateData = function(){
scope.requiredName = (angular.isUndefined(this.formData.name) || this.formData.name.length==0);
scope.requiredPrice = (angular.isUndefined(this.formData.price) || this.formData.price.length==0);
return (!scope.requiredName && !scope.requiredPrice);
};
scope.validateName = function(name){
scope.requiredName = (this.formData.name.length==0);
};
scope.validatePrice = function(price){
scope.requiredPrice = (this.formData.price.length==0);
};
scope.setUndefined = function(data,editArr){
for(var i=0;i<editArr.length;i++){
data[editArr[i]] = undefined;
}
return data;
};
scope.getName = function(index,id,name) {
resourceFactory.userResource.getUser({userId: id}, function (datas) {
scope.collaterals.qualityStandards[index][name] = datas.username;
});
return name;
};
}
});
mifosX.ng.application.controller('CollateralQualityStandardsController', ['$scope', 'ResourceFactory', '$location', '$routeParams', mifosX.controllers.CollateralQualityStandardsController]).run(function ($log) {
$log.info("CollateralQualityStandardsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,218 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CollateralValueCalculatorController: function (scope, resourceFactory, location, routeParams) {
scope.formData = {};
scope.pledgeFormData = {};
scope.percentagePrice = 1;
scope.isOther = false;
scope.collateralDetails = [];
scope.totalSystemPrice = 0;
scope.totalUserPrice = 0;
scope.unitPrice = 0;
scope.invalidUserPrice = false;
scope.requiredCollateral = false;
scope.requiredQualityStandard = false;
scope.requiredGrossWeight = false;
scope.invalidStoneWeight = false;
scope.isRedirectedFromClient = angular.isDefined(routeParams.clientId);
scope.getCollaterals = function(){
resourceFactory.collateralsResource.getAll(function(data){
if(data.length>0){
scope.collaterals = data;
}
});
}
scope.getCollaterals();
scope.changeCollateral = function(collateralId){
this.formData = {};
this.formData.collateralId = collateralId;
scope.unitPrice = 0;
scope.getQualityStandards(collateralId);
scope.invalidUserPrice = false;
scope.validateCollateral(collateralId);
};
scope.changeQualityStandards = function(collateralId,qualityStandardId){
scope.invalidUserPrice = false;
this.formData.qualityStandardId = qualityStandardId;
resourceFactory.collateralsQualityStandardsResource.get({collateralId: collateralId, qualityId: qualityStandardId},function(data){
scope.qualityStandard = data;
if(data.hasOwnProperty('percentagePrice')){
scope.unitPrice = (data.percentagePrice*scope.collateralQualityStandards.baseUnitPrice)/100;
}else{
scope.unitPrice = scope.collateralQualityStandards.baseUnitPrice;
}
});
scope.validateQualityStandard(qualityStandardId);
};
scope.getQualityStandards = function(id,sealNumber){
resourceFactory.collateralsResource.getCollateralQualityStandards({collateralId: id, association: 'qualityStandards'},function(data){
scope.collateralQualityStandards = data;
scope.isOther = (data.typeClassifier==3);
});
};
scope.clear = function () {
scope.formData = {};
}
scope.submit = function () {
if(scope.isOther==true){
this.formData.systemPrice = scope.unitPrice;
this.formData.netWeight = undefined;
this.formData.stoneWeight = undefined;
}else{
var stoneWeight = 0;
if(this.formData.stoneWeight){
stoneWeight = this.formData.stoneWeight;
}
this.formData.netWeight = this.formData.grossWeight-stoneWeight;
this.formData.systemPrice = scope.unitPrice*this.formData.netWeight;
this.formData.stoneWeight = undefined;
}
if(angular.isUndefined(this.formData.userPrice)){
this.formData.userPrice = this.formData.systemPrice
}
scope.collateralDetails.push(this.formData);
for(var i=0 ;i<scope.collateralDetails.length;i++){
scope.getNames(i,scope.collateralDetails[i].collateralId,scope.collateralDetails[i].qualityStandardId)
}
scope.calculatedValue(scope.collateralDetails);
this.formData = {};
scope.getCollaterals();
scope.collateralQualityStandards = [];
scope.invalidUserPrice = false;
scope.requiredCollateral = false;
scope.requiredQualityStandard = false;
scope.requiredGrossWeight = false;
scope.invalidStoneWeight = false;
}
scope.deleteCollateralDetail = function(index){
scope.collateralDetails.splice(index, 1);
scope.calculatedValue(scope.collateralDetails);
};
scope.validateData = function(){
scope.requiredCollateral = (angular.isUndefined(this.formData.collateralId) || this.formData.collateralId.length==0);
scope.requiredQualityStandard = (angular.isUndefined(this.formData.qualityStandardId) || this.formData.qualityStandardId.length==0);
if(!scope.isOther) {
scope.requiredGrossWeight = (angular.isUndefined(this.formData.grossWeight) || this.formData.grossWeight.length==0);
if(this.formData.stoneWeight && !scope.requiredGrossWeight){
scope.invalidStoneWeight = parseInt(this.formData.grossWeight)<= parseInt(this.formData.stoneWeight)
}else{
scope.invalidStoneWeight = false;
}
}else{
scope.requiredGrossWeight = false;
scope.invalidStoneWeight = false;
}
return ( !scope.requiredCollateral && !scope.requiredQualityStandard && !scope.requiredGrossWeight && !scope.invalidStoneWeight);
};
scope.validateUserPrice = function(price){
scope.invalidUserPrice = true;
if(price) {
var netWeight = 0;
var systemPrice = 0;
if (scope.collateralQualityStandards.typeClassifier != 3) {
if (this.formData.stoneWeight) {
netWeight = parseInt(this.formData.grossWeight) - parseInt(this.formData.stoneWeight);
} else {
netWeight = parseInt(this.formData.grossWeight);
}
systemPrice = (netWeight * scope.unitPrice);
} else {
systemPrice = scope.unitPrice;
}
scope.invalidUserPrice = (price > systemPrice);
}else{
scope.invalidUserPrice = false;
}
};
scope.validateCollateral = function(id){
scope.requiredCollateral = (angular.isUndefined(id) || id.length==0);
};
scope.validateStoneWeight = function(weight){
if(this.formData.grossWeight){
scope.invalidStoneWeight = parseInt(weight) > parseInt(this.formData.grossWeight);
}else{
scope.invalidStoneWeight = false;
}
};
scope.validateQualityStandard = function(id){
scope.requiredQualityStandard = (angular.isUndefined(id) || id.length==0);
};
scope.validateGrossWeight = function(weight){
if(this.formData.stoneWeight){
scope.invalidStoneWeight = parseInt(weight) < parseInt(this.formData.stoneWeight);
}else{
scope.invalidStoneWeight = false;
}
scope.requiredGrossWeight = (angular.isUndefined(weight) || weight.length==0);
};
scope.calculatedValue = function(data){
var totalSystemPrice = 0;
var totalUserPrice = 0;
for(var i=0;i<data.length;i++){
totalSystemPrice = totalSystemPrice+ parseInt(data[i].systemPrice);
totalUserPrice = totalUserPrice+ parseInt(data[i].userPrice);
}
scope.totalSystemPrice = totalSystemPrice;
scope.totalUserPrice = totalUserPrice;
};
scope.getNames = function(index, collateralId, qualityStandardsId){
resourceFactory.collateralsResource.getCollateralQualityStandards({collateralId: collateralId},function(data){
scope.collateralDetails[index]['collateralName'] = data.name;
});
resourceFactory.collateralsQualityStandardsResource.get({collateralId: collateralId, qualityId: qualityStandardsId},function(qualityData){
scope.collateralDetails[index]['qualityStandardsName'] = qualityData.name;
});
};
scope.savePledge = function(path){
if(routeParams.clientId){
this.pledgeFormData.clientId = routeParams.clientId;
}
this.pledgeFormData.systemValue = scope.totalSystemPrice;
this.pledgeFormData.userValue = scope.totalUserPrice;
this.pledgeFormData.locale = scope.optlang.code;
this.pledgeFormData.status = 1;
this.pledgeFormData.collateralDetails = scope.collateralDetails;
resourceFactory.pledgeResource.save(this.pledgeFormData,function(data){
if(routeParams.clientId){
location.path('/viewclient/'+routeParams.clientId);
}else{
if(path=='/collateralvaluecalculator'){
location.path(path);
}else{
path = path+data.resourceId;
location.path(path);
}
}
});
};
}
});
mifosX.ng.application.controller('CollateralValueCalculatorController', ['$scope', 'ResourceFactory', '$location', '$routeParams', mifosX.controllers.CollateralValueCalculatorController]).run(function ($log) {
$log.info("CollateralValueCalculatorController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,19 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateCollateralController: function (scope, resourceFactory, location) {
scope.formData = {};
scope.submit = function () {
this.formData.locale = scope.optlang.code;
resourceFactory.collateralsResource.save(this.formData, function (data) {
location.path('/collaterals/');
});
}
}
});
mifosX.ng.application.controller('CreateCollateralController', ['$scope', 'ResourceFactory', '$location', mifosX.controllers.CreateCollateralController]).run(function ($log) {
$log.info("CreateCollateralController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,32 @@
(function (module) {
mifosX.controllers = _.extend(module, {
CreateProductCollateralMappingController: function (scope, resourceFactory, location, routeParams) {
scope.formData = {};
resourceFactory.collateralsResource.getAll(function(data){
scope.collaterals = data;
});
resourceFactory.loanProductResource.getAllLoanProducts(function(data){
scope.loanProducts = data;
});
scope.submit = function () {
resourceFactory.productCollateralsMappingResource.save(this.formData, function (data) {
location.path('/viewproductcollateralmapping');
});
}
scope.cancel = function () {
location.path('/viewproductcollateralmapping');
}
}
});
mifosX.ng.application.controller('CreateProductCollateralMappingController', ['$scope', 'ResourceFactory', '$location', '$routeParams', mifosX.controllers.CreateProductCollateralMappingController]).run(function ($log) {
$log.info("CreateProductCollateralMappingController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,21 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditCollateralController: function (scope, routeParams, resourceFactory, location) {
scope.formData = {};
resourceFactory.collateralsResource.get({'collateralId' : routeParams.collateralId}, function(data){
scope.formData = data;
});
scope.submit = function () {
this.formData.locale = scope.optlang.code;
delete this.formData.id ;
resourceFactory.collateralsResource.update({'collateralId': routeParams.collateralId}, this.formData, function (data) {
location.path('/collaterals/');
});
};
}
});
mifosX.ng.application.controller('EditCollateralController', ['$scope', '$routeParams', 'ResourceFactory', '$location', mifosX.controllers.EditCollateralController]).run(function ($log) {
$log.info("EditCollateralController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,58 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditCollateralQualityStandardsController: function (scope, resourceFactory, location, routeParams) {
scope.formData = {};
scope.collateralId = routeParams.collateralId;
resourceFactory.collateralsQualityStandardsResource.get({collateralId: routeParams.collateralId, qualityId: routeParams.qualityStandardId}, function (data) {
scope.formData = data;
if(scope.formData.hasOwnProperty('percentagePrice')){
scope.formData.isPercentage = true;
scope.formData.price = data.percentagePrice;
}else{
scope.formData.isPercentage = false;
scope.formData.price = data.absolutePrice;
}
});
scope.editPropertyToSetUndefined = ['price','isPercentage','createdName', 'updatedName', 'createdBy', 'updatedBy', 'createdDate', 'updatedDate'];
scope.requestParameter = ['id','absolutePrice','percentagePrice','description','locale','name'];
scope.submit = function () {
var id = this.formData.id;
var isPercentage = this.formData.isPercentage;
var price = this.formData.price;
if (this.formData.isPercentage) {
this.formData['percentagePrice'] = this.formData.price;
this.formData['absolutePrice'] = null;
} else {
this.formData['absolutePrice'] = this.formData.price;
this.formData['percentagePrice'] = null;
}
this.formData.collateralId = routeParams.collateralId;
this.formData.locale = scope.optlang.code;
var data = {};
for(var i=0;i<scope.requestParameter.length;i++){
data[scope.requestParameter[i]] = this.formData[scope.requestParameter[i]];
}
resourceFactory.collateralsQualityStandardsResource.update({collateralId: routeParams.collateralId,qualityId: id}, data, function (data) {
location.path('viewcollateralqualitystandards/'+routeParams.collateralId);
});
};
scope.setUndefined = function(data,editArr){
for(var i=0;i<editArr.length;i++){
data[editArr[i]] = undefined;
}
return data;
};
}
});
mifosX.ng.application.controller('EditCollateralQualityStandardsController', ['$scope', 'ResourceFactory', '$location', '$routeParams', mifosX.controllers.EditCollateralQualityStandardsController]).run(function ($log) {
$log.info("EditCollateralQualityStandardsController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,211 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditPledgeController: function (scope, resourceFactory, routeParams, location, dateFilter) {
scope.formData = {};
scope.formData.collateralDetails = {};
scope.pledgeId = routeParams.pledgeId;
scope.isshowAddCollateralDetails = false;
scope.invalidUserPrice = false;
scope.requiredCollateral = false;
scope.requiredQualityStandard = false;
scope.requiredGrossWeight = false;
scope.invalidStoneWeight = false;
resourceFactory.pledgeResource.getCollateralDetails({'pledgeId' : scope.pledgeId}, function(data){
scope.formData = data;
scope.collateralDetails = data.collateralDetailsData;
});
scope.getCollaterals = function(){
resourceFactory.collateralsResource.getAll(function(data){
if(data.length>0){
scope.collaterals = data;
}
});
}
scope.getCollaterals();
scope.showAddCollateralDetails = function(){
scope.isshowAddCollateralDetails = true;
}
scope.changeCollateral = function(collateralId){
this.formData.collateralDetails = {};
scope.invalidUserPrice = false;
this.formData.collateralDetails.collateralId = collateralId;
scope.getQualityStandards(collateralId);
scope.validateCollateral(collateralId);
};
scope.changeQualityStandards = function(collateralId,qualityStandardId){
scope.invalidUserPrice = false;
this.formData.collateralDetails.qualityStandardId = qualityStandardId;
resourceFactory.collateralsQualityStandardsResource.get({collateralId: collateralId, qualityId: qualityStandardId},function(data){
scope.qualityStandard = data;
if(data.hasOwnProperty('percentagePrice')){
scope.unitPrice = (data.percentagePrice*scope.collateralQualityStandards.baseUnitPrice)/100;
}else{
scope.unitPrice = scope.collateralQualityStandards.baseUnitPrice;
}
});
scope.validateQualityStandard(qualityStandardId);
};
scope.getQualityStandards = function(id,sealNumber){
resourceFactory.collateralsResource.getCollateralQualityStandards({collateralId: id, association: 'qualityStandards'},function(data){
scope.collateralQualityStandards = data;
scope.isOther = (data.typeClassifier==3);
});
};
scope.clear = function () {
scope.formData.collateralDetails = {};
}
scope.submit = function () {
if(scope.isOther==true){
this.formData.collateralDetails.systemPrice = scope.unitPrice;
this.formData.collateralDetails.netWeight = undefined;
this.formData.collateralDetails.stoneWeight = undefined;
}else{
var stoneWeight = 0;
if(this.formData.collateralDetails.stoneWeight){
stoneWeight = this.formData.collateralDetails.stoneWeight;
}
this.formData.collateralDetails.netWeight = this.formData.collateralDetails.grossWeight-stoneWeight;
this.formData.collateralDetails.systemPrice = scope.unitPrice*this.formData.collateralDetails.netWeight;
this.formData.collateralDetails.stoneWeight = undefined;
}
if(angular.isUndefined(this.formData.collateralDetails.userPrice)){
this.formData.collateralDetails.userPrice = this.formData.collateralDetails.systemPrice
}
scope.collateralDetails.push(this.formData.collateralDetails);
var len = scope.collateralDetails.length;
for(var i=0 ;i<scope.collateralDetails.length;i++){
scope.getNames(i,scope.collateralDetails[i].collateralId,scope.collateralDetails[i].qualityStandardId)
}
scope.calculatedValue(scope.collateralDetails);
this.formData.collateralDetails = {};
scope.getCollaterals();
scope.collateralQualityStandards = [];
scope.invalidUserPrice = false;
scope.requiredCollateral = false;
scope.requiredQualityStandard = false;
scope.requiredGrossWeight = false;
scope.invalidStoneWeight = false;
}
scope.deleteCollateralDetail = function(index){
scope.collateralDetails.splice(index, 1);
scope.calculatedValue(scope.collateralDetails);
};
scope.calculatedValue = function(data){
var totalSystemPrice = 0;
var totalUserPrice = 0;
for(var j=0;j<data.length;j++){
totalSystemPrice = totalSystemPrice+ parseInt(data[j].systemPrice);
totalUserPrice = totalUserPrice+ parseInt(data[j].userPrice);
}
scope.totalSystemPrice = totalSystemPrice;
scope.totalUserPrice = totalUserPrice;
};
scope.getNames = function(index, collateralId, qualityStandardsId){
resourceFactory.collateralsResource.getCollateralQualityStandards({collateralId: collateralId},function(data){
scope.collateralDetails[index]['name'] = data.name;
});
};
scope.validateUserPrice = function(price){
scope.invalidUserPrice = true;
if(price) {
var netWeight = 0;
var systemPrice = 0;
if (scope.collateralQualityStandards.typeClassifier != 3) {
if (this.formData.collateralDetails.stoneWeight) {
netWeight = this.formData.collateralDetails.grossWeight - this.formData.collateralDetails.stoneWeight
} else {
netWeight = this.formData.collateralDetails.grossWeight;
}
systemPrice = (netWeight * scope.unitPrice);
} else {
systemPrice = scope.unitPrice;
}
scope.invalidUserPrice = (price > systemPrice);
}else{
scope.invalidUserPrice = false;
}
};
scope.validateData = function(){
if(this.formData.collateralDetails){
scope.requiredCollateral = (angular.isUndefined(this.formData.collateralDetails.collateralId) || this.formData.collateralDetails.collateralId.length==0);
scope.requiredQualityStandard = (angular.isUndefined(this.formData.collateralDetails.qualityStandardId) || this.formData.collateralDetails.qualityStandardId.length==0);
if(!scope.isOther) {
scope.requiredGrossWeight = (angular.isUndefined(this.formData.collateralDetails.grossWeight) || this.formData.collateralDetails.grossWeight.length==0);
if(!scope.requiredGrossWeight){
scope.invalidStoneWeight = (angular.isDefined(this.formData.collateralDetails.stoneWeight) && (this.formData.collateralDetails.grossWeight <= this.formData.collateralDetails.stoneWeight));
}else{
scope.invalidStoneWeight = false;
}
}else{
scope.requiredGrossWeight = false;
scope.invalidStoneWeight = false;
}
scope.validateUserPrice(this.formData.collateralDetails.userPrice);
}else{
scope.requiredCollateral = true;
scope.requiredQualityStandard = true;
}
return ( !scope.requiredCollateral && !scope.requiredQualityStandard && !scope.invalidUserPrice && !scope.requiredGrossWeight && !scope.invalidStoneWeight);
};
scope.validateCollateral = function(id){
scope.requiredCollateral = (angular.isUndefined(id) || id.length==0);
};
scope.validateStoneWeight = function(weight){
scope.invalidStoneWeight = (scope.requiredGrossWeight || weight > this.formData.collateralDetails.grossWeight);
};
scope.validateQualityStandard = function(id){
scope.requiredQualityStandard = (angular.isUndefined(id) || id.length==0);
};
scope.validateGrossWeight = function(weight){
scope.requiredGrossWeight = (angular.isUndefined(weight) || weight.length==0);
scope.invalidStoneWeight = false;
};
scope.updatePledge = function () {
this.formData.locale = scope.optlang.code;
delete this.formData.id ;
delete this.formData.officeName ;
delete this.formData.clientName ;
delete this.formData.pledgeNumber ;
delete this.formData.collateralDetailsData ;
delete this.formData.status;
delete this.formData.createdBy ;
delete this.formData.createdDate;
delete this.formData.updatedBy ;
delete this.formData.updatedDate;
this.formData.systemValue = scope.totalSystemPrice;
this.formData.userValue = scope.totalUserPrice;
this.formData.collateralDetails = scope.collateralDetails;
resourceFactory.pledgeResource.update({'pledgeId': scope.pledgeId}, this.formData, function (data) {
location.path('/viewpledge/' + scope.pledgeId);
});
};
}
});
mifosX.ng.application.controller('EditPledgeController', ['$scope', 'ResourceFactory', '$routeParams', '$location', 'dateFilter', mifosX.controllers.EditPledgeController]).run(function ($log) {
$log.info("EditPledgeController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,41 @@
(function (module) {
mifosX.controllers = _.extend(module, {
EditProductCollateralMappingController: function (scope, resourceFactory, location, routeParams) {
scope.formData = {};
resourceFactory.productCollateralsMappingResource.get({loanProductId: routeParams.loanProductId,productCollateralMappingId: routeParams.productCollateralMappingId}, function (data) {
scope.formData.loanProductId = data.product;
scope.formData.id = data.id;
scope.formData.collateralId = data.collateral;
resourceFactory.collateralsResource.getAll(function(collateralData){
scope.collaterals = collateralData;
});
resourceFactory.loanProductResource.getAllLoanProducts(function(loanData){
scope.loanProducts = loanData;
});
});
scope.submit = function () {
var id = this.formData.id;
var loanProductId = this.formData.loanProductId;
this.formData.id = undefined;
resourceFactory.productCollateralsMappingResource.update({loanProductId: loanProductId, productCollateralMappingId: id}, this.formData, function (data) {
location.path('/viewproductcollateralmapping');
});
};
scope.cancel = function () {
location.path('/viewproductcollateralmapping');
};
}
});
mifosX.ng.application.controller('EditProductCollateralMappingController', ['$scope', 'ResourceFactory', '$location', '$routeParams', mifosX.controllers.EditProductCollateralMappingController]).run(function ($log) {
$log.info("EditProductCollateralMappingController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,32 @@
(function (module) {
mifosX.controllers = _.extend(module, {
ProductCollateralMappingsController: function (scope, resourceFactory, location, routeParams) {
scope.getAllData = function() {
resourceFactory.productCollateralsMappingResource.getAll({loanProductId: -1}, function (data) {
scope.productcollateralmappings = data;
});
}
scope.getAllData();
scope.editProductCollateralMappings = function(data){
location.path('/editproductcollateralmapping/'+data.product+'/'+data.id);
};
scope.deleteProductCollateralMappings = function(mapping){
var id = mapping.id;
var productId = mapping.product;
resourceFactory.productCollateralsMappingResource.delete({loanProductId: productId, productCollateralMappingId: id}, function (datas) {
scope.getAllData();
});
};
}
});
mifosX.ng.application.controller('ProductCollateralMappingsController', ['$scope', 'ResourceFactory', '$location', '$routeParams', mifosX.controllers.ProductCollateralMappingsController]).run(function ($log) {
$log.info("ProductCollateralMappingsController initialized");
});
}(mifosX.controllers || {}));

Some files were not shown because too many files have changed in this diff Show More