· 6 years ago · Jul 13, 2019, 01:44 PM
1{
2 "name": "crm",
3 "version": "0.0.1",
4 "locales":["en", "tr"],
5 "title": {
6 "en": "CRM",
7 "tr": "CRM"
8 },
9 "load": {
10 "types": [
11 "location_type",
12 "coordinate",
13 "location",
14 "address",
15
16 "current",
17 "price_type",
18
19
20 "contact",
21 "person",
22 "employee",
23 "company",
24 "company_employee",
25 "my_organisation",
26 "supplier",
27 "partner",
28 "retailer",
29 "technical_service",
30
31 "brand",
32 "auto_brand",
33 "auto_model",
34 "item_group",
35 "unit",
36 "item_type",
37 "item_size",
38 "item_kind",
39 "currency_type",
40 "price_table",
41 "price_list",
42
43 "inventory",
44 "typed_inventory",
45 "material",
46 "typed_material",
47 "fixture",
48 "vehicle",
49 "immovable",
50
51 "stock_unit",
52 "rawmaterial",
53 "semimanufactured",
54 "inventory_detail",
55 "inventorycard",
56 "product_group",
57 "product",
58 "productioncard",
59
60 "bank",
61
62 "wallet",
63 "cashsafe",
64 "bankaccount",
65 "posaccount",
66 "credit_card_account",
67 "coin_wallet",
68
69 "depot",
70
71 "document_detail",
72 "document",
73
74 "activity_document",
75 "financial_document",
76
77 "no_detail_activity_document",
78 "no_detail_financial_document",
79
80 "detailed_activity_document",
81 "detailed_financial_document",
82
83 "phone_call",
84 "inbound_phone_call",
85 "outgoing_phone_call",
86 "appointment",
87 "received_appointment",
88 "submitting_appointment",
89
90 "opportinity",
91 "sales_opportinity",
92 "purchase_opportinity",
93
94 "bid",
95 "received_bid",
96 "submitting_bid",
97
98 "order",
99 "received_order",
100 "submitting_order",
101 "order_cancellation",
102 "received_order_cancellation",
103 "submitting_order_cancellation",
104
105 "trade",
106 "sale",
107 "purchase",
108 "trading_cancellation",
109 "selling_cancellation",
110 "purchasing_cancellation",
111
112 "trading_fixture",
113 "selling_fixture",
114 "selling_cancellation_fixture",
115 "purchasing_fixture",
116 "purchasing_cancellation_fixture",
117
118 "trading_immovable",
119 "selling_immovable",
120 "selling_cancellation_immovable",
121 "purchasing_immovable",
122 "purchasing_cancellation_immovable",
123
124 "inventory_transaction",
125 "inventory_existent_opening",
126 "inventory_loss_after_counting",
127 "inventory_extra_after_counting",
128 "order_transaction",
129 "received_order_transaction",
130 "submitting_order_transaction",
131 "order_cancelation_transaction",
132 "received_order_cancelation_transaction",
133 "submitting_order_cancelation_transaction",
134 "trading_transaction",
135 "selling_transaction",
136 "purchasing_transaction",
137 "selling_cancellation_transaction",
138 "purchasing_cancellation_transaction",
139 "depot_transaction",
140
141 "contact_transaction",
142 "contact_debit_opening",
143 "contact_credit_opening",
144 "contact_debit",
145 "contact_credit",
146 "contact_loan",
147 "contact_barrow",
148 "contact_payment",
149 "contact_cashtransaction",
150 "contact_collecting_to_cashsafe",
151 "contact_payment_to_cashsafe",
152 "contact_bankaccount_transaction",
153 "contact_collecting_to_bankaccount",
154 "contact_collecting_to_posaccount",
155 "contact_payment_from_bankaccount",
156 "contact_payment_with_credit_card",
157 "contact_virement",
158
159 "cash_transaction",
160 "cash_debit_opening",
161 "cash_credit_opening",
162 "cash_debit",
163 "cash_credit",
164 "cashsafe_virement",
165
166 "bankaccount_transaction",
167 "bankaccount_debit_opening",
168 "bankaccount_credit_opening",
169 "bankaccount_debit",
170 "bankaccount_credit",
171 "bankaccount_debit_transfer",
172 "bankaccount_transaction",
173 "bankaccount_deposit_from_cashsafe",
174 "bankaccount_withdrawn_to_cashsafe",
175 "bankaccount_virement",
176
177 "moneycheck",
178 "taken_moneycheck",
179 "given_moneycheck",
180 "moneycheck_transaction",
181 "taken_moneycheck_collecting_to_cashsafe",
182 "taken_moneycheck_collecting_to_bankaccount",
183 "taken_moneycheck_turnover",
184 "given_moneycheck_payment_to_cashsafe",
185 "given_moneycheck_payment_to_bankaccount",
186
187 "voucher",
188 "taken_voucher",
189 "given_voucher",
190 "voucher_transaction",
191 "taken_voucher_collecting_to_cashsafe",
192 "taken_voucher_collecting_to_bankaccount",
193 "given_voucher_payment_to_cashsafe",
194 "given_voucher_payment_to_bankaccount",
195
196 "invoice",
197 "sales_invoice",
198 "purchase_invoice",
199 "cancellation_invoice",
200 "selling_cancellation_invoice",
201 "purchasing_cancellation_invoice"
202 ],
203 "data": [
204 "_role",
205 "_permission",
206 "_user",
207 "_userrole",
208 "person",
209 "location_type",
210 "location"
211 ],
212 "views": []
213 },
214 "options": {
215 "strict": true,
216 "cache": true,
217 "audit": true,
218 "readonly": false,
219 "secretKey": "pD0kPpsqqYv6_zRxI17",
220 "dbUri": "mongodb://localhost:27017/crm",
221 "default": {
222 "locale": "tr",
223 "user": 1,
224 "type": "_root",
225 "view": null,
226 "route": "$app.routes.dashboard",
227 "defaults": {
228 "types": {
229 "_user": {
230 "_type": "person"
231 }
232 }
233 }
234 },
235 "authorization": {
236 "use": ["user", "role", "aggrement"],
237 "role": {
238 "multiple": true,
239 "permission": {
240 "use": ["action", "type", "property"],
241 "default": "deny",
242 "action": {
243 "use": ["writable", "readable", "both"]
244 }
245 }
246 },
247 "agreement": {
248 "use": ["user", "document", "property"],
249 "user": {
250 "strategies": [
251 "sendToUsersInRootRole",
252 "sendToUsersInAdminRoles",
253 "sendToUsersInOrganisationAdminRole",
254 "sendToUsersInApplicationAdminRole",
255 "sendToUsersInRootRoleButWithoutAdmin",
256 "sendToUsersInAllParentRoles",
257 "sendToUsersInParentRole"
258 ],
259 "minimumVoteCount": 1,
260 "minimumVoteRatio": 0.00
261 },
262 "document": [
263 {
264 "type": "*",
265 "property": "*",
266 "strategy": "sendToUsersInParentRole",
267 "minimumVoteCount": 1,
268 "minimumVoteRatio": 0.00
269 }
270 ]
271 }
272 },
273 "authentication": {
274 "login": {
275 "use": ["active", "confirmation"],
276 "validations": [
277 {
278 "validator": "isLength",
279 "property": "password",
280 "arguments": [3, 8],
281 "message": {
282 "en": "{TITLE} should be between {ARGS[0]} and {ARGS[1]} characters!",
283 "tr": "{TITLE} {ARGS[0]} ile {ARGS[1]} arası uzunlukta olmalıdır!"
284 }
285 }
286 ]
287
288 },
289 "register": {
290 "use": ["confirmation"],
291 "confirmation": {
292 "use": ["email", "phone", "identity"]
293 },
294 "validations": [
295 {
296 "validator": "isLength",
297 "property": "password",
298 "arguments": [3, 8],
299 "message": {
300 "en": "{TITLE} should be between {ARGS[0]} and {ARGS[1]} characters!",
301 "tr": "{TITLE} {ARGS[0]} ile {ARGS[1]} arası uzunlukta olmalıdır!"
302 }
303 }
304 ]
305 }
306 }
307 },
308 "viewOptions": {
309 "auto": true,
310 "nameTemplate": {
311 "list": "`${pluralize($type.name)}`",
312 "detail": "`${type.name}`"
313 },
314 "multipleDelete": true,
315 "list": {
316 "doubleClick": "display"
317 }
318 },
319 "routes": {
320 "auto": true,
321 "dashboard": "/$dashboard",
322 "login": "/$login",
323 "logout": "/$logout",
324 "register": "/$register",
325 "passwordRecovery": "$passwordRecovery",
326 "changeLocale": "/$changeLocale",
327 "selectLocale": "/$selectLocale/:locale",
328 "list": "/list/:view",
329 "display": "/display/:view/:id",
330 "create": "/create/:type",
331 "edit": "/edit/:view/:id",
332 "delete": "/delete/:view/:id",
333 "deleteDocuments": "/delete/documents/:view/:ids",
334 "reports": "/reports/:report",
335
336 "customRoutes": [
337 {
338 "view": "viewName",
339 "path": "/path[/:param1/:param2]",
340 "component": "Component"
341 }
342 ]
343 },
344 "menu": {
345 "sidebar" : [
346 {
347 "title": { "en": "Dashboard", "tr": "Dashboard" },
348 "icon": { "set": "fa", "name": "chart-line" },
349 "view": "dashboard"
350 },
351 {
352 "title": { "en": "Contacts", "tr": "Kişiler" },
353 "icon": { "set": "fa", "name": "users" },
354 "menu": [
355 { "view": "companies" },
356 { "view": "people" },
357 { "view": "employees" },
358 { "view": "suppliers" },
359 { "view": "partners" },
360 { "view": "retailers" },
361 { "view": "technical_services" }
362 ]
363 },
364 {
365 "title": { "en": "Products Management", "tr": "Ürün Yönetimi" },
366 "icon": { "set": "fa", "name": "cubes" },
367 "menu": [
368 { "view": "product_groups" },
369 { "view": "products" }
370 ]
371 },
372 {
373 "title": { "en": "Production Management", "tr": "Üretim Yönetimi" },
374 "icon": { "set": "fa", "name": "cubes" },
375 "menu": [
376 { "view": "product_groups" },
377 { "view": "products" },
378 { "view": "productioncard" },
379 { "view": "production_requests" },
380 { "view": "completed_productions" }
381 ]
382 },
383 {
384 "title": {"en": "Activities", "tr": "Aktiviteler"},
385 "icon": { "set": "fa", "name": "recycle" },
386 "menu": [
387 {
388 "title": { "en": "Phone Call Management", "tr": "Telefon Görüşmesi Yönetimi" },
389 "icon": { "set": "fa", "name": "phone-volume" },
390 "menu": [
391 { "view": "inbound_phonecalls" },
392 { "view": "outgoing_phonecalls" }
393 ]
394 },
395 {
396 "title": { "en": "Appointment Management", "tr": "Randevu Yönetimi" },
397 "icon": { "set": "fa", "name": "calender-check" },
398 "menu": [
399 { "view": "received_appointments" },
400 { "view": "submitting_appointments" }
401 ]
402 },
403 {
404 "title": {"us": "Opportinity Management", "tr": "Fırsat Yönetimi"},
405 "icon": { "set": "fa", "name": "hand-shake" },
406 "menu": [
407 { "view": "received_opportinities" },
408 { "view": "submitting_opportinities" }
409 ]
410 },
411 {
412 "title": {"us": "Bid Management", "tr": "Teklif Yönetimi"},
413 "icon": { "set": "fa", "name": "hand-shake" },
414 "menu": [
415 { "view": "received_opportinities" },
416 { "view": "submitting_opportinities" },
417 { "view": "received_bids" },
418 { "view": "submitting_bids" }
419 ]
420 },
421 {
422 "title": { "en": "Order Management", "tr": "Sipariş Yönetimi" },
423 "icon": { "set": "fa", "name": "shopping-cart" },
424 "menu": [
425 { "view": "received_orders" },
426 { "view": "submitting_orders" }
427 ]
428 },
429 {
430 "title": { "en": "Sale Management", "tr": "Satış Yönetimi" },
431 "icon": { "set": "fa", "name": "dollar-sign" },
432 "menu": [
433 { "view": "sales" },
434 { "view": "selling_cancellations" },
435
436 { "view": "selling_fixtures" },
437 { "view": "selling_fixtures" },
438
439 { "view": "selling_immovables" },
440 { "view": "selling_cancellation_immovables" }
441 ]
442 },
443 {
444 "title": { "en": "Purchase Management", "tr": "Satınalma Yönetimi" },
445 "icon": { "set": "fa", "name": "truck" },
446 "menu": [
447 { "view": "purchases" },
448 { "view": "purchase_cancellations" }
449 ]
450 },
451 {
452 "title": { "en": "Depot Management", "tr": "Depo Yönetimi" },
453 "icon": { "set": "fa", "name": "boxes" },
454 "menu": [
455 { "view": "depots" },
456 { "view": "depot_transactions" }
457 ]
458 }
459 ]
460 },
461 {
462 "title": { "en": "Finance Management", "tr": "Finans Yönetimi"} ,
463 "icon": { "set": "fa", "name": "recycle" },
464 "menu": [
465 {
466 "title": { "en": "Stock Management", "tr": "Stok Yönetimi" },
467 "icon": { "set": "fa", "name": "cubes" },
468 "menu": [
469 { "view": "inventories" },
470 { "view": "inventory_transactions" }
471 ]
472 },
473 {
474 "title": { "en": "Current Management", "tr": "Cari Yönetimi" },
475 "icon": { "set": "fa", "name": "users" },
476 "menu": [
477 { "view": "contacts" },
478 { "view": "contact_transactions" }
479 ]
480 },
481 {
482 "title": { "en": "Cashregister Management", "tr": "Kasa Yönetimi" },
483 "icon": { "set": "fa", "name": "money" },
484 "menu": [
485 { "view": "cashsafes" },
486 { "view": "cash_transactions" }
487 ]
488 },
489 {
490 "title": { "en": "Bank Account Management", "tr": "Banka Hesabı Yönetimi" },
491 "icon": { "set": "fa", "name": "money" },
492 "menu": [
493 { "view": "banks" },
494 { "view": "bankaccounts" },
495 { "view": "bankaccount_transactions" }
496 ]
497 },
498 {
499 "title": { "en": "Money Check Management", "tr": "Çek Yönetimi" },
500 "icon": { "set": "fa", "name": "users" },
501 "menu": [
502 { "view": "taken_moneychecks" },
503 { "view": "given_moneychecks" },
504 { "view": "money_checktransactions" }
505 ]
506 },
507 {
508 "title": { "en": "Money Voucher Management", "tr": "Senet Yönetimi" },
509 "icon": { "set": "fa", "name": "users" },
510 "menu": [
511 { "view": "taken_vouchers" },
512 { "view": "given_vouchers" },
513 { "view": "voucher_transactions" }
514 ]
515 },
516 {
517 "title": { "en": "Invoice Management", "tr": "Fatura Yönetimi" },
518 "icon": { "set": "fa", "name": "money" },
519 "menu": [
520 {
521 "view": "invoices",
522 "title": { "en": "All Invoices", "tr": "Tüm Faturalar" }
523 },
524 { "view": "sales_invoices" },
525 { "view": "selling_cancellation_invoices" },
526 { "view": "purchase_invoices" },
527 { "view": "purchasing_cancellation_invoices" }
528 ]
529 }
530 ]
531 }
532 ]
533 },
534
535 "types": [
536 {
537 "name": "coordinate",
538 "singular": { "en": "Coordinate", "tr": "Koordinat" },
539 "plural": { "en": "Coordinates", "tr": "Koordinatlar" },
540 "options": {
541 "defaultSort": "type",
542 "display": "($doc.name)",
543 "populate": {
544 "find": [],
545 "findOne": []
546 },
547 "public": {
548 "findAll": true,
549 "find": true,
550 "findById": true
551 }
552 },
553 "properties": [
554 {
555 "name": "type",
556 "type": "string",
557 "title": { "en": "Type", "tr": "Tipi" },
558 "options": {
559 "unique": true,
560 "required": true
561 },
562 "order": 10
563 },
564 {
565 "name": "coordinates",
566 "type": "array",
567 "title": { "en": "Coordinates", "tr": "Koordinatlar" },
568 "options": {
569 "type": "string",
570 "unique": true,
571 "required": true
572 },
573 "order": 20
574 }
575 ]
576 },
577 {
578 "name": "location_type",
579 "singular": { "en": "Location Type", "tr": "Lokasyon türü" },
580 "plural": { "en": "Location types", "tr": "Lokasyon türleri" },
581 "options": {
582 "defaultSort": "level",
583 "display": "($doc.name)",
584 "populate": {
585 "find": [],
586 "findOne": []
587 },
588 "public": {
589 "findAll": true,
590 "find": true,
591 "findById": true
592 }
593 },
594 "properties": [
595 {
596 "name": "name",
597 "type": "localized",
598 "title": { "en": "Name", "tr": "Adı" },
599 "options": {
600 "unique": true,
601 "required": true,
602 "validations": [
603 {
604 "validator": "matches",
605 "arguments": ["^[A-Za-z0-9-çğıöşüÇĞİÖŞÜ]+$", "g"],
606 "message": {
607 "en": "{PATH} property name must be valid! regex: /^[A-Za-z0-9-çğıöşüÇĞİÖŞÜ]+$/g",
608 "tr": "{PATH} alan adı geçerli bir isim olmalıdır! regex : /^[A-Za-z0-9-çğıöşüÇĞİÖŞÜ]+$/g"
609 }
610 }
611 ]
612 },
613 "order": 10
614 },
615 {
616 "name": "level",
617 "type": "number",
618 "title": { "en": "Level", "tr": "Seviye" },
619 "options": {
620 "unique": true,
621 "required": true
622 },
623 "order": 20
624 }
625 ]
626 },
627 {
628 "name": "location",
629 "singular": { "en": "Location", "tr": "Lokasyon" },
630 "plural": { "en": "Locations", "tr": "Lokasyonlar" },
631 "options": {
632 "defaultSort": "order",
633 "ordered": "order",
634 "display": "($doc.name)",
635 "autopopulate": true,
636 "populate": {
637 "find": [],
638 "findOne": []
639 },
640 "tree": {
641 "parent": "parent",
642 "children": "locations",
643 "maxDepth": 3
644 },
645
646 "public": {
647 "findAll": true,
648 "find": true,
649 "findById": true
650 }
651 },
652 "properties": [
653 {
654 "name": "parent",
655 "type": "reference",
656 "title": { "en": "Parent location", "tr": "Üst lokasyon" },
657 "options": {
658 "type": "location",
659 "unique": false,
660 "required": false
661 },
662 "order": 10
663 },
664 {
665 "name": "type",
666 "type": "reference",
667 "title": { "en": "Location type", "tr": "Lokasyon türü" },
668 "options": {
669 "type": "location_type",
670 "unique": true,
671 "required": true
672 },
673 "order": 20
674 },
675 {
676 "name": "name",
677 "type": "localized",
678 "title": { "en": "Name", "tr": "Adı" },
679 "options": {
680 "unique": true,
681 "required": true,
682 "validations": [
683 {
684 "validator": "matches",
685 "arguments": ["^[A-Za-z0-9-çğıöşüÇĞİÖŞÜ]+$", "g"],
686 "messages": {
687 "en": "test type property must be a valid name! regex: /^[A-Za-z0-9-çğıöşüÇĞİÖŞÜ]+$/g",
688 "tr": "test tipi adı alanı geçerli bir isim olmalıdır! regex : /^[A-Za-z0-9-çğıöşüÇĞİÖŞÜ]+$/g"
689 }
690 }
691 ]
692 },
693 "order": 30
694 },
695 {
696 "name": "location",
697 "type": "object",
698 "title": { "en": "Location", "tr": "Lokasyon" },
699 "options": {
700 "type": "location",
701 "unique": false,
702 "required": true,
703 "validations": [
704 {
705 "validator": "multipleUnique",
706 "arguments": ["parent", "name"],
707 "messages": {
708 "en": "This location document is already created!",
709 "tr": "Bu lokasyon dokümanı zaten oluşturulmuş!"
710 }
711 }
712 ]
713 },
714 "order": 40
715 },
716 {
717 "name": "order",
718 "type": "number",
719 "title": { "en": "Order", "tr": "Sıra" },
720 "options": {
721 "unique": false,
722 "required": true,
723 "run": {
724 "when": [
725 {
726 "where": "server",
727 "type": "before",
728 "on": "validate",
729 "if": "(!$doc.order)",
730 "do": 0
731 },
732 {
733 "where": "client",
734 "type": "after",
735 "on": "changed",
736 "object": "this",
737 "path": "type",
738 "if": "(!$doc.order && $doc.type)",
739 "async": true,
740 "do": 0
741 }
742 ],
743 "tasks": [
744 {
745 "object": "this",
746 "path": "order",
747 "method": "set",
748 "async": true,
749 "params": {
750 "value": "$results[0]"
751 },
752 "tasks": [{
753 "object": "repository",
754 "method": "aggregate",
755 "async": true,
756 "params": {
757 "type": "location",
758 "query": [
759 { "$match": { "type": "getId($doc.type)" } },
760 { "$group": { "_id": null, "maxOrder": { "$max": "$order" } }},
761 { "$project": { "_id": 0, "maxOrder": 1 }}
762 ]
763 },
764 "interpolate": ["$run.tasks[0].tasks[0].params.query[0].$match.type"],
765 "return": "($result[0].maxOrder ? ($result[0].maxOrder + 1) : 1)"
766 }]
767 }
768 ]
769 }
770 },
771 "order": 50
772 },
773 {
774 "name": "locations",
775 "type": "collection",
776 "title": { "en": "Sub tests", "tr": "Alt testler" },
777 "options": {
778 "type": "location",
779 "reference": {
780 "type": "location",
781 "property": "parent"
782 },
783 "unique": false,
784 "required": false
785 },
786 "order": 100
787 }
788 ]
789 },
790 {
791 "name": "address",
792 "singular": { "en": "Address", "tr": "Adres" },
793 "plural": { "en": "Addresses", "tr": "Adresler" },
794 "abstract": true,
795 "base": null,
796 "options": {
797 "defaultSort": "name",
798 "display": "($doc.name)",
799 "autopopulate": true,
800 "populate": {
801 "find": [],
802 "findOne": []
803 }
804 },
805 "properties": [
806 {
807 "name": "streetLineOne",
808 "type": "string",
809 "title": { "en": "Address", "tr": "Adres" },
810 "options": {
811 "unique": false,
812 "required": false
813 },
814 "order": 10
815 },
816 {
817 "name": "streetLineTwo",
818 "type": "string",
819 "title": { "en": "", "tr": "" },
820 "options": {
821 "unique": true,
822 "required": true
823 },
824 "order": 20
825 },
826 {
827 "name": "country",
828 "type": "reference",
829 "title": { "en": "Country", "tr": "Ülke" },
830 "options": {
831 "type": "location",
832 "unique": false,
833 "required": true,
834 "lookup": {
835 "filter": {
836 "type": 1
837 }
838 }
839 },
840 "order": 30
841 },
842 {
843 "name": "city",
844 "type": "reference",
845 "title": { "en": "City", "tr": "Şehir" },
846 "options": {
847 "type": "location",
848 "unique": false,
849 "required": true,
850 "run": {
851 "when": [
852 {
853 "where": "client",
854 "type": "after",
855 "on": "changed",
856 "object": "this",
857 "path": "country",
858 "parallel": true
859 }
860 ],
861 "tasks": [
862 {
863 "object": "this",
864 "path": "city",
865 "method": "refresh"
866 },
867 {
868 "object": "this",
869 "path": "city",
870 "method": "deleteValue"
871 }
872 ]
873 },
874 "lookup": {
875 "filter": {
876 "type": 2,
877 "parent": "getId($doc.country)"
878 },
879 "interpolate": ["$lookup.filter.parent"]
880 }
881 },
882 "order": 40
883 },
884 {
885 "name": "district",
886 "type": "reference",
887 "title": { "en": "District", "tr": "District" },
888 "options": {
889 "type": "location",
890 "unique": false,
891 "required": true,
892 "run": {
893 "when": [
894 {
895 "where": "client",
896 "type": "after",
897 "on": "changed",
898 "object": "this",
899 "property": "city",
900 "async": true,
901 "parellel": false
902 }
903 ],
904 "tasks": [
905 {
906 "object": "this",
907 "path": "district",
908 "method": "refreshLookupList"
909 },
910 {
911 "if": "$lookup.list.length",
912 "object": "this",
913 "path": "district",
914 "method": "set",
915 "params": {
916 "value": "setId($lookup.list[0])"
917 },
918 "interpolate": ["$run.tasks[1].params.value"]
919 }
920 ]
921 },
922 "lookup": {
923 "type": "location",
924 "find": {
925 "filter": {
926 "type": 3,
927 "parent": "getId($doc.city)"
928 }
929 },
930 "interpolate": ["$lookup.find.filter.parent"]
931 }
932 },
933 "order": 50
934 },
935 {
936 "name": "order",
937 "type": "number",
938 "title": { "en": "Order", "tr": "sıra" },
939 "options": {
940 "unique": false,
941 "required": false
942 },
943 "order": 60
944 },
945 {
946 "name": "locations",
947 "type": "collection",
948 "title": { "en": "Sub tests", "tr": "Alt testler" },
949 "options": {
950 "type": "location",
951 "reference": {
952 "type": "location",
953 "property": "parent"
954 },
955 "unique": false,
956 "required": false
957 },
958 "order": 100
959 }
960 ]
961 }
962]
963}