Compare commits
677 Commits
v1.45.02(4
...
master-bet
| Author | SHA1 | Date | |
|---|---|---|---|
| 3ef69b8dd9 | |||
| 6b40bd1d60 | |||
| ab230425c3 | |||
| 2f54b375b9 | |||
| 9aa9b9121f | |||
| 268ce9fce9 | |||
| eddecc165d | |||
| 45c64ad0ac | |||
| 398f0a9523 | |||
| 4861d53031 | |||
| e27a4e840a | |||
| cc67ac5f47 | |||
| 8e2d110792 | |||
| 5cdf33950d | |||
| 2727c1b01c | |||
| 9924165362 | |||
| 0904388ffe | |||
| f86296d2a1 | |||
| cfe2b85886 | |||
| d57a7a53f0 | |||
| 1c9d9bfc8f | |||
| 3614192ea9 | |||
| 4d01a52590 | |||
| 638e8650ee | |||
| 36061faeeb | |||
| 83a183c5a6 | |||
| fb6a68e6d4 | |||
| fd15235e6e | |||
| a88ddab405 | |||
| 9fb18215e3 | |||
| 2e3af6d1b3 | |||
| ac38aaeea7 | |||
| ade18170ee | |||
| cc89441f0a | |||
| f612e1c402 | |||
| 663d172edf | |||
| 5ffff22013 | |||
| 56829d7ffd | |||
| 092fbd69b6 | |||
| 878584a619 | |||
| 5d52e2df46 | |||
| f25240abe4 | |||
| 809d4ef5af | |||
| faa45cd096 | |||
| 1ab9b10a13 | |||
| 3bbc8c4f21 | |||
| a952f41e61 | |||
| cce4d2dbb2 | |||
| db246e6a94 | |||
| 37ce428bf0 | |||
| 49d099c339 | |||
| 64875c10c3 | |||
| 8b442ea4d0 | |||
| bb1867b1c8 | |||
| 42cb721e1c | |||
| c104313d89 | |||
| c8cc56bfd6 | |||
| 727c56a171 | |||
| ee71349c52 | |||
| 2c297db483 | |||
| eb779c34ab | |||
| 05c306e29f | |||
| 80b5b8db34 | |||
| e0b86db09d | |||
| 9d871f3ae4 | |||
| e025b234a7 | |||
| e57bd79fba | |||
| 97fe0d53b8 | |||
| acafcf720d | |||
| 809ef43445 | |||
| 1079c38a5f | |||
| f6388eff1c | |||
| 38f3eced41 | |||
| b5010d480f | |||
| 495a8dae92 | |||
| e61ef63225 | |||
| 9e9bdcd16d | |||
| ed938815bb | |||
| 539e8b7c31 | |||
| 92da8cde53 | |||
| fee8a13960 | |||
| 95c71d73ae | |||
| 96d29c784d | |||
| be8ce4de24 | |||
| 3d0f7f16f9 | |||
| 501ca404ff | |||
| 5ad4fd7821 | |||
| c99c3a3b11 | |||
| 7ccda80bfc | |||
| 2d67d87f94 | |||
| 1ba2fb96ba | |||
| ffdd1a1df5 | |||
| 0205255f7d | |||
| f4e56c8b53 | |||
| e46cbca2a9 | |||
| 83fdb89a9e | |||
| d99fd542c2 | |||
| c21e856a0f | |||
| b673940dd6 | |||
| b0ce11cbf7 | |||
| f245bb5d1e | |||
| 4bf974e7b6 | |||
| 95adc4bdc9 | |||
| 4ef2c209c8 | |||
| 41d77b806f | |||
| 6b65c4a570 | |||
| 1247ff590b | |||
| adc76fe82c | |||
| 1c029242ac | |||
| b2aea70516 | |||
| cf2134de57 | |||
| 4d5c0e5509 | |||
| 21af5fc0a9 | |||
| caeabdb765 | |||
| 09b984f5d0 | |||
| ebea9d3a8f | |||
| ee5e80ccf4 | |||
| 9df5ac353c | |||
| 610d42328a | |||
| dd473412cc | |||
| 4f0c5bf6dd | |||
| 90e4e2e464 | |||
| 50e2605ea5 | |||
| 4752e3a3a2 | |||
| 3fe903cc12 | |||
| 3f95a70039 | |||
| b01657de87 | |||
| 067443698a | |||
| fbef5b5cac | |||
| f2ef8ed241 | |||
| 0363f9c835 | |||
| 990a4d1538 | |||
| 55c16e602d | |||
| 6097a7f736 | |||
| f8b92901fd | |||
| 6c6daa4809 | |||
| de8b48d938 | |||
| bfa69ca78b | |||
| bffb471015 | |||
| 1c9604ffde | |||
| bf39eccf72 | |||
| 087e3e261c | |||
| 2eff03dee6 | |||
| fc34a555bd | |||
| 0bf21c046f | |||
| cc14e8a55d | |||
| 892047ffd4 | |||
| 2bae112d80 | |||
| 473ed536fb | |||
| dc342c1fee | |||
| 81507938b1 | |||
| cff52140bd | |||
| f2bab2f510 | |||
| 971e026488 | |||
| 24d90b58f9 | |||
| cb9ef169f8 | |||
| 5e27b8eaf0 | |||
| b5d049aa1d | |||
| 01028f9888 | |||
| 200424fd34 | |||
| eea738b595 | |||
| 2774eaecbf | |||
| ea765b591c | |||
| 07bf4982a1 | |||
| 648a572752 | |||
| 022a56a584 | |||
| ea97e8f249 | |||
| 571ad1590f | |||
| c4124226bd | |||
| 878ac418ed | |||
| 03c02d6625 | |||
| ba1118fdd8 | |||
| a44d6610ef | |||
| 7878748548 | |||
| 172a8256b6 | |||
| 7d0448aa01 | |||
| c7cc197c4c | |||
| c16f5c1747 | |||
| 0736278dc0 | |||
| e190e3de3b | |||
| 33860a0cfe | |||
| 15a946dfb6 | |||
| 62adf49157 | |||
| 64fcb7ccc8 | |||
| dc7ac45c29 | |||
| cebd3b8a8f | |||
| 3ebdc72642 | |||
| aacf5ca76e | |||
| 4f134bfc8e | |||
| a2b53f94c6 | |||
| 6bd1e62190 | |||
| 64407787d8 | |||
| ace4996c20 | |||
| f9f02452d7 | |||
| b653ae39af | |||
| 63d1d9ecf0 | |||
| 40e46e6aac | |||
| 5dc94cbd8f | |||
| 9c72a2a628 | |||
| c06c000e05 | |||
| 48818ec05f | |||
| 5f1b7ef4a4 | |||
| c36bc9d8c2 | |||
| ba9da26ca0 | |||
| 21bd503027 | |||
| b2ad4fdb62 | |||
| fe581580b7 | |||
| 60e725f554 | |||
| 1856ad1f4a | |||
| 27ed85eb6c | |||
| 2f6f9b54c2 | |||
| a2ef35e353 | |||
| b06f058ecf | |||
| e67cbd3760 | |||
| ce9d304043 | |||
| c7d9231d27 | |||
| fc30b8253d | |||
| e8da16cb8a | |||
| dff725ea92 | |||
| e4248c8c48 | |||
| a808144896 | |||
| 601f823944 | |||
| 819cc97113 | |||
| 05d806f9f2 | |||
| 6fdadffe77 | |||
| a245497fcf | |||
| 5ae9371c51 | |||
| 4aeb37e4bc | |||
| 4861c689d7 | |||
| dfe22a76cd | |||
| 24bc83b748 | |||
| 1c63908b3b | |||
| a622e89058 | |||
| ac4500e2a2 | |||
| 6ebcbc2d6c | |||
| 150be3cae2 | |||
| 72edf5228a | |||
| b72a3321d9 | |||
| 5bf71a1b0c | |||
| ee10427048 | |||
| 7fb7cbf8ec | |||
| 3a43e9238b | |||
| 007d58a17e | |||
| 998a59cffc | |||
| 11b353a91d | |||
| 8772d11e02 | |||
| 3d772e3722 | |||
| 41cfbc273e | |||
| bc67098ae0 | |||
| 0e49c93678 | |||
| ed93b88ee8 | |||
| 2cb184f24b | |||
| 126846aef2 | |||
| 8ac595c6c5 | |||
| fc2c0fbe0c | |||
| 0aa0b09afa | |||
| 23c199d0b8 | |||
| 9436236eaa | |||
| 633f41e17d | |||
| d6f26b3971 | |||
| fc5568a046 | |||
| 590e9ec24e | |||
| 984a4a156b | |||
| 04afb4cfca | |||
| cfa527e19a | |||
| 572f75fe9e | |||
| 81eda94fe0 | |||
| 8f02dfbee4 | |||
| 75e1447a54 | |||
| aa6877c235 | |||
| 23332e1424 | |||
| fc2ffc6a62 | |||
| e5f79bf7e7 | |||
| d8f9886f82 | |||
| 51c5c831ee | |||
| 3279c4e2af | |||
| 6f070e6998 | |||
| df4bfcc955 | |||
| c1983cf73c | |||
| da9bbd0b1c | |||
| cd84d3e9a8 | |||
| e79d80c2d3 | |||
| 595f4a8797 | |||
| 388f08a02f | |||
| c562735661 | |||
| ab137ad828 | |||
| b56f209084 | |||
| ae5c2c1b5a | |||
| bddb6e2bac | |||
| 5107897888 | |||
| d91eaf3412 | |||
| caa6a7cd75 | |||
| 567b288e4d | |||
| 7cfb0879af | |||
| ed4485a536 | |||
| 1db13de61d | |||
| 12388a6175 | |||
| 86121bfa93 | |||
| 669a38732f | |||
| e3e7a7d7c6 | |||
| a5a1febc0e | |||
| 0c77af962f | |||
| 4374dc243c | |||
| 26ee5c5fea | |||
| f4d2e12073 | |||
| 75914ab9c9 | |||
| d1976f3e21 | |||
| 5ef5c4b28a | |||
| 8acb8a04db | |||
| 05a5b3d6a3 | |||
| e889f1e264 | |||
| 40d9370e3a | |||
| 2c3d4bbc22 | |||
| fd8bb8e7da | |||
| 60a088a7f4 | |||
| 8ca5207a58 | |||
| 9c3e4f0481 | |||
| b93f5e5fa5 | |||
| 87b45c6c27 | |||
| 20f425354f | |||
| 805e939c43 | |||
| b9bfdb3b44 | |||
| acfe51e83a | |||
| f2cc31e08a | |||
| e541031efe | |||
| d4b220d1e6 | |||
| e2a4a1ad67 | |||
| 136aa3bd9a | |||
| 6780f899d3 | |||
| 0e46e5fae3 | |||
| 798835cb4c | |||
| ba72284c87 | |||
| 603c5dd8b7 | |||
| 43fc8be493 | |||
| e35284f724 | |||
| b9de3e8b27 | |||
| 825eaaf840 | |||
| 22bace2402 | |||
| 3b86460f48 | |||
| ddac54b513 | |||
| f1790c2595 | |||
| dafec91aff | |||
| d818994e3a | |||
| a385b01584 | |||
| dec9f25c15 | |||
| 0f3cb16ef9 | |||
| 7920166110 | |||
| fdf719982f | |||
| 5d09453c39 | |||
| f71d4e56e6 | |||
| e6f4cc9d6d | |||
| 13d9c40119 | |||
| 1d7125a821 | |||
| deb4d77203 | |||
| cf2f9e5ffd | |||
| 1f5a628eb1 | |||
| 520a1cb07a | |||
| c620e9cb96 | |||
| 6ef4961074 | |||
| 01b91adc61 | |||
| db3641668a | |||
| 4d81b24fd4 | |||
| 8f420111fc | |||
| a20470c0f9 | |||
| 31cee18b37 | |||
| ca9c62bc80 | |||
| dd2c19f12a | |||
| 36b6ba7ddd | |||
| 3b3ab8e7c5 | |||
| 688a8e4bad | |||
| 12796b11e5 | |||
| f7dc857587 | |||
| 404716d269 | |||
| aa1c3b877d | |||
| 65e7d26655 | |||
| 3ade0879f5 | |||
| 4d267acad4 | |||
| 7c90a9b2fd | |||
| f99c0e5514 | |||
| babc0d1736 | |||
| 704caa3ab2 | |||
| 63552f6314 | |||
| 60c3dd4eca | |||
| 6776a1e521 | |||
| 7d130ae1eb | |||
| 25e3a5ddc4 | |||
| d44b726a66 | |||
| 3d3113d2bf | |||
| e917b2a413 | |||
| 96f827b692 | |||
| a41c09e980 | |||
| 7961508de3 | |||
| 3dcfe4773c | |||
| cc8b7de428 | |||
| 4bf1b2a1e9 | |||
| 5e7af4ced4 | |||
| b8bb20ce0d | |||
| b0567e4eaa | |||
| b7e74d9bdc | |||
| fd88e5cd64 | |||
| 370c0b47bd | |||
| 04071f3bad | |||
| 4901097f99 | |||
| 6e02aec5e0 | |||
| f1c304eaeb | |||
| 7b3fde1d71 | |||
| 3c337fc138 | |||
| 548cdd562a | |||
| 70a819ec83 | |||
| afd7ae25f3 | |||
| 74b3613555 | |||
| 1f1011e628 | |||
| 3a8debdbc4 | |||
| 143b8a5bda | |||
| d32c96818e | |||
| 20bc5c6da2 | |||
| cfc19b00f0 | |||
| c2d82d0806 | |||
| ae86a5cde8 | |||
| 0a55c644d7 | |||
| 417172b31c | |||
| bae4d1acac | |||
| d5a86327d8 | |||
| fef03ebfbc | |||
| 021f6974f1 | |||
| 448f361cd3 | |||
| 7aa5960f87 | |||
| 92abfe1da4 | |||
| 6338c1dfa6 | |||
| 657d85be86 | |||
| 205ba184d3 | |||
| f759b20f96 | |||
| c845689ec8 | |||
| 4479779e4a | |||
| a35b3b7fc4 | |||
| 5b31e2c6a9 | |||
| 6365cbfd5b | |||
| 9dbfa812c1 | |||
| 97c907c992 | |||
| caed709b64 | |||
| 2eb637e4bd | |||
| de91c7a8ec | |||
| 13800eecab | |||
| c9bfd52586 | |||
| c4357f662c | |||
| 67a8ca94db | |||
| 0bfd56c011 | |||
| eead844ac1 | |||
| 65cfadcb6e | |||
| 00067ca1c9 | |||
| 73ca8bb366 | |||
| 3ffdb2c220 | |||
| f3113a423c | |||
| a5479595c7 | |||
| 27e368f780 | |||
| e530c0dda9 | |||
| a3fbbb6dcc | |||
| d3931a116a | |||
| 189c11c27f | |||
| cff971bef8 | |||
| a5d3388665 | |||
| 22ad23c5b7 | |||
| b1d5e10db4 | |||
| 75662bd8ae | |||
| 763c96c7dc | |||
| 178b458030 | |||
| bde41d21be | |||
| 9d8228419c | |||
| ad7d9059c0 | |||
| 4831a7ce19 | |||
| 552b82feda | |||
| 6d62a7b10e | |||
| 667f4aea74 | |||
| f80225b7bf | |||
| 7a02e1d8ad | |||
| 9cc70f4ee6 | |||
| 7c4c5da1d6 | |||
| b960b6319a | |||
| 08ddaa7a11 | |||
| bcce40094c | |||
| 960388adf8 | |||
| e76722018f | |||
| 917a810a59 | |||
| b69a053323 | |||
| fc30017021 | |||
| e1dd4f2140 | |||
| 67a0679de7 | |||
| dfc87f7aec | |||
| 4da012b33c | |||
| c5ae374854 | |||
| 886ef6ba08 | |||
| fe77f90a7a | |||
| 7a1f0d6cf6 | |||
| 004bc3b926 | |||
| d1b9e22673 | |||
| 6edeba3246 | |||
| 5a0b45c6f9 | |||
| be5ebb89d7 | |||
| f81d61c4c5 | |||
| 634bc502ce | |||
| 7f9ebb3bc9 | |||
| 20783026b8 | |||
| 99fb9f1d6a | |||
| 86632940eb | |||
| d13dbf1ad3 | |||
| 2f9ee642da | |||
| afecc11364 | |||
| 53168632e7 | |||
| 06f59bfaaa | |||
| c83f75c5e4 | |||
| 185246597b | |||
| b33d566abd | |||
| 141147aee1 | |||
| 525570d918 | |||
| 49b4039bbe | |||
| 7a99df44c9 | |||
| 81ce09e605 | |||
| 67936a3787 | |||
| 69d880b587 | |||
| aeadea42e1 | |||
| f5c3dcfdc9 | |||
| 9bf0dacda6 | |||
| d30af1e2a6 | |||
| 71a18e9ffa | |||
| f4c64e5f04 | |||
| d54939d058 | |||
| a8674cb31e | |||
| 40e1fb4f83 | |||
| f3f0fd8fd8 | |||
| ed53b9e3b4 | |||
| 37ac05b8ab | |||
| d9070ee5fb | |||
| b3afc404f0 | |||
| 168c4e4fb7 | |||
| 1991be79d6 | |||
| c2a2983606 | |||
| 9866d5c4fd | |||
| 823d0d7a33 | |||
| 5b07ff5efa | |||
| c5639a643a | |||
| 012f75198b | |||
| ee3728436c | |||
| ed5c6c6b2f | |||
| d7e0e858d2 | |||
| 339a5e5b68 | |||
| 02a13911d8 | |||
| b6f51971f1 | |||
| 57079c0062 | |||
| 63c353a83c | |||
| c069d21cbf | |||
| afeb9ecc23 | |||
| 2ff8d80da3 | |||
| 891e2641fa | |||
| ca79107809 | |||
| 5c37b986ce | |||
| c426250cd5 | |||
| f090c11146 | |||
| 5c90f22a49 | |||
| f1ddaa1fca | |||
| 8490553a32 | |||
| 66824fccb1 | |||
| 9c6c17ffa3 | |||
| 39dce4d23f | |||
| c1dbbde905 | |||
| 8d2d0ad195 | |||
| 927b14c9fc | |||
| f342cd0e5f | |||
| c287852ce6 | |||
| c823692a72 | |||
| 1fe4437163 | |||
| 4500696bcd | |||
| 17b0454f8b | |||
| b9bbbabc5c | |||
| 4633a54152 | |||
| 5dbb03531d | |||
| edc9470e9b | |||
| 7adeee589e | |||
| 52a393c260 | |||
| 60a405536c | |||
| 5f5117c0f6 | |||
| 0740faa964 | |||
| 2f40302791 | |||
| 13b3d5e63b | |||
| 5e00329292 | |||
| 58521997c1 | |||
| 6b24111b39 | |||
| c2fe657bcf | |||
| af64ca04f9 | |||
| ad026cbd6b | |||
| 5481e25483 | |||
| c7c151045d | |||
| 1e9d048264 | |||
| 6f202c0c7a | |||
| 94a9690045 | |||
| 2b4aa11021 | |||
| f2d5bb76c5 | |||
| 61dc5fc9a4 | |||
| 3440ecd4f1 | |||
| f6c7d98efa | |||
| e8821b0caf | |||
| 627a0b402b | |||
| ab9353dee6 | |||
| e956895e8c | |||
| 724a63acc1 | |||
| 3a5312d661 | |||
| 06dbae0ac5 | |||
| 603fd59b05 | |||
| ebbd515a34 | |||
| fd89c6394f | |||
| d72f685e01 | |||
| ea1f39a9db | |||
| 518e6f0853 | |||
| ce902cd2be | |||
| fde266922b | |||
| 7bdb9b47f4 | |||
| 68bf6767b9 | |||
| 184d1f759c | |||
| 2a26236d94 | |||
| 71a00ac140 | |||
| f10aaaba6b | |||
| 296675f0b0 | |||
| 7f365be53d | |||
| 0180500e9a | |||
| 9e85204d04 | |||
| d5d80e71e7 | |||
| 73b360f427 | |||
| 722094bc3e | |||
| 645b2cfe5d | |||
| afcaa82069 | |||
| 393bffe14c | |||
| d44b6f00c6 | |||
| de68c3b49f | |||
| 0591b60fad | |||
| a6cebccad9 | |||
| 4186d90a32 | |||
| bb21441c3d | |||
| 12b1b89713 | |||
| 26512f5dc1 | |||
| 4d29e2ab41 | |||
| 40d35bb4df | |||
| 1802ab5a2e | |||
| 6c6fd38482 | |||
| 2e37e874c3 | |||
| 1b4df1ecd1 | |||
| ce5ab1cfc2 | |||
| 3ac021d7ef | |||
| 4613f13eae | |||
| 71f077a617 | |||
| a80cf53f08 | |||
| ff73a124f0 | |||
| 18937a3315 | |||
| fb6a74aef8 | |||
| cd89ce917e | |||
| eb5ae8443d | |||
| 044bcbd852 | |||
| 53ba5a962b | |||
| db178ce991 | |||
| 7c35e19ed4 | |||
| 326a3a00b2 | |||
| 086597985b | |||
| d238cb1d88 | |||
| 5694d8bd1c | |||
| e5a4cf59c4 | |||
| 12fe5059a6 | |||
| e75121b0bd | |||
| 0312f972bc | |||
| 9d48fec426 | |||
| 645045b492 | |||
| 1988fae4f9 | |||
| 6c621d5ca8 | |||
| b8c8a9d8ea | |||
| 002e855d82 | |||
| 1c6de11e04 | |||
| ce3dfca6e0 | |||
| 706878b1e4 | |||
| 6c59e22101 | |||
| 2d48f6687c |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -149,3 +149,6 @@ crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
### AndroidStudio Patch ###
|
||||
!/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
copilot.*.xml
|
||||
/.idea/dataSources.xml
|
||||
35
.idea/codeStyles/Project.xml
generated
35
.idea/codeStyles/Project.xml
generated
@@ -1,5 +1,40 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<JavaCodeStyleSettings>
|
||||
<option name="IMPORT_LAYOUT_TABLE">
|
||||
<value>
|
||||
<package name="" withSubpackages="true" static="false" module="true" />
|
||||
<package name="android" withSubpackages="true" static="true" />
|
||||
<package name="androidx" withSubpackages="true" static="true" />
|
||||
<package name="com" withSubpackages="true" static="true" />
|
||||
<package name="junit" withSubpackages="true" static="true" />
|
||||
<package name="net" withSubpackages="true" static="true" />
|
||||
<package name="org" withSubpackages="true" static="true" />
|
||||
<package name="java" withSubpackages="true" static="true" />
|
||||
<package name="javax" withSubpackages="true" static="true" />
|
||||
<package name="" withSubpackages="true" static="true" />
|
||||
<emptyLine />
|
||||
<package name="android" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="androidx" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="com" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="junit" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="net" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="org" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="java" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="javax" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
</value>
|
||||
</option>
|
||||
</JavaCodeStyleSettings>
|
||||
<JetCodeStyleSettings>
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</JetCodeStyleSettings>
|
||||
|
||||
2
.idea/deploymentTargetSelector.xml
generated
2
.idea/deploymentTargetSelector.xml
generated
@@ -4,7 +4,7 @@
|
||||
<selectionStates>
|
||||
<SelectionState runConfigName="app">
|
||||
<option name="selectionMode" value="DROPDOWN" />
|
||||
<DropdownSelection timestamp="2025-03-17T09:16:48.549771200Z">
|
||||
<DropdownSelection timestamp="2025-06-10T08:33:51.753564600Z">
|
||||
<Target type="DEFAULT_BOOT">
|
||||
<handle>
|
||||
<DeviceId pluginId="PhysicalDevice" identifier="serial=21088B8EFD" />
|
||||
|
||||
13
.idea/deviceManager.xml
generated
Normal file
13
.idea/deviceManager.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DeviceTable">
|
||||
<option name="columnSorters">
|
||||
<list>
|
||||
<ColumnSorterState>
|
||||
<option name="column" value="Name" />
|
||||
<option name="order" value="ASCENDING" />
|
||||
</ColumnSorterState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
135
.idea/fileTemplates/Android Dialog.java
generated
135
.idea/fileTemplates/Android Dialog.java
generated
@@ -1,20 +1,21 @@
|
||||
#set( $regex = "([a-z])([A-Z]+)")
|
||||
#set( $replacement = "$1_$2")
|
||||
#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
|
||||
import android.app.Dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.content.DialogInterface;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseMaterialAlertDialogBuilder;
|
||||
|
||||
public class Dialog${NAME}View extends BaseDialogFragment {
|
||||
public class Dialog${NAME}View extends BaseMaterialAlertDialogBuilder implements DialogInterface.OnShowListener, DialogInterface.OnDismissListener {
|
||||
|
||||
/*
|
||||
Create the following layout resource file [dialog_${dashName}.xml]
|
||||
@@ -78,54 +79,112 @@ Create the following layout resource file [dialog_${dashName}.xml]
|
||||
private Context mContext;
|
||||
|
||||
//Pass here all external parameters
|
||||
public static Dialog${NAME}View newInstance() {
|
||||
return new Dialog${NAME}View();
|
||||
public static Dialog${NAME}View newInstance(@NonNull Context context) {
|
||||
return new Dialog${NAME}View(context);
|
||||
}
|
||||
|
||||
private Dialog${NAME}View() {
|
||||
super();
|
||||
/*
|
||||
- Add following lines into MainApplicationComponent
|
||||
|
||||
[a] into @Component
|
||||
Dialog${NAME}Module.class
|
||||
|
||||
[b] into interface body
|
||||
Dialog${NAME}Component.Factory dialog${NAME}Component();
|
||||
*/
|
||||
|
||||
private Dialog${NAME}View(@NonNull Context context) {
|
||||
super(context);
|
||||
this.mContext = context;
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialog${NAME}Component()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
//mBindings = Dialog${NAME}Binding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||
|
||||
if (context instanceof LifecycleOwner) {
|
||||
//mBindings.setLifecycleOwner((LifecycleOwner) context);
|
||||
}
|
||||
|
||||
setCancelable(true);
|
||||
|
||||
setView(mBindings.getRoot());
|
||||
|
||||
/*
|
||||
setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
onOk();
|
||||
});
|
||||
|
||||
setNegativeButton(R.string.abort, (dialog, which) -> {
|
||||
onKo();
|
||||
});
|
||||
*/
|
||||
|
||||
//this.setupBarcode();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
this.mContext = requireContext();
|
||||
|
||||
//mBindings = Dialog${NAME}Binding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||
//mBindings.setLifecycleOwner(this);
|
||||
|
||||
|
||||
/*
|
||||
- Add following lines into MainApplicationComponent
|
||||
|
||||
[a] into @Component
|
||||
Dialog${NAME}Module.class
|
||||
|
||||
[b] into interface body
|
||||
Dialog${NAME}Component.Factory dialog${NAME}Component();
|
||||
*/
|
||||
|
||||
setCancelable(false);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(isCancelable())
|
||||
.create();
|
||||
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
public AlertDialog create() {
|
||||
AlertDialog alertDialog = super.create();
|
||||
alertDialog.setCanceledOnTouchOutside(false);
|
||||
alertDialog.setOnShowListener(this);
|
||||
alertDialog.setOnDismissListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void dismiss() {
|
||||
if(getDialog() != null) getDialog().dismiss();
|
||||
public void onShow(DialogInterface dialogInterface) {
|
||||
//Init here all data or lists
|
||||
//this.initList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
//BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
|
||||
}
|
||||
|
||||
/*
|
||||
private void setupBarcode() {
|
||||
BarcodeManager.enable(mBarcodeScannerInstanceID);
|
||||
|
||||
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessful(onScanSuccessfull)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getContext(), ex, false)));
|
||||
|
||||
super.initBarcodeManager(mBarcodeScannerInstanceID);
|
||||
}
|
||||
*/
|
||||
|
||||
public static class Result {
|
||||
private final Object returnData;
|
||||
private final boolean isAborted;
|
||||
|
||||
private Result(Object returnData, boolean isAborted) {
|
||||
this.returnData = returnData;
|
||||
this.isAborted = isAborted;
|
||||
}
|
||||
|
||||
public static Result completed(Object returnData) {
|
||||
return new Result(returnData, false);
|
||||
}
|
||||
|
||||
public static Result aborted() {
|
||||
return new Result(null, true);
|
||||
}
|
||||
|
||||
public boolean isAborted() {
|
||||
return isAborted;
|
||||
}
|
||||
|
||||
public Object getReturnData() {
|
||||
return returnData;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
11
.idea/runConfigurations/app.xml
generated
11
.idea/runConfigurations/app.xml
generated
@@ -1,6 +1,7 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
|
||||
<module name="WMS.app.main" />
|
||||
<module name="WMS.app" />
|
||||
<option name="ANDROID_RUN_CONFIGURATION_SCHEMA_VERSION" value="1" />
|
||||
<option name="DEPLOY" value="true" />
|
||||
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
|
||||
<option name="DEPLOY_AS_INSTANT" value="false" />
|
||||
@@ -8,14 +9,17 @@
|
||||
<option name="PM_INSTALL_OPTIONS" value="" />
|
||||
<option name="ALL_USERS" value="false" />
|
||||
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
|
||||
<option name="ALLOW_ASSUME_VERIFIED" value="false" />
|
||||
<option name="CLEAR_APP_STORAGE" value="false" />
|
||||
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
|
||||
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
|
||||
<option name="MODE" value="default_activity" />
|
||||
<option name="RESTORE_ENABLED" value="false" />
|
||||
<option name="RESTORE_FILE" value="" />
|
||||
<option name="RESTORE_FRESH_INSTALL_ONLY" value="false" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
|
||||
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
|
||||
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
|
||||
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
|
||||
<option name="DEBUGGER_TYPE" value="Auto" />
|
||||
@@ -59,6 +63,7 @@
|
||||
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
|
||||
</Profilers>
|
||||
<option name="DEEP_LINK" value="" />
|
||||
<option name="ACTIVITY" value="" />
|
||||
<option name="ACTIVITY_CLASS" value="" />
|
||||
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
|
||||
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
|
||||
|
||||
72
Jenkinsfile.groovy
Normal file
72
Jenkinsfile.groovy
Normal file
@@ -0,0 +1,72 @@
|
||||
pipeline {
|
||||
agent {
|
||||
label 'master'
|
||||
}
|
||||
|
||||
options {
|
||||
buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '10'))
|
||||
disableConcurrentBuilds()
|
||||
}
|
||||
|
||||
environment {
|
||||
// ANDROID_HOME = "/usr/local/android/sdk" // Cambia in base al tuo sistema
|
||||
JAVA_HOME = tool 'JDK 17.0.6 x64' // Nome dello strumento configurato in Jenkins
|
||||
PATH = "${env.JAVA_HOME}\\bin;${env.PATH}"
|
||||
}
|
||||
|
||||
stages {
|
||||
|
||||
stage('Preparing') {
|
||||
when {
|
||||
expression {
|
||||
return env.GIT_BRANCH == "master-beta"
|
||||
}
|
||||
}
|
||||
steps {
|
||||
bat "./gradlew addBetaSuffix"
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build') {
|
||||
steps {
|
||||
bat "./gradlew assembleRelease"
|
||||
archiveArtifacts artifacts: 'app/build/outputs/apk/release/', onlyIfSuccessful: true
|
||||
}
|
||||
}
|
||||
|
||||
stage('Publish') {
|
||||
steps {
|
||||
azureUpload allowAnonymousAccess: true, fileShareName: 'storage-ci', filesPath: 'app/build/outputs/apk/release/*.apk,app/build/outputs/apk/release/*.txt', removePrefixPath: 'app/build/outputs/apk/release/', storageCredentialId: '83a86793-c1d6-4776-b20f-1ff652a57fee', storageType: 'filestorage', uploadArtifactsOnlyIfSuccessful: true, verbose: true, virtualPath: 'wms'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
success {
|
||||
script {
|
||||
bat 'curl -k "https://devservices.studioml.it/ems-api/updateWMSApp?overrideForced=false"'
|
||||
bat 'curl -k "https://devservices.studioml.it/ems-api/updateWMSApp?overrideForced=false&suffix=beta"'
|
||||
bat 'curl -k "https://services.studioml.it/ems-api/updateWMSApp?overrideForced=false"'
|
||||
bat 'curl -k "https://services.studioml.it/ems-api/updateWMSApp?overrideForced=false&suffix=beta"'
|
||||
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
|
||||
office365ConnectorSend adaptiveCards: true, color: '#008000', message: 'WMS è stato compilato con successo', status: 'SUCCESS', webhookUrl: 'https://default0b9c060c159c4e5f82a77459a72572.16.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/a73f903a4044474c84ad9a0d68a9a479/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gXc43FQXqIq7Xpfvis2XgFoPl8lpg0Sf5HtuxZG_jeI'
|
||||
}
|
||||
}
|
||||
}
|
||||
unstable {
|
||||
script {
|
||||
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
|
||||
office365ConnectorSend adaptiveCards: true, color: '#FFDE21', message: 'WMS è INSTABILE', status: 'UNSTABLE', webhookUrl: 'https://default0b9c060c159c4e5f82a77459a72572.16.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/a73f903a4044474c84ad9a0d68a9a479/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gXc43FQXqIq7Xpfvis2XgFoPl8lpg0Sf5HtuxZG_jeI'
|
||||
}
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
|
||||
office365ConnectorSend adaptiveCards: true, color: '#FF2C2C', message: 'Errore di compilazione su WMS', status: 'FAILURE', webhookUrl: 'https://default0b9c060c159c4e5f82a77459a72572.16.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/a73f903a4044474c84ad9a0d68a9a479/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gXc43FQXqIq7Xpfvis2XgFoPl8lpg0Sf5HtuxZG_jeI'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
124
app/build.gradle
124
app/build.gradle
@@ -8,10 +8,11 @@ apply plugin: 'com.google.firebase.crashlytics'
|
||||
//apply plugin: 'kotlin-android'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 484
|
||||
def appVersionName = '1.45.02'
|
||||
def appVersionCode = 553
|
||||
def appVersionName = '1.50.04'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
@@ -34,7 +35,7 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "it.integry.integrywmsnative"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 35
|
||||
targetSdk 36
|
||||
versionCode appVersionCode
|
||||
versionName appVersionName
|
||||
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
@@ -51,17 +52,26 @@ android {
|
||||
buildTypes {
|
||||
debug {
|
||||
ext.enableCrashlytics = false
|
||||
minifyEnabled true // Abilita la minimizzazione del codice
|
||||
// shrinkResources true // Rimuove risorse non utilizzate
|
||||
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
release {
|
||||
minifyEnabled false
|
||||
// minifyEnabled true // Abilita la minimizzazione del codice
|
||||
// shrinkResources true // Rimuove risorse non utilizzate
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
signingConfig signingConfigs.release
|
||||
firebaseCrashlytics {
|
||||
mappingFileUploadEnabled true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android.buildFeatures.dataBinding true
|
||||
android.buildFeatures.buildConfig true
|
||||
|
||||
android.dataBinding.enabledForTests true
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
@@ -72,12 +82,7 @@ android {
|
||||
}
|
||||
|
||||
|
||||
build {
|
||||
doLast {
|
||||
delete "$projectDir/build/outputs/apk/release/version.txt"
|
||||
file("$projectDir/build/outputs/apk/release/version.txt").text = appVersionCode + '\n' + appVersionName + '\n' + 'forced=true'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
gradle.projectsEvaluated {
|
||||
tasks.withType(JavaCompile.class).tap {
|
||||
@@ -90,7 +95,7 @@ android {
|
||||
abortOnError false
|
||||
}
|
||||
namespace 'it.integry.integrywmsnative'
|
||||
compileSdk 35
|
||||
compileSdk 36
|
||||
}
|
||||
|
||||
configurations {
|
||||
@@ -99,35 +104,33 @@ configurations {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
// androidTestImplementation('androidx.test.espresso:espresso-core:3.6.1', {
|
||||
// exclude group: 'com.android.support', module: 'support-annotations'
|
||||
// })
|
||||
// implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
|
||||
implementation 'com.github.lupaulus:logger:2.3.2'
|
||||
|
||||
//Firebase
|
||||
|
||||
// Import the Firebase BoM
|
||||
implementation platform('com.google.firebase:firebase-bom:33.8.0')
|
||||
implementation platform('com.google.firebase:firebase-bom:33.16.0')
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
implementation 'com.google.firebase:firebase-crashlytics'
|
||||
implementation 'com.google.firebase:firebase-perf'
|
||||
implementation 'com.google.android.gms:play-services-basement:18.5.0'
|
||||
implementation 'com.google.android.gms:play-services-basement:18.7.1'
|
||||
|
||||
//JJWT
|
||||
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
|
||||
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
|
||||
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
|
||||
implementation 'io.jsonwebtoken:jjwt-api:0.12.6'
|
||||
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.6'
|
||||
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.6'
|
||||
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||
implementation 'com.google.android.material:material:1.12.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.4.0'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||
|
||||
implementation('androidx.preference:preference-ktx:1.2.1') {
|
||||
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
|
||||
@@ -135,20 +138,18 @@ dependencies {
|
||||
}
|
||||
|
||||
implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0"
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:retrofit:3.0.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:3.0.0'
|
||||
implementation 'com.annimon:stream:1.2.2'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7'
|
||||
// implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
implementation 'org.apache.commons:commons-text:1.9'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime:2.9.1'
|
||||
implementation 'org.apache.commons:commons-text:1.13.1'
|
||||
|
||||
//MVVM
|
||||
def dagger2_version = '2.55'
|
||||
api "com.google.dagger:dagger:$dagger2_version"
|
||||
def dagger2_version = '2.56.2'
|
||||
implementation "com.google.dagger:dagger:$dagger2_version"
|
||||
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
|
||||
api "com.google.dagger:dagger-android:$dagger2_version"
|
||||
api "com.google.dagger:dagger-android-support:$dagger2_version"
|
||||
implementation "com.google.dagger:dagger-android:$dagger2_version"
|
||||
implementation "com.google.dagger:dagger-android-support:$dagger2_version"
|
||||
// if you use the support libraries
|
||||
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version"
|
||||
|
||||
@@ -160,7 +161,7 @@ dependencies {
|
||||
implementation 'com.github.pedromassango:doubleClick:3.0'
|
||||
|
||||
//SQLite ROOM
|
||||
def room_version = "2.6.1"
|
||||
def room_version = "2.7.2"
|
||||
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
annotationProcessor "androidx.room:room-compiler:$room_version"
|
||||
@@ -186,14 +187,13 @@ dependencies {
|
||||
implementation 'com.github.harry1453:android-bluetooth-serial:v1.1.2'
|
||||
|
||||
// RxJava is also required.
|
||||
implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
|
||||
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
|
||||
|
||||
implementation 'org.greenrobot:eventbus:3.3.1'
|
||||
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
|
||||
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
||||
|
||||
//Barcode generator
|
||||
// implementation group: 'com.google.zxing', name: 'core', version: '3.5.3'
|
||||
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
|
||||
|
||||
implementation("org.javatuples:javatuples:1.2")
|
||||
}
|
||||
|
||||
repositories {
|
||||
@@ -201,3 +201,49 @@ repositories {
|
||||
google()
|
||||
maven { url 'https://jitpack.io' }
|
||||
}
|
||||
|
||||
tasks.register('addBetaSuffix') {
|
||||
doLast {
|
||||
def gradleFile = file("build.gradle")
|
||||
def content = gradleFile.text
|
||||
|
||||
// Modifica appVersionName
|
||||
content = content.replaceAll(/appVersionName\s*=\s*'(.*?)'/) { fullMatch, version ->
|
||||
"appVersionName = '${version}-beta'"
|
||||
}
|
||||
|
||||
// Modifica outputFileName
|
||||
content = content.replaceAll(/output\.outputFileName\s*=\s*"(.*?)"/) { fullMatch, filename ->
|
||||
"output.outputFileName = \"${filename.replace('.apk', '-beta.apk')}\""
|
||||
}
|
||||
|
||||
// Modifica direttamente la riga che crea 'version.txt' in 'version-beta.txt'
|
||||
content = content.replace(
|
||||
"def versionFile = new File(outputDir, \"version.txt\")",
|
||||
"def versionFile = new File(outputDir, \"version-beta.txt\")"
|
||||
)
|
||||
|
||||
// Sovrascrivi il file
|
||||
gradleFile.write(content)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('createVersionFile') {
|
||||
doLast {
|
||||
def outputDir = file("${projectDir}/build/outputs/apk/release")
|
||||
def versionFile = new File(outputDir, "version.txt")
|
||||
|
||||
// Cancella il file se esiste
|
||||
if (versionFile.exists()) {
|
||||
versionFile.delete()
|
||||
}
|
||||
|
||||
// Crea il file con i contenuti desiderati
|
||||
versionFile.write("${android.defaultConfig.versionCode}\n${android.defaultConfig.versionName}\nforced=true")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
afterEvaluate {
|
||||
tasks.assembleRelease.finalizedBy createVersionFile
|
||||
}
|
||||
|
||||
49
app/proguard-rules.pro
vendored
49
app/proguard-rules.pro
vendored
@@ -18,8 +18,55 @@
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
|
||||
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
|
||||
|
||||
-dontwarn android.os.ServiceManager
|
||||
|
||||
|
||||
-keep class io.jsonwebtoken.** { *; }
|
||||
-dontwarn io.jsonwebtoken.**
|
||||
|
||||
-keep class * extends com.google.gson.TypeAdapter
|
||||
-keep class * implements com.google.gson.TypeAdapterFactory
|
||||
-keep class * implements com.google.gson.JsonSerializer
|
||||
-keep class * implements com.google.gson.JsonDeserializer
|
||||
# Prevent R8 from leaving Data object members always null
|
||||
-keepclasseswithmembers class * {
|
||||
<init>(...);
|
||||
@com.google.gson.annotations.SerializedName <fields>;
|
||||
}
|
||||
|
||||
# Per JJWT
|
||||
-keep class io.jsonwebtoken.** { *; }
|
||||
-keepnames class io.jsonwebtoken.* { *; }
|
||||
-keepnames interface io.jsonwebtoken.* { *; }
|
||||
|
||||
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
|
||||
-keep,allowshrinking class com.google.gson.reflect.TypeToken
|
||||
-keep,allowshrinking class * extends com.google.gson.reflect.TypeToken
|
||||
-keep,allowshrinking class com.google.common.reflect.TypeToken
|
||||
-keep,allowshrinking class * extends com.google.common.reflect.TypeToken
|
||||
|
||||
-keep class it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse { *; }
|
||||
-keep class * extends it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse { *; }
|
||||
-keep class * extends it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView { *; }
|
||||
-keep class * implements it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface { *; }
|
||||
|
||||
# Regole ProGuard per Gson e classi modello
|
||||
-keepattributes Signature
|
||||
-keepattributes InnerClasses
|
||||
|
||||
# Se usi ObservableArrayList o altre classi specifiche di AndroidX Data Binding con Gson,
|
||||
# potresti aver bisogno di mantenerle esplicitamente se non sono coperte sopra.
|
||||
-keep class androidx.databinding.ObservableArrayList { *; }
|
||||
-keepclassmembers class androidx.databinding.ObservableArrayList { *; }
|
||||
|
||||
|
||||
|
||||
-keep class * implements it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel { *; }
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,9 @@
|
||||
<manifest xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-feature android:name="android.hardware.camera"
|
||||
android:required="false" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
@@ -56,7 +59,6 @@
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.CLIENTBARCODEACTIVITY" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
@@ -81,6 +83,12 @@
|
||||
android:windowSoftInputMode="adjustNothing"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden"/>
|
||||
|
||||
<activity
|
||||
android:name=".gest.trasferimento_pedane.edit.TrasferimentoPedaneEditActivity"
|
||||
android:label="@string/activity_trasferimento_pedane_edit_title"
|
||||
android:windowSoftInputMode="adjustNothing"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden" />
|
||||
|
||||
<meta-data
|
||||
android:name="firebase_crashlytics_collection_enabled"
|
||||
android:value="true" />
|
||||
|
||||
@@ -11,6 +11,7 @@ import it.integry.integrywmsnative.core.expansion.BaseDialogFragmentComponent;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragmentModule;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragmentComponent;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragmentModule;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseMaterialAlertDialogBuilderComponent;
|
||||
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoComponent;
|
||||
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoModule;
|
||||
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.AccettazioneBollaPickingComponent;
|
||||
@@ -103,10 +104,20 @@ import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazi
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloModule;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.TrasferimentoPedaneComponent;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.TrasferimentoPedaneModule;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.dialog.confirm_export.DialogTrasferimentoPedaneConfirmExportComponent;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.dialog.confirm_export.DialogTrasferimentoPedaneConfirmExportModule;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.edit.TrasferimentoPedaneEditComponent;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.edit.TrasferimentoPedaneEditModule;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteModule;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzatoComponent;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzatoModule;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreComponent;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzatoComponent;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzatoModule;
|
||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
|
||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditComponent;
|
||||
@@ -118,6 +129,8 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModu
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_deposito.DialogAskDepositoComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_deposito.DialogAskDepositoModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_info_trasferimento.DialogAskInfoTrasferimentoComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_info_trasferimento.DialogAskInfoTrasferimentoModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_livello_posizione.DialogAskLivelloPosizioneComponent;
|
||||
@@ -132,6 +145,8 @@ import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUComponen
|
||||
import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListComponent;
|
||||
@@ -140,6 +155,8 @@ import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBat
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.create_new_art.DialogCreateNewArtComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.create_new_art.DialogCreateNewArtModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.device_end_of_life.DialogDeviceEndOfLifeComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.device_end_of_life.DialogDeviceEndOfLifeModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.extra_info.DialogExtraInfoComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.extra_info.DialogExtraInfoModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUComponent;
|
||||
@@ -158,6 +175,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.select_position_of_lu.DialogSelectPositionOfLuComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.select_position_of_lu.DialogSelectPositionOfLuModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiComponent;
|
||||
@@ -248,7 +267,17 @@ import it.integry.integrywmsnative.view.dialogs.update_available.DialogUpdateAva
|
||||
DialogAskLivelloPosizioneModule.class,
|
||||
VerificaGiacenzeModule.class,
|
||||
DialogExtraInfoModule.class,
|
||||
DialogAskDepositoModule.class
|
||||
DialogAskDepositoModule.class,
|
||||
DialogChooseArtFromListaArtsModule.class,
|
||||
DialogUltimeConsegneFiltroAvanzatoModule.class,
|
||||
DialogUltimiArriviFornitoreFiltroAvanzatoModule.class,
|
||||
DialogSelectPositionOfLuModule.class,
|
||||
TrasferimentoPedaneModule.class,
|
||||
DialogAskInfoTrasferimentoModule.class,
|
||||
TrasferimentoPedaneEditModule.class,
|
||||
DialogTrasferimentoPedaneConfirmExportModule.class,
|
||||
DialogChooseArtFromListaArtsModule.class,
|
||||
DialogDeviceEndOfLifeModule.class
|
||||
})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
@@ -258,6 +287,8 @@ public interface MainApplicationComponent {
|
||||
|
||||
BaseDialogFragmentComponent.Factory baseDialogFragmentComponent();
|
||||
|
||||
BaseMaterialAlertDialogBuilderComponent.Factory baseMaterialAlertDialogComponent();
|
||||
|
||||
SplashActivityComponent.Factory splashActivityComponent();
|
||||
|
||||
LoginComponent.Factory loginActivityComponent();
|
||||
@@ -417,6 +448,24 @@ public interface MainApplicationComponent {
|
||||
|
||||
DialogAskDepositoComponent.Factory dialogAskDepositoComponent();
|
||||
|
||||
DialogChooseArtFromListaArtsComponent.Factory dialogChooseArtFromListaArtsComponent();
|
||||
|
||||
DialogUltimeConsegneFiltroAvanzatoComponent.Factory dialogUltimeConsegneFiltroAvanzatoComponent();
|
||||
|
||||
DialogUltimiArriviFornitoreFiltroAvanzatoComponent.Factory dialogUltimiArriviFornitoreFiltroAvanzatoComponent();
|
||||
|
||||
DialogSelectPositionOfLuComponent.Factory dialogSelectPositionOfLuComponent();
|
||||
|
||||
TrasferimentoPedaneComponent.Factory trasferimentoPedaneComponent();
|
||||
|
||||
DialogAskInfoTrasferimentoComponent.Factory dialogAskInfoTrasferimentoComponent();
|
||||
|
||||
TrasferimentoPedaneEditComponent.Factory traferimentoPedaneEditComponent();
|
||||
|
||||
DialogTrasferimentoPedaneConfirmExportComponent.Factory dialogTrasferimentoPedaneConfirmExportComponent();
|
||||
|
||||
DialogDeviceEndOfLifeComponent.Factory dialogDeviceEndOfLifeComponent();
|
||||
|
||||
void inject(MainApplication mainApplication);
|
||||
|
||||
void inject(AppContext mainApplication);
|
||||
|
||||
@@ -49,13 +49,13 @@ import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsum
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ProduzioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.sound.SoundAlertService;
|
||||
import it.integry.integrywmsnative.core.update.UpdatesManager;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.login.rest.AuthenticationRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
|
||||
@@ -100,8 +100,14 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthenticationRESTConsumer authenticationRESTConsumer) {
|
||||
return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer, authenticationRESTConsumer);
|
||||
ServerStatusChecker providesServerStatusChecker(Handler handler) {
|
||||
return new ServerStatusChecker(handler);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, AuthenticationRESTConsumer authenticationRESTConsumer, ExecutorService executorService, Handler handler, ServerStatusChecker serverStatusChecker) {
|
||||
return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, authenticationRESTConsumer, executorService, handler, serverStatusChecker);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -151,8 +157,8 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
OrdiniRESTConsumer provideOrdiniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
|
||||
return new OrdiniRESTConsumer(restBuilder, systemRESTConsumer, entityRESTConsumer);
|
||||
OrdiniRESTConsumer provideOrdiniRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
|
||||
return new OrdiniRESTConsumer(restBuilder, executorService, systemRESTConsumer, entityRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -169,14 +175,14 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
CommessaRESTConsumer provideCommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new CommessaRESTConsumer(systemRESTConsumer);
|
||||
CommessaRESTConsumer provideCommessaRESTConsumer(ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
|
||||
return new CommessaRESTConsumer(executorService, systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
|
||||
return new DepositoRESTConsumer(entityRESTConsumer, systemRESTConsumer);
|
||||
DepositoRESTConsumer provideDepositoRESTConsumer(ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
|
||||
return new DepositoRESTConsumer(executorService, systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -193,24 +199,25 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MesRESTConsumer provideMesRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
|
||||
return new MesRESTConsumer(restBuilder, systemRESTConsumer);
|
||||
MesRESTConsumer provideMesRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
|
||||
return new MesRESTConsumer(executorService, restBuilder, systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
EntityRESTConsumer provideEntityRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new EntityRESTConsumer(restBuilder);
|
||||
EntityRESTConsumer provideEntityRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
|
||||
return new EntityRESTConsumer(restBuilder, executorService);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(RESTBuilder restBuilder,
|
||||
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(ExecutorService executorService,
|
||||
RESTBuilder restBuilder,
|
||||
SystemRESTConsumer systemRESTConsumer,
|
||||
ArticoloRESTConsumer articoloRESTConsumer,
|
||||
EntityRESTConsumer entityRESTConsumer,
|
||||
SettingsManager settingsManager) {
|
||||
return new ColliMagazzinoRESTConsumer(restBuilder, systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer, settingsManager);
|
||||
return new ColliMagazzinoRESTConsumer(executorService, restBuilder, systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer, settingsManager);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -233,8 +240,8 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
PrinterRESTConsumer providePrinterRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new PrinterRESTConsumer(restBuilder);
|
||||
PrinterRESTConsumer providePrinterRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
|
||||
return new PrinterRESTConsumer(executorService, restBuilder);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -251,14 +258,8 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
PosizioniRESTConsumer providesPosizioniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
|
||||
return new PosizioniRESTConsumer(restBuilder, systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdRESTConsumer(restBuilder, systemRESTConsumer);
|
||||
PosizioniRESTConsumer providesPosizioniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, ExecutorService executorService) {
|
||||
return new PosizioniRESTConsumer(restBuilder, systemRESTConsumer, executorService);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -275,8 +276,8 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
GiacenzaPvRESTConsumer provideGiacenzaPvRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
|
||||
return new GiacenzaPvRESTConsumer(restBuilder, executorService);
|
||||
GiacenzaPvRESTConsumer provideGiacenzaPvRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new GiacenzaPvRESTConsumer(restBuilder);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -305,32 +306,32 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new DocumentRESTConsumer(restBuilder);
|
||||
DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
|
||||
return new DocumentRESTConsumer(restBuilder, executorService);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new ColliAccettazioneRESTConsumer(restBuilder);
|
||||
ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
|
||||
return new ColliAccettazioneRESTConsumer(executorService, restBuilder);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new ColliSpedizioneRESTConsumer(restBuilder);
|
||||
ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
|
||||
return new ColliSpedizioneRESTConsumer(restBuilder, executorService);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer(RESTBuilder restBuilder, SettingsManager settingsManager) {
|
||||
return new ColliLavorazioneRESTConsumer(restBuilder, settingsManager);
|
||||
ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SettingsManager settingsManager) {
|
||||
return new ColliLavorazioneRESTConsumer(restBuilder, executorService, settingsManager);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new MagazzinoAutomaticoRESTConsumer(restBuilder);
|
||||
MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
|
||||
return new MagazzinoAutomaticoRESTConsumer(executorService, restBuilder);
|
||||
}
|
||||
|
||||
@Provides
|
||||
|
||||
@@ -4,15 +4,19 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -26,6 +30,7 @@ import it.integry.integrywmsnative.databinding.ActivitySplashBinding;
|
||||
import it.integry.integrywmsnative.gest.login.LoginActivity;
|
||||
import it.integry.integrywmsnative.gest.main.MainActivity;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.device_end_of_life.DialogDeviceEndOfLifeView;
|
||||
|
||||
public class SplashActivity extends BaseActivity implements MainContext.Listener {
|
||||
|
||||
@@ -37,6 +42,9 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
|
||||
@Inject
|
||||
MainContext mainContext;
|
||||
|
||||
@Inject
|
||||
Handler handler;
|
||||
|
||||
private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult;
|
||||
|
||||
public static void startActivity(Context context) {
|
||||
@@ -61,9 +69,24 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
|
||||
|
||||
UtilityContext.initMainActivity(this);
|
||||
|
||||
LocalDate endSupportDate = LocalDate.of(2026, 1, 31);
|
||||
|
||||
initAppVersion();
|
||||
initPermissions(this::init);
|
||||
boolean isOldAndroid = Build.VERSION.SDK_INT < Build.VERSION_CODES.O;
|
||||
|
||||
executorService.execute(() -> {
|
||||
|
||||
if (isOldAndroid)
|
||||
showDeviceEndOfLifeMessage();
|
||||
|
||||
handler.post(() -> {
|
||||
if (LocalDate.now().isBefore(endSupportDate) || !isOldAndroid) {
|
||||
initAppVersion();
|
||||
initPermissions(this::init);
|
||||
} else {
|
||||
this.finish();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void initAppVersion() {
|
||||
@@ -101,14 +124,29 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void showDeviceEndOfLifeMessage() {
|
||||
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
|
||||
DialogDeviceEndOfLifeView.newInstance(latch::countDown)
|
||||
.show(this.getSupportFragmentManager(), "dialog_device_end_of_life");
|
||||
|
||||
try {
|
||||
latch.await();
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDBDataLoading(String item) {
|
||||
runOnUiThread(() -> mBinding.loadingInfoTextview.setText("Caricamento " + item));
|
||||
handler.post(() -> mBinding.loadingInfoTextview.setText("Caricamento " + item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMenuLoading() {
|
||||
runOnUiThread(() -> mBinding.loadingInfoTextview.setText("Caricamento menù"));
|
||||
handler.post(() -> mBinding.loadingInfoTextview.setText("Caricamento menù"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -151,11 +189,13 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
|
||||
|
||||
@Override
|
||||
public void onError(Spanned message) {
|
||||
handler.post(() -> {
|
||||
DialogSimpleMessageView.makeErrorDialog(this,
|
||||
message, null, this::finish, R.string.logout, () -> {
|
||||
this.mainContext.logout(MainApplication::exit);
|
||||
})
|
||||
.show();
|
||||
|
||||
DialogSimpleMessageView.makeErrorDialog(
|
||||
message, null, this::finish, R.string.logout, () -> {
|
||||
this.mainContext.logout(MainApplication::exit);
|
||||
})
|
||||
.show(this.getSupportFragmentManager(), "tag");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,19 +24,4 @@ public class CommonConst {
|
||||
public static String RECOVER_COLLO_FILE = "recover_ul.json";
|
||||
}
|
||||
|
||||
public static class Mail {
|
||||
|
||||
public static String[] forErrorsDebug = {
|
||||
"g.scorrano@integry.it",
|
||||
"v.castellana@integry.it"
|
||||
};
|
||||
|
||||
public static String[] forErrors = {
|
||||
// "syslogs@integry.it",
|
||||
"g.scorrano@integry.it",
|
||||
"v.castellana@integry.it"
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,11 +11,11 @@ public class JwtUtils {
|
||||
private final static String SIGNING_KEY = "gICy3bjD56i/YFnBZZKe5ibiz3Snsp08nybGGziCV4ZcvyXBbyqWUnJ2wTrRXhOuf/xdljPXX0yBaqdAgvKthQ==";
|
||||
|
||||
public static Claims parseJwt(String token) {
|
||||
Jws<Claims> jws = Jwts.parserBuilder()
|
||||
.setSigningKey(Keys.hmacShaKeyFor(Decoders.BASE64.decode(SIGNING_KEY)))
|
||||
Jws<Claims> jws = Jwts.parser()
|
||||
.verifyWith(Keys.hmacShaKeyFor(Decoders.BASE64.decode(SIGNING_KEY)))
|
||||
.build()
|
||||
.parseClaimsJws(token);
|
||||
.parseSignedClaims(token);
|
||||
|
||||
return jws.getBody();
|
||||
return jws.getPayload();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ public class BarcodeCallbackDTO {
|
||||
|
||||
private int ID = -1;
|
||||
|
||||
private boolean enabled = true;
|
||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull;
|
||||
private RunnableArgs<Exception> onScanFailed;
|
||||
|
||||
@@ -19,6 +20,15 @@ public class BarcodeCallbackDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public BarcodeCallbackDTO setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
return this;
|
||||
}
|
||||
|
||||
public RunnableArgs<BarcodeScanDTO> getOnScanSuccessfull() {
|
||||
return onScanSuccessfull;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.barcode_reader;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
@@ -24,10 +25,15 @@ public class BarcodeManager {
|
||||
private static BarcodeReaderInterface mCurrentBarcodeInterface;
|
||||
private static final List<BarcodeCallbackDTO> mBarcodeCallbacksStacktrace = new ArrayList<>();
|
||||
|
||||
private static boolean mEnabled = true;
|
||||
// private static boolean mEnabled = true;
|
||||
|
||||
|
||||
private static final Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{PointMobileBarcodeReader.class, ZebraBarcodeReader.class, HoneyWellBarcodeReader.class, KeyboardEmulatorBarcodeReader.class};
|
||||
private static final Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{
|
||||
PointMobileBarcodeReader.class,
|
||||
ZebraBarcodeReader.class,
|
||||
HoneyWellBarcodeReader.class,
|
||||
KeyboardEmulatorBarcodeReader.class
|
||||
};
|
||||
|
||||
|
||||
public static void init(Context applicationContext) throws Exception {
|
||||
@@ -56,12 +62,12 @@ public class BarcodeManager {
|
||||
|
||||
mCurrentBarcodeInterface.register(data -> {
|
||||
BarcodeCallbackDTO callback = getValidCallback();
|
||||
if (callback != null && mEnabled) {
|
||||
if (callback != null && callback.isEnabled()) {
|
||||
callback.getOnScanSuccessfull().run(data);
|
||||
}
|
||||
}, ex -> {
|
||||
BarcodeCallbackDTO callback = getValidCallback();
|
||||
if (callback != null && mEnabled) {
|
||||
if (callback != null && callback.isEnabled()) {
|
||||
callback.getOnScanFailed().run(ex);
|
||||
}
|
||||
});
|
||||
@@ -103,7 +109,6 @@ public class BarcodeManager {
|
||||
}
|
||||
|
||||
public static int addCallback(BarcodeCallbackDTO barcodeCallbackDTO) {
|
||||
|
||||
int newID = -1;
|
||||
|
||||
if (!mBarcodeCallbacksStacktrace.isEmpty()) {
|
||||
@@ -133,18 +138,48 @@ public class BarcodeManager {
|
||||
}
|
||||
|
||||
|
||||
public static void disable() {
|
||||
mEnabled = false;
|
||||
// UtilityLogger.info("Barcode reader disabled");
|
||||
public static void disable(int instanceId) {
|
||||
mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
|
||||
.findFirst().ifPresent(x -> {
|
||||
x.setEnabled(false);
|
||||
Log.d("BarcodeManager", "Disabled callback " + x.getID() + ": " + x.getOnScanSuccessfull());
|
||||
});
|
||||
}
|
||||
|
||||
public static void enable() {
|
||||
mEnabled = true;
|
||||
// UtilityLogger.info("Barcode reader enabled");
|
||||
public static void disableLastCallback() {
|
||||
BarcodeCallbackDTO validCallback = getValidCallback();
|
||||
if (validCallback != null) {
|
||||
validCallback.setEnabled(false);
|
||||
// Log.d("BarcodeManager", "Last callback disabled: " + validCallback.getOnScanSuccessfull());
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isEnabled() {
|
||||
return mEnabled;
|
||||
public static void enable(int instanceId) {
|
||||
mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
|
||||
.findFirst()
|
||||
.ifPresent(x -> {
|
||||
x.setEnabled(true);
|
||||
// Log.d("BarcodeManager", "Enabled callback " + x.getID() + ": " + x.getOnScanSuccessfull());
|
||||
});
|
||||
}
|
||||
|
||||
public static void enableLastCallback() {
|
||||
BarcodeCallbackDTO validCallback = getValidCallback();
|
||||
if (validCallback != null) {
|
||||
validCallback.setEnabled(true);
|
||||
Log.d("BarcodeManager", "Last callback enabled: " + validCallback.getOnScanSuccessfull());
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isEnabled(int instanceId) {
|
||||
return mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
|
||||
.findFirst()
|
||||
.map(BarcodeCallbackDTO::isEnabled)
|
||||
.orElse(false);
|
||||
}
|
||||
|
||||
public static boolean isLastCallbackEnabled() {
|
||||
return getValidCallback() != null && getValidCallback().isEnabled();
|
||||
}
|
||||
|
||||
public static void changeSettings(List<Pair<String, Object>> settings) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigl
|
||||
import it.integry.integrywmsnative.gest.pv_verifica_giacenze.VerificaGiacenzeFragment;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloView;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.TrasferimentoPedaneFragment;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
|
||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
|
||||
@@ -230,6 +231,14 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setDrawerIcon(R.drawable.ic_black_empty_box)
|
||||
.setFragmentFactory(ArticoliInGiacenzaFragment::newInstance))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_trasferimento_pedane)
|
||||
.setCodMenu("MG076")
|
||||
.setTitleText(R.string.trasferimento_pedane_title)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_trasferimento_pedane)
|
||||
.setDrawerIcon(R.drawable.ic_black_empty_box)
|
||||
.setFragmentFactory(TrasferimentoPedaneFragment::newInstance))
|
||||
|
||||
).addGroup(
|
||||
new MenuGroup()
|
||||
.setCodMenu("MM012")
|
||||
|
||||
@@ -89,11 +89,25 @@ public class AppContext {
|
||||
private void initLogger() {
|
||||
Logger.addLogAdapter(new AndroidLogAdapter());
|
||||
|
||||
logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath());
|
||||
int maxBytesSize = 5 * 1024 * 1024;
|
||||
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
|
||||
File dataDir = mApplicationContext.getExternalFilesDir(null);
|
||||
|
||||
logsFolder = new File(dataDir, "logs");
|
||||
|
||||
if (!logsFolder.exists())
|
||||
logsFolder.mkdirs();
|
||||
|
||||
//Temporary clean
|
||||
File[] wrongFilesToBeDeleted = dataDir.listFiles((file, s) -> s.startsWith("logs_"));
|
||||
|
||||
if (wrongFilesToBeDeleted != null)
|
||||
for (File fileToDelete : wrongFilesToBeDeleted) {
|
||||
fileToDelete.delete();
|
||||
}
|
||||
|
||||
removeOldLogs(logsFolder);
|
||||
|
||||
int maxBytesSize = 5 * 1024 * 1024;
|
||||
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
|
||||
}
|
||||
|
||||
private void removeOldLogs(File logsFolder) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.context;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
@@ -9,16 +10,15 @@ import android.text.SpannedString;
|
||||
import com.google.firebase.installations.FirebaseInstallations;
|
||||
|
||||
import java.net.ConnectException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
|
||||
import it.integry.integrywmsnative.core.menu.MenuService;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityThread;
|
||||
import it.integry.integrywmsnative.gest.login.rest.AuthenticationRESTConsumer;
|
||||
|
||||
@Singleton
|
||||
@@ -27,17 +27,21 @@ public class MainContext {
|
||||
private final Context applicationContext;
|
||||
private final MenuService menuService;
|
||||
private final AppDatabase appDatabase;
|
||||
private final SystemRESTConsumer systemRESTConsumer;
|
||||
private final AuthenticationRESTConsumer authenticationRESTConsumer;
|
||||
private final ExecutorService executorService;
|
||||
private final Handler handler;
|
||||
private final ServerStatusChecker serverStatusChecker;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer, AuthenticationRESTConsumer authenticationRESTConsumer) {
|
||||
public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, AuthenticationRESTConsumer authenticationRESTConsumer, ExecutorService executorService, Handler handler, ServerStatusChecker serverStatusChecker) {
|
||||
this.applicationContext = applicationContext;
|
||||
this.menuService = menuService;
|
||||
this.appDatabase = appDatabase;
|
||||
this.systemRESTConsumer = systemRESTConsumer;
|
||||
this.authenticationRESTConsumer = authenticationRESTConsumer;
|
||||
this.executorService = executorService;
|
||||
this.handler = handler;
|
||||
this.serverStatusChecker = serverStatusChecker;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
@@ -48,34 +52,31 @@ public class MainContext {
|
||||
}
|
||||
|
||||
|
||||
//this.initAuthSession(() -> {
|
||||
// this.initDeviceId(() -> {
|
||||
this.initDBData(() -> {
|
||||
this.initMenu(() -> {
|
||||
executorService.execute(() -> {
|
||||
|
||||
if (mListener != null) mListener.onContextInitialized();
|
||||
});
|
||||
});
|
||||
// });
|
||||
//});
|
||||
try {
|
||||
this.initDBData();
|
||||
this.initMenu();
|
||||
serverStatusChecker.init();
|
||||
|
||||
if (mListener != null) mListener.onContextInitialized();
|
||||
|
||||
this.initServerStatusChecker();
|
||||
} catch (Exception ex) {
|
||||
Spanned message = null;
|
||||
|
||||
// EventBus.getDefault().register(this);
|
||||
if (ex.getCause() != null && ex.getCause() instanceof ConnectException) {
|
||||
message = Html.fromHtml("Impossibile collegarsi all'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
|
||||
} else if (ex.getMessage().startsWith("Status 404:")) {
|
||||
message = Html.fromHtml("Errore 404. Non è stato possibile soddisfare la richiesta sull'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
|
||||
} else {
|
||||
message = new SpannableString(ex.getMessage());
|
||||
}
|
||||
|
||||
if (mListener != null) mListener.onError(message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// @Subscribe(threadMode = ThreadMode.MAIN)
|
||||
// public void onSessionExpired(SessionExpiredEvent event) {
|
||||
// DialogSimpleMessageView.makeErrorDialog(
|
||||
// new SpannedString("La sessione è scaduta. Effettua nuovamente la login"),
|
||||
// null,
|
||||
// () -> {
|
||||
// logout(MainApplication::exit);
|
||||
// })
|
||||
// .show(activity.getSupportFragmentManager(), "expired-session-error");
|
||||
// }
|
||||
|
||||
|
||||
private void initAuthSession(Runnable onComplete) {
|
||||
this.authenticationRESTConsumer.me(obj -> {
|
||||
@@ -105,50 +106,28 @@ public class MainContext {
|
||||
|
||||
public void logout(Runnable onLoggedOut) {
|
||||
menuService.invalidateCache();
|
||||
UtilityThread.executeParallel(() -> {
|
||||
executorService.execute(() -> {
|
||||
SettingsManager.i().setUser(null);
|
||||
SettingsManager.i().setUserSession(null);
|
||||
SettingsManager.update();
|
||||
appDatabase.clearAllTables();
|
||||
|
||||
onLoggedOut.run();
|
||||
}, true);
|
||||
handler.post(() -> {
|
||||
onLoggedOut.run();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void initServerStatusChecker() {
|
||||
ServerStatusChecker.init();
|
||||
}
|
||||
|
||||
private void initDBData(Runnable onComplete) {
|
||||
|
||||
private void initDBData() throws Exception {
|
||||
|
||||
SettingsManager.loadDBVariables(item -> {
|
||||
if (mListener != null) mListener.onDBDataLoading(item);
|
||||
},
|
||||
onComplete,
|
||||
ex -> {
|
||||
|
||||
Spanned message = null;
|
||||
|
||||
if (ex.getCause() != null && ex.getCause() instanceof ConnectException) {
|
||||
message = Html.fromHtml("Impossibile collegarsi all'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
|
||||
} else if (ex.getMessage().startsWith("Status 404:")) {
|
||||
message = Html.fromHtml("Errore 404. Non è stato possibile soddisfare la richiesta sull'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
|
||||
} else {
|
||||
message = new SpannableString(ex.getMessage());
|
||||
}
|
||||
|
||||
if (mListener != null) mListener.onError(message);
|
||||
|
||||
}
|
||||
);
|
||||
if (mListener != null) mListener.onDBDataLoading(item);
|
||||
});
|
||||
}
|
||||
|
||||
private void initMenu(Runnable onComplete) {
|
||||
private void initMenu() throws Exception {
|
||||
if (mListener != null) mListener.onMenuLoading();
|
||||
this.menuService.init(onComplete, ex -> {
|
||||
if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
|
||||
});
|
||||
this.menuService.init();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package it.integry.integrywmsnative.core.data_recover;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
@@ -7,13 +10,26 @@ import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
|
||||
public class ColliDataRecoverDTO {
|
||||
|
||||
|
||||
@SerializedName("id")
|
||||
private int id;
|
||||
|
||||
@SerializedName("numCollo")
|
||||
private int numCollo;
|
||||
|
||||
@SerializedName("serCollo")
|
||||
private String serCollo;
|
||||
private String dataCollo;
|
||||
|
||||
@SerializedName("dataCollo")
|
||||
private LocalDate dataCollo;
|
||||
|
||||
@SerializedName("gestioneCollo")
|
||||
private String gestioneCollo;
|
||||
|
||||
@SerializedName("filtro")
|
||||
private String filtro;
|
||||
|
||||
@SerializedName("testateOrdini")
|
||||
private List<OrdineUscitaInevasoDTO> testateOrdini;
|
||||
|
||||
public int getId() {
|
||||
@@ -43,11 +59,11 @@ public class ColliDataRecoverDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataCollo() {
|
||||
public LocalDate getDataCollo() {
|
||||
return dataCollo;
|
||||
}
|
||||
|
||||
public ColliDataRecoverDTO setDataCollo(String dataCollo) {
|
||||
public ColliDataRecoverDTO setDataCollo(LocalDate dataCollo) {
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package it.integry.integrywmsnative.core.data_recover;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.gms.common.util.IOUtils;
|
||||
import com.google.gson.Gson;
|
||||
@@ -14,6 +13,7 @@ import java.io.InputStream;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -65,9 +65,9 @@ public class ColliDataRecoverService {
|
||||
}
|
||||
|
||||
private ColliDataRecoverDTO getIfExists(int id) {
|
||||
Optional<ColliDataRecoverDTO> recoverDTOOptional = Stream.of(mtbColtsSessions)
|
||||
Optional<ColliDataRecoverDTO> recoverDTOOptional = mtbColtsSessions.stream()
|
||||
.filter(x -> x.getId() == id)
|
||||
.findSingle();
|
||||
.findFirst();
|
||||
|
||||
|
||||
return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
|
||||
@@ -85,7 +85,7 @@ public class ColliDataRecoverService {
|
||||
|
||||
ColliDataRecoverDTO recoverDTO = new ColliDataRecoverDTO()
|
||||
.setId(newId)
|
||||
.setDataCollo(mtbColtSession.getDataColloS())
|
||||
.setDataCollo(mtbColtSession.getDataColloLD())
|
||||
.setNumCollo(mtbColtSession.getNumCollo())
|
||||
.setSerCollo(mtbColtSession.getSerCollo())
|
||||
.setGestioneCollo(mtbColtSession.getGestione())
|
||||
|
||||
@@ -22,6 +22,8 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneRowDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
||||
@@ -32,6 +34,8 @@ import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDT
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
|
||||
|
||||
@@ -45,9 +49,11 @@ import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRow
|
||||
InventarioEntity.class,
|
||||
InventarioRowRoomDTO.class,
|
||||
VerificaGiacenzeEntity.class,
|
||||
VerificaGiacenzeRowEntity.class
|
||||
VerificaGiacenzeRowEntity.class,
|
||||
TrasferimentoPedaneEntity.class,
|
||||
TrasferimentoPedaneRowEntity.class
|
||||
},
|
||||
version = 18)
|
||||
version = 21)
|
||||
@TypeConverters({
|
||||
DateConverter.class,
|
||||
BigDecimalConverter.class,
|
||||
@@ -77,7 +83,10 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
.addMigrations(MIGRATION_14_15)
|
||||
.addMigrations(MIGRATION_15_16)
|
||||
.addMigrations(MIGRATION_16_17)
|
||||
.addMigrations(MIGRATION_17_18);
|
||||
.addMigrations(MIGRATION_17_18)
|
||||
.addMigrations(MIGRATION_18_19)
|
||||
.addMigrations(MIGRATION_19_20)
|
||||
.addMigrations(MIGRATION_20_21);
|
||||
|
||||
sInstance = builder.build();
|
||||
}
|
||||
@@ -106,6 +115,10 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
|
||||
public abstract VerificaGiacenzeRowDao verificaGiacenzeRowDao();
|
||||
|
||||
public abstract TrasferimentoPedaneDao trasferimentoPedaneDao();
|
||||
|
||||
public abstract TrasferimentoPedaneRowDao trasferimentoPedaneRowDao();
|
||||
|
||||
|
||||
|
||||
static final Migration MIGRATION_10_11 = new Migration(10, 11) {
|
||||
@@ -172,11 +185,13 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine_cod_mart ON articoli_ordine (id_ordine, cod_mart);");
|
||||
}
|
||||
};
|
||||
|
||||
static final Migration MIGRATION_15_16 = new Migration(15, 16) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
}
|
||||
};
|
||||
|
||||
static final Migration MIGRATION_16_17 = new Migration(16, 17) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
@@ -193,6 +208,7 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
database.execSQL("DROP TABLE _inventario_rows_old;");
|
||||
}
|
||||
};
|
||||
|
||||
static final Migration MIGRATION_17_18 = new Migration(17, 18) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
@@ -217,4 +233,68 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
database.execSQL("CREATE INDEX IF NOT EXISTS index_verifica_giacenze_rows_parent_id ON verifica_giacenze_rows (parent_id)");
|
||||
}
|
||||
};
|
||||
|
||||
static final Migration MIGRATION_18_19 = new Migration(18, 19) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("CREATE TABLE IF NOT EXISTS trasferimento_pedane (" +
|
||||
"cod_mdep_dest TEXT NOT NULL, " +
|
||||
"descrizione_depo_dest TEXT NOT NULL, " +
|
||||
"created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
|
||||
"status INTEGER NOT NULL, " +
|
||||
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||
"remote_sync_date INTEGER);");
|
||||
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane__id ON trasferimento_pedane (_id);");
|
||||
|
||||
database.execSQL("CREATE TABLE IF NOT EXISTS trasferimento_pedane_rows (" +
|
||||
"parent_id INTEGER, " +
|
||||
"barcode_ul TEXT NOT NUll, " +
|
||||
"progressivo_ul INTEGER, " +
|
||||
"created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
|
||||
"flag_inconsistent INTEGER NOT NULL DEFAULT 0, " +
|
||||
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||
"remote_sync_date INTEGER," +
|
||||
"FOREIGN KEY(parent_id) REFERENCES trasferimento_pedane(_id) ON UPDATE NO ACTION ON DELETE CASCADE );");
|
||||
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows__id ON trasferimento_pedane_rows (_id)");
|
||||
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows_parent_id ON trasferimento_pedane_rows (parent_id)");
|
||||
}
|
||||
};
|
||||
|
||||
static final Migration MIGRATION_19_20 = new Migration(19, 20) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("DROP TABLE IF EXISTS trasferimento_pedane_rows;");
|
||||
database.execSQL("CREATE TABLE IF NOT EXISTS trasferimento_pedane_rows (" +
|
||||
"parent_id INTEGER NOT NULL, " +
|
||||
"barcode_ul TEXT NOT NULL, " +
|
||||
"progressivo_ul INTEGER NOT NULL, " +
|
||||
"flag_inconsistent INTEGER NOT NULL DEFAULT 0, " +
|
||||
"created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
|
||||
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||
"remote_sync_date INTEGER, " +
|
||||
"FOREIGN KEY(parent_id) REFERENCES trasferimento_pedane(_id) ON UPDATE NO ACTION ON DELETE CASCADE );");
|
||||
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows__id ON trasferimento_pedane_rows (_id)");
|
||||
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows_parent_id ON trasferimento_pedane_rows (parent_id)");
|
||||
}
|
||||
};
|
||||
|
||||
static final Migration MIGRATION_20_21 = new Migration(20, 21) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("ALTER TABLE trasferimento_pedane"
|
||||
+ " ADD COLUMN document_cod_anag TEXT;");
|
||||
|
||||
database.execSQL("ALTER TABLE trasferimento_pedane"
|
||||
+ " ADD COLUMN document_cod_dtip TEXT");
|
||||
|
||||
database.execSQL("ALTER TABLE trasferimento_pedane"
|
||||
+ " ADD COLUMN document_num INTEGER");
|
||||
|
||||
database.execSQL("ALTER TABLE trasferimento_pedane"
|
||||
+ " ADD COLUMN document_ser TEXT");
|
||||
|
||||
database.execSQL("ALTER TABLE trasferimento_pedane"
|
||||
+ " ADD COLUMN document_data INTEGER");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneRowDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
||||
@@ -141,6 +143,18 @@ public class RoomModule {
|
||||
return appDatabase.verificaGiacenzeRowDao();
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
TrasferimentoPedaneDao providesTrasferimentoPedaneDao(AppDatabase appDatabase) {
|
||||
return appDatabase.trasferimentoPedaneDao();
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
TrasferimentoPedaneRowDao providesTrasferimentoPedaneRowDao(AppDatabase appDatabase) {
|
||||
return appDatabase.trasferimentoPedaneRowDao();
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
VerificaGiacenzeMapper providesVerificaGiacenzeMapper(VerificaGiacenzeRowMapper verificaGiacenzeRowMapper) {
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Query;
|
||||
import androidx.room.Transaction;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.rxjava3.core.Flowable;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.TrasferimentoPedaneWithRowsWrapper;
|
||||
|
||||
@Dao
|
||||
public interface TrasferimentoPedaneDao extends EntityDaoInterface<TrasferimentoPedaneEntity> {
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
|
||||
" WHERE " + BaseSyncDTO.Columns.ID + " = :id")
|
||||
TrasferimentoPedaneWithRowsWrapper select(long id);
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
|
||||
" WHERE " + BaseSyncDTO.Columns.ID + " = :id")
|
||||
Flowable<TrasferimentoPedaneWithRowsWrapper> selectFlowable(long id);
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
|
||||
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
|
||||
" ORDER BY " + TrasferimentoPedaneEntity.Columns.CREATED_AT + " DESC")
|
||||
List<TrasferimentoPedaneWithRowsWrapper> selectAll(boolean toBeSync);
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
|
||||
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
|
||||
" ORDER BY " + TrasferimentoPedaneEntity.Columns.CREATED_AT + " DESC")
|
||||
Flowable<List<TrasferimentoPedaneWithRowsWrapper>> selectAllFlowable(boolean toBeSync);
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Query;
|
||||
import androidx.room.Transaction;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.rxjava3.core.Flowable;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
|
||||
|
||||
@Dao
|
||||
public interface TrasferimentoPedaneRowDao extends EntityDaoInterface<TrasferimentoPedaneRowEntity> {
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
|
||||
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
|
||||
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
|
||||
List<TrasferimentoPedaneRowEntity> selectAll(boolean toBeSync);
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
|
||||
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
|
||||
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
|
||||
Flowable<List<TrasferimentoPedaneRowEntity>> selectAllFlowable(boolean toBeSync);
|
||||
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
|
||||
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
|
||||
" AND " + TrasferimentoPedaneRowEntity.Columns.PARENT_ID + " = :trasferimentoId " +
|
||||
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
|
||||
List<TrasferimentoPedaneRowEntity> selectAll(long trasferimentoId, boolean toBeSync);
|
||||
|
||||
@Transaction
|
||||
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
|
||||
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
|
||||
" AND " + TrasferimentoPedaneRowEntity.Columns.PARENT_ID + " = :trasferimentoId " +
|
||||
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
|
||||
Flowable<List<TrasferimentoPedaneRowEntity>> selectAllFlowable(long trasferimentoId, boolean toBeSync);
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import android.provider.BaseColumns;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public abstract class BaseSyncDTO extends BaseRoomDTO {
|
||||
|
||||
@@ -21,7 +21,7 @@ public abstract class BaseSyncDTO extends BaseRoomDTO {
|
||||
private Long id;
|
||||
|
||||
@ColumnInfo(name = Columns.COLUMN_REMOTE_SYNC_DATE)
|
||||
private Date remoteSyncDate;
|
||||
private LocalDateTime remoteSyncDate;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
@@ -31,11 +31,11 @@ public abstract class BaseSyncDTO extends BaseRoomDTO {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Date getRemoteSyncDate() {
|
||||
public LocalDateTime getRemoteSyncDate() {
|
||||
return remoteSyncDate;
|
||||
}
|
||||
|
||||
public void setRemoteSyncDate(Date remoteSyncDate) {
|
||||
public void setRemoteSyncDate(LocalDateTime remoteSyncDate) {
|
||||
this.remoteSyncDate = remoteSyncDate;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.entity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.Ignore;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
|
||||
import it.integry.integrywmsnative.core.model.secondary.TrasferimentoPedaneStatusEnum;
|
||||
|
||||
@Entity(
|
||||
inheritSuperIndices = true,
|
||||
tableName = TrasferimentoPedaneEntity.TABLE_NAME
|
||||
)
|
||||
public class TrasferimentoPedaneEntity extends BaseSyncDTO implements EntityModelInterface {
|
||||
|
||||
public static final String TABLE_NAME = "trasferimento_pedane";
|
||||
|
||||
public static class Columns {
|
||||
public static final String COD_MDEP_DEST = "cod_mdep_dest";
|
||||
public static final String DESCRIZIONE_DEPO_DEST = "descrizione_depo_dest";
|
||||
public static final String STATUS = "status";
|
||||
public static final String DOCUMENT_COD_ANAG = "document_cod_anag";
|
||||
public static final String DOCUMENT_COD_DTIP = "document_cod_dtip";
|
||||
public static final String DOCUMENT_NUM = "document_num";
|
||||
public static final String DOCUMENT_SER = "document_ser";
|
||||
public static final String DOCUMENT_DATA = "document_data";
|
||||
|
||||
public static final String CREATED_AT = "created_at";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@ColumnInfo(name = TrasferimentoPedaneEntity.Columns.COD_MDEP_DEST)
|
||||
private String codMdepDest;
|
||||
|
||||
@NonNull
|
||||
@ColumnInfo(name = Columns.DESCRIZIONE_DEPO_DEST)
|
||||
private String descrizioneDepoDest;
|
||||
|
||||
@NonNull
|
||||
@ColumnInfo(name = Columns.STATUS)
|
||||
private short status = TrasferimentoPedaneStatusEnum.APERTO.getValue();
|
||||
|
||||
@ColumnInfo(name = Columns.DOCUMENT_COD_ANAG)
|
||||
private String documentCodAnag;
|
||||
|
||||
@ColumnInfo(name = Columns.DOCUMENT_COD_DTIP)
|
||||
private String documentCodDtip;
|
||||
|
||||
@ColumnInfo(name = Columns.DOCUMENT_NUM)
|
||||
private Integer documentNum;
|
||||
|
||||
@ColumnInfo(name = Columns.DOCUMENT_SER)
|
||||
private String documentSer;
|
||||
|
||||
@ColumnInfo(name = Columns.DOCUMENT_DATA)
|
||||
private LocalDate documentData;
|
||||
|
||||
@ColumnInfo(name = TrasferimentoPedaneEntity.Columns.CREATED_AT, defaultValue = "CURRENT_TIMESTAMP")
|
||||
private LocalDateTime createdAt = LocalDateTime.now();
|
||||
|
||||
@Ignore
|
||||
private List<TrasferimentoPedaneRowEntity> trasferimentoPedaneRowList;
|
||||
|
||||
@NonNull
|
||||
public String getCodMdepDest() {
|
||||
return codMdepDest;
|
||||
}
|
||||
|
||||
public void setCodMdepDest(@NonNull String codMdepDest) {
|
||||
this.codMdepDest = codMdepDest;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getDescrizioneDepoDest() {
|
||||
return descrizioneDepoDest;
|
||||
}
|
||||
|
||||
public void setDescrizioneDepoDest(@NonNull String descrizioneDepoDest) {
|
||||
this.descrizioneDepoDest = descrizioneDepoDest;
|
||||
}
|
||||
|
||||
public short getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(short status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getDocumentCodAnag() {
|
||||
return documentCodAnag;
|
||||
}
|
||||
|
||||
public void setDocumentCodAnag(String documentCodAnag) {
|
||||
this.documentCodAnag = documentCodAnag;
|
||||
}
|
||||
|
||||
public String getDocumentCodDtip() {
|
||||
return documentCodDtip;
|
||||
}
|
||||
|
||||
public void setDocumentCodDtip(String documentCodDtip) {
|
||||
this.documentCodDtip = documentCodDtip;
|
||||
}
|
||||
|
||||
public Integer getDocumentNum() {
|
||||
return documentNum;
|
||||
}
|
||||
|
||||
public void setDocumentNum(Integer documentNum) {
|
||||
this.documentNum = documentNum;
|
||||
}
|
||||
|
||||
public String getDocumentSer() {
|
||||
return documentSer;
|
||||
}
|
||||
|
||||
public void setDocumentSer(String documentSer) {
|
||||
this.documentSer = documentSer;
|
||||
}
|
||||
|
||||
public LocalDate getDocumentData() {
|
||||
return documentData;
|
||||
}
|
||||
|
||||
public void setDocumentData(LocalDate documentData) {
|
||||
this.documentData = documentData;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public List<TrasferimentoPedaneRowEntity> getTrasferimentoPedaneRowList() {
|
||||
return trasferimentoPedaneRowList;
|
||||
}
|
||||
|
||||
public void setTrasferimentoPedaneRowList(List<TrasferimentoPedaneRowEntity> trasferimentoPedaneRowList) {
|
||||
this.trasferimentoPedaneRowList = trasferimentoPedaneRowList;
|
||||
}
|
||||
|
||||
|
||||
@Ignore
|
||||
public TrasferimentoPedaneStatusEnum getStatusEnum() {
|
||||
return TrasferimentoPedaneStatusEnum.fromValue(getStatus());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.entity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.ForeignKey;
|
||||
import androidx.room.Ignore;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
|
||||
@Entity(
|
||||
inheritSuperIndices = true,
|
||||
tableName = TrasferimentoPedaneRowEntity.TABLE_NAME,
|
||||
foreignKeys = {
|
||||
@ForeignKey(
|
||||
entity = TrasferimentoPedaneEntity.class,
|
||||
parentColumns = {BaseSyncDTO.Columns.ID},
|
||||
childColumns = {TrasferimentoPedaneRowEntity.Columns.PARENT_ID},
|
||||
onDelete = ForeignKey.CASCADE
|
||||
)
|
||||
}
|
||||
)
|
||||
public class TrasferimentoPedaneRowEntity extends BaseSyncDTO implements EntityModelInterface, Cloneable {
|
||||
public static final String TABLE_NAME = "trasferimento_pedane_rows";
|
||||
|
||||
public static class Columns {
|
||||
public static final String PARENT_ID = "parent_id";
|
||||
public static final String CREATED_AT = "created_at";
|
||||
public static final String BARCODE_UL = "barcode_ul";
|
||||
public static final String PROGRESSIVO_UL = "progressivo_ul";
|
||||
public static final String FLAG_INCONSISTENT = "flag_inconsistent";
|
||||
// public static final String COD_MART = "cod_mart";
|
||||
// public static final String PARTITA_MAG = "partita_mag";
|
||||
// public static final String DESCRIZIONE = "descrizione";
|
||||
// public static final String QTA_IN_GIACENZA = "qta_in_giacenza";
|
||||
// public static final String QTA = "qta";
|
||||
// public static final String NUM_CNF = "num_cnf";
|
||||
// public static final String QTA_CNF = "qta_cnf";
|
||||
// public static final String SCAN_COD_BARRE = "scan_cod_barre";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@ColumnInfo(index = true, name = TrasferimentoPedaneRowEntity.Columns.PARENT_ID)
|
||||
private Long parentId;
|
||||
|
||||
@NonNull
|
||||
@ColumnInfo(name = Columns.BARCODE_UL)
|
||||
private String barcodeUl;
|
||||
|
||||
@NonNull
|
||||
@ColumnInfo(name = Columns.PROGRESSIVO_UL)
|
||||
private int progressivoUl;
|
||||
|
||||
@ColumnInfo(name = Columns.FLAG_INCONSISTENT, defaultValue = "0")
|
||||
private boolean flagInconsistent = false;
|
||||
|
||||
|
||||
@ColumnInfo(name = TrasferimentoPedaneRowEntity.Columns.CREATED_AT, defaultValue = "CURRENT_TIMESTAMP")
|
||||
private LocalDateTime createdAt = LocalDateTime.now();
|
||||
|
||||
|
||||
@Ignore
|
||||
private MtbColt detailMtbColt;
|
||||
|
||||
|
||||
public Long getParentId() {
|
||||
return parentId;
|
||||
}
|
||||
|
||||
public void setParentId(Long parentId) {
|
||||
this.parentId = parentId;
|
||||
}
|
||||
|
||||
public String getBarcodeUl() {
|
||||
return barcodeUl;
|
||||
}
|
||||
|
||||
public void setBarcodeUl(String barcodeUl) {
|
||||
this.barcodeUl = barcodeUl;
|
||||
}
|
||||
|
||||
public int getProgressivoUl() {
|
||||
return progressivoUl;
|
||||
}
|
||||
|
||||
public void setProgressivoUl(int progressivoUl) {
|
||||
this.progressivoUl = progressivoUl;
|
||||
}
|
||||
|
||||
|
||||
public boolean isFlagInconsistent() {
|
||||
return flagInconsistent;
|
||||
}
|
||||
|
||||
public void setFlagInconsistent(boolean flagInconsistent) {
|
||||
this.flagInconsistent = flagInconsistent;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
|
||||
public MtbColt getDetailMtbColt() {
|
||||
return detailMtbColt;
|
||||
}
|
||||
|
||||
public void setDetailMtbColt(MtbColt detailMtbColt) {
|
||||
this.detailMtbColt = detailMtbColt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
TrasferimentoPedaneRowEntity that = (TrasferimentoPedaneRowEntity) o;
|
||||
return getProgressivoUl() == that.getProgressivoUl() && isFlagInconsistent() == that.isFlagInconsistent() && Objects.equals(getParentId(), that.getParentId()) && Objects.equals(getBarcodeUl(), that.getBarcodeUl()) && Objects.equals(getCreatedAt(), that.getCreatedAt());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getParentId(), getBarcodeUl(), getProgressivoUl(), isFlagInconsistent(), getCreatedAt());
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import android.util.Log;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -92,7 +93,7 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioE
|
||||
|
||||
public void export(InventarioEntity inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
|
||||
remoteDataSource.makeInsertRequest(dataMapper.mapRoomToRest(inventarioDTO), () -> {
|
||||
inventarioDTO.setRemoteSyncDate(new Date());
|
||||
inventarioDTO.setRemoteSyncDate(LocalDateTime.now());
|
||||
|
||||
localDataSource.makeUpdateRequest(inventarioDTO, (ignored) -> {
|
||||
handler.post(onComplete);
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.respository_new;
|
||||
|
||||
import android.os.Handler;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.TrasferimentoPedaneLocalDataSource;
|
||||
import it.integry.integrywmsnative.core.mapper.TrasferimentoPedaneMapper;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.TrasferimentoPedaneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneDTO;
|
||||
|
||||
@Singleton
|
||||
public class TrasferimentoPedaneRepository extends _BaseRepository<TrasferimentoPedaneDTO, TrasferimentoPedaneEntity, TrasferimentoPedaneMapper, TrasferimentoPedaneLocalDataSource, TrasferimentoPedaneRESTConsumer> {
|
||||
|
||||
private final ExecutorService executorService;
|
||||
private final Handler handler;
|
||||
|
||||
@Inject
|
||||
public TrasferimentoPedaneRepository(TrasferimentoPedaneLocalDataSource localDataSource,
|
||||
TrasferimentoPedaneRESTConsumer remoteDataSource,
|
||||
TrasferimentoPedaneMapper dataMapper,
|
||||
Handler handler,
|
||||
ExecutorService executorService) {
|
||||
super(dataMapper, localDataSource, remoteDataSource);
|
||||
this.handler = handler;
|
||||
this.executorService = executorService;
|
||||
}
|
||||
|
||||
|
||||
public LiveData<TrasferimentoPedaneEntity> retrieveLive(long id) {
|
||||
MutableLiveData<TrasferimentoPedaneEntity> internalLiveData = new MutableLiveData<>();
|
||||
|
||||
localDataSource.makeRetrieveRequest(id)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(internalLiveData::postValue);
|
||||
|
||||
return internalLiveData;
|
||||
}
|
||||
|
||||
|
||||
public TrasferimentoPedaneEntity retrieve(long id) {
|
||||
return localDataSource.makeSynchronousRetrieveRequest(id);
|
||||
}
|
||||
|
||||
|
||||
public LiveData<List<TrasferimentoPedaneEntity>> retrieveLive() {
|
||||
MutableLiveData<List<TrasferimentoPedaneEntity>> internalLiveData = new MutableLiveData<>();
|
||||
|
||||
localDataSource.makeSynchronousRetrieveAllLive(false)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(internalLiveData::postValue);
|
||||
|
||||
return internalLiveData;
|
||||
}
|
||||
|
||||
public long insert(String codMdepDest, String descrizioneDepoDest) {
|
||||
var trasferimentoPedane = new TrasferimentoPedaneEntity();
|
||||
trasferimentoPedane.setCodMdepDest(codMdepDest);
|
||||
trasferimentoPedane.setDescrizioneDepoDest(descrizioneDepoDest);
|
||||
localDataSource.makeSynchronousInsertRequest(trasferimentoPedane);
|
||||
|
||||
return trasferimentoPedane.getId();
|
||||
}
|
||||
|
||||
public void updateSynchronized(TrasferimentoPedaneEntity entity) {
|
||||
localDataSource.makeSynchronousUpdateRequest(entity);
|
||||
}
|
||||
|
||||
public void deleteSynchronized(TrasferimentoPedaneEntity entity) {
|
||||
localDataSource.makeSynchronousDeleteRequest(entity);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.respository_new;
|
||||
|
||||
import android.os.Handler;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.TrasferimentoPedaneRowsLocalDataSource;
|
||||
import it.integry.integrywmsnative.core.mapper.TrasferimentoPedaneRowMapper;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.TrasferimentoPedaneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneRowDTO;
|
||||
|
||||
@Singleton
|
||||
public class TrasferimentoPedaneRowRepository extends _BaseRepository<TrasferimentoPedaneRowDTO, TrasferimentoPedaneRowEntity, TrasferimentoPedaneRowMapper, TrasferimentoPedaneRowsLocalDataSource, TrasferimentoPedaneRESTConsumer> {
|
||||
|
||||
private final ExecutorService executorService;
|
||||
private final Handler handler;
|
||||
|
||||
@Inject
|
||||
public TrasferimentoPedaneRowRepository(TrasferimentoPedaneRowsLocalDataSource localDataSource,
|
||||
TrasferimentoPedaneRESTConsumer remoteDataSource,
|
||||
TrasferimentoPedaneRowMapper dataMapper,
|
||||
Handler handler,
|
||||
ExecutorService executorService) {
|
||||
super(dataMapper, localDataSource, remoteDataSource);
|
||||
this.handler = handler;
|
||||
this.executorService = executorService;
|
||||
}
|
||||
|
||||
|
||||
public LiveData<List<TrasferimentoPedaneRowEntity>> retrieve(long trasferimentoPedaneId) {
|
||||
MutableLiveData<List<TrasferimentoPedaneRowEntity>> internalLiveData = new MutableLiveData<>();
|
||||
|
||||
localDataSource.makeSynchronousRetrieveAllLive(trasferimentoPedaneId, false)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(internalLiveData::postValue);
|
||||
|
||||
return internalLiveData;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public TrasferimentoPedaneRowEntity insertSynchronized(long parentId, String barcodeUl, int progressivoUl) {
|
||||
TrasferimentoPedaneRowEntity entity = new TrasferimentoPedaneRowEntity() {{
|
||||
setParentId(parentId);
|
||||
setBarcodeUl(barcodeUl);
|
||||
setProgressivoUl(progressivoUl);
|
||||
}};
|
||||
localDataSource.makeSynchronousInsertRequest(entity);
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
public void updateSynchronized(TrasferimentoPedaneRowEntity entity) {
|
||||
localDataSource.makeSynchronousUpdateRequest(entity);
|
||||
}
|
||||
|
||||
public void updateAllSynchronized(List<TrasferimentoPedaneRowEntity> entities) {
|
||||
localDataSource.makeSynchronousUpdateAllRequest(entities);
|
||||
}
|
||||
|
||||
public void deleteSynchronized(TrasferimentoPedaneRowEntity entity) {
|
||||
localDataSource.makeSynchronousDeleteRequest(entity);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import io.reactivex.rxjava3.core.Flowable;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.TrasferimentoPedaneWithRowsWrapper;
|
||||
|
||||
@Singleton
|
||||
public class TrasferimentoPedaneLocalDataSource extends _BaseRoomDataSource<TrasferimentoPedaneEntity, TrasferimentoPedaneDao> {
|
||||
|
||||
@Inject
|
||||
public TrasferimentoPedaneLocalDataSource(ExecutorService executorService, TrasferimentoPedaneDao entityDao) {
|
||||
super(executorService, entityDao, TrasferimentoPedaneEntity.TABLE_NAME);
|
||||
}
|
||||
|
||||
public Flowable<TrasferimentoPedaneEntity> makeRetrieveRequest(long id) {
|
||||
var data = entityDao
|
||||
.selectFlowable(id);
|
||||
|
||||
return data.map(x -> x.trasferimentoPedane);
|
||||
}
|
||||
|
||||
public TrasferimentoPedaneEntity makeSynchronousRetrieveRequest(long id) {
|
||||
var data = entityDao
|
||||
.select(id);
|
||||
|
||||
return data.trasferimentoPedane;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TrasferimentoPedaneEntity> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
|
||||
var data = entityDao
|
||||
.selectAll(onlyToBeSync);
|
||||
|
||||
return data.stream()
|
||||
.map(x -> {
|
||||
x.trasferimentoPedane.setTrasferimentoPedaneRowList(x.rowList);
|
||||
return x.trasferimentoPedane;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flowable<List<TrasferimentoPedaneEntity>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
|
||||
Flowable<List<TrasferimentoPedaneWithRowsWrapper>> listFlowable = entityDao
|
||||
.selectAllFlowable(onlyToBeSync);
|
||||
|
||||
return listFlowable.map(x ->
|
||||
x.stream()
|
||||
.map(y -> {
|
||||
y.trasferimentoPedane.setTrasferimentoPedaneRowList(y.rowList);
|
||||
return y.trasferimentoPedane;
|
||||
})
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import io.reactivex.rxjava3.core.Flowable;
|
||||
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneRowDao;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
|
||||
|
||||
@Singleton
|
||||
public class TrasferimentoPedaneRowsLocalDataSource extends _BaseRoomDataSource<TrasferimentoPedaneRowEntity, TrasferimentoPedaneRowDao> {
|
||||
|
||||
@Inject
|
||||
public TrasferimentoPedaneRowsLocalDataSource(ExecutorService executorService, TrasferimentoPedaneRowDao entityDao) {
|
||||
super(executorService, entityDao, TrasferimentoPedaneRowEntity.TABLE_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TrasferimentoPedaneRowEntity> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
|
||||
var data = entityDao
|
||||
.selectAll(onlyToBeSync);
|
||||
|
||||
return data.stream()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flowable<List<TrasferimentoPedaneRowEntity>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
|
||||
Flowable<List<TrasferimentoPedaneRowEntity>> listFlowable = entityDao
|
||||
.selectAllFlowable(onlyToBeSync);
|
||||
|
||||
return listFlowable.map(x ->
|
||||
x.stream()
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
}
|
||||
|
||||
public List<TrasferimentoPedaneRowEntity> makeSynchronousRetrieveAllRequest(long parentId, boolean onlyToBeSync) {
|
||||
var data = entityDao
|
||||
.selectAll(parentId, onlyToBeSync);
|
||||
|
||||
return data.stream()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public Flowable<List<TrasferimentoPedaneRowEntity>> makeSynchronousRetrieveAllLive(long parentId, boolean onlyToBeSync) {
|
||||
Flowable<List<TrasferimentoPedaneRowEntity>> listFlowable = entityDao
|
||||
.selectAllFlowable(parentId, onlyToBeSync);
|
||||
|
||||
return listFlowable.map(x ->
|
||||
x.stream()
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.wrappers;
|
||||
|
||||
import androidx.room.DatabaseView;
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Relation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
|
||||
|
||||
@DatabaseView
|
||||
public class TrasferimentoPedaneWithRowsWrapper {
|
||||
|
||||
@Embedded
|
||||
public TrasferimentoPedaneEntity trasferimentoPedane;
|
||||
|
||||
@Relation(
|
||||
parentColumn = BaseSyncDTO.Columns.ID,
|
||||
entityColumn = TrasferimentoPedaneRowEntity.Columns.PARENT_ID
|
||||
)
|
||||
public List<TrasferimentoPedaneRowEntity> rowList;
|
||||
|
||||
}
|
||||
@@ -4,9 +4,6 @@ import androidx.databinding.BaseObservable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
|
||||
public class BindableFloat extends BaseObservable {
|
||||
private Float value;
|
||||
|
||||
@@ -15,10 +12,6 @@ public class BindableFloat extends BaseObservable {
|
||||
}
|
||||
|
||||
public BigDecimal getBigDecimal() {
|
||||
int numberOfDigits = UtilityNumber.countNumberOfDecimalDigits(get());
|
||||
|
||||
if(numberOfDigits > CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS) numberOfDigits = CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS;
|
||||
|
||||
return BigDecimal.valueOf(get());
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.appcompat.widget.AppCompatCheckBox;
|
||||
@@ -24,6 +25,11 @@ import androidx.databinding.BindingAdapter;
|
||||
import androidx.databinding.BindingConversion;
|
||||
import androidx.databinding.Observable;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewTreeLifecycleOwner;
|
||||
|
||||
import com.google.android.material.datepicker.MaterialDatePicker;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
@@ -33,14 +39,17 @@ import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.utility.LocaleDecimalKeyListener;
|
||||
import it.integry.integrywmsnative.core.helper.ContextHelper;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
@@ -257,7 +266,7 @@ public class Converters {
|
||||
BigDecimal value = null;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(s.toString()))
|
||||
value = new BigDecimal(s.toString());
|
||||
value = UtilityNumber.parseBigDecimal(s.toString(), Locale.getDefault());
|
||||
|
||||
observableBigDecimal.set(value);
|
||||
}
|
||||
@@ -267,7 +276,7 @@ public class Converters {
|
||||
}
|
||||
|
||||
BigDecimal newValue = observableBigDecimal.get();
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? new BigDecimal(view.getText().toString()) : null;
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
|
||||
|
||||
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
||||
view.setText(UtilityNumber.decimalToString(newValue));
|
||||
@@ -288,7 +297,7 @@ public class Converters {
|
||||
String newValueString = s.toString().trim();
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(newValueString))
|
||||
value = new BigDecimal(newValueString);
|
||||
value = UtilityNumber.parseBigDecimal(newValueString, Locale.getDefault());
|
||||
|
||||
observableBigDecimal.set(value);
|
||||
}
|
||||
@@ -297,7 +306,7 @@ public class Converters {
|
||||
view.addTextChangedListener(watcher);
|
||||
}
|
||||
BigDecimal newValue = observableBigDecimal.get();
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? new BigDecimal(view.getText().toString()) : null;
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
|
||||
|
||||
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
||||
view.setText(UtilityNumber.decimalToString(newValue));
|
||||
@@ -318,7 +327,7 @@ public class Converters {
|
||||
String newValueString = s.toString().trim();
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(newValueString))
|
||||
value = new BigDecimal(newValueString);
|
||||
value = UtilityNumber.parseBigDecimal(newValueString, Locale.getDefault());
|
||||
|
||||
observableBigDecimal.set(value);
|
||||
}
|
||||
@@ -327,7 +336,7 @@ public class Converters {
|
||||
view.addTextChangedListener(watcher);
|
||||
}
|
||||
BigDecimal newValue = observableBigDecimal.get();
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? new BigDecimal(view.getText().toString()) : null;
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
|
||||
|
||||
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
||||
view.setText(UtilityNumber.decimalToString(newValue));
|
||||
@@ -346,7 +355,8 @@ public class Converters {
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
BigDecimal value = null;
|
||||
if (!UtilityString.isNullOrEmpty(s.toString()))
|
||||
value = new BigDecimal(s.toString());
|
||||
value = UtilityNumber.parseBigDecimal(s.toString(), Locale.getDefault());
|
||||
|
||||
bindableBigDecimal.set(value);
|
||||
}
|
||||
};
|
||||
@@ -354,7 +364,7 @@ public class Converters {
|
||||
view.addTextChangedListener(watcher);
|
||||
}
|
||||
BigDecimal newValue = bindableBigDecimal.get();
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? new BigDecimal(view.getText().toString()) : null;
|
||||
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
|
||||
|
||||
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
||||
view.setText(UtilityNumber.decimalToString(newValue));
|
||||
@@ -466,8 +476,9 @@ public class Converters {
|
||||
}
|
||||
}
|
||||
|
||||
@BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false)
|
||||
public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) {
|
||||
|
||||
@BindingAdapter(value = {"binding", "warningOnOldDates"}, requireAll = false)
|
||||
public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate, boolean warningOnOldDates) {
|
||||
Pair<ObservableField<Date>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||
if (pair == null || pair.first != observableDate) {
|
||||
if (pair != null) {
|
||||
@@ -502,15 +513,15 @@ public class Converters {
|
||||
var calendar = UtilityDate.getCalendarInstance();
|
||||
calendar.setTimeInMillis(timeInMillis);
|
||||
|
||||
if (parentFragment != null && warningOnOldDates && calendar.before(UtilityDate.getCalendarInstance())) {
|
||||
if (warningOnOldDates && calendar.before(UtilityDate.getCalendarInstance())) {
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
|
||||
.makeWarningDialog(view.getContext(), new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
|
||||
view.setText(UtilityDate.formatDate(calendar.getTime(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
observableDate.set(calendar.getTime());
|
||||
}, () -> {
|
||||
|
||||
})
|
||||
.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
|
||||
.show();
|
||||
} else {
|
||||
view.setText(UtilityDate.formatDate(calendar.getTime(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
observableDate.set(calendar.getTime());
|
||||
@@ -522,7 +533,7 @@ public class Converters {
|
||||
}
|
||||
});
|
||||
|
||||
datePicker.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
|
||||
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "tag");
|
||||
};
|
||||
|
||||
//Adding click-listener
|
||||
@@ -536,8 +547,126 @@ public class Converters {
|
||||
view.setText(UtilityDate.formatDate(newValue, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
}
|
||||
|
||||
@BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false)
|
||||
public static void bindEditTextDate(EditText view, final ObservableField<LocalDate> observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) {
|
||||
|
||||
@BindingAdapter(value = {"binding", "warningOnOldDates"}, requireAll = false)
|
||||
public static void bindTextInputEditTextDate(TextInputEditText view, final MutableLiveData<Date> liveDataDate, boolean warningOnOldDates) {
|
||||
// Ottieni il LifecycleOwner dalla view
|
||||
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
|
||||
if (lifecycleOwner == null) {
|
||||
// Non è possibile osservare LiveData senza un LifecycleOwner
|
||||
// Potresti loggare un errore o gestire questo caso come preferisci
|
||||
Log.e("BindingAdapters", "LifecycleOwner not found for view " + view.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
// Rimuovi eventuali TextWatcher o listener precedenti per evitare duplicazioni
|
||||
// Questo è importante se il BindingAdapter viene chiamato più volte per la stessa view
|
||||
Object oldTag = view.getTag(R.id.bound_observable_date_listener);
|
||||
if (oldTag instanceof TextWatcherAdapter) {
|
||||
view.removeTextChangedListener((TextWatcherAdapter) oldTag);
|
||||
}
|
||||
Object oldLiveDataTag = view.getTag(R.id.bound_observable_date_livedata);
|
||||
if (oldLiveDataTag instanceof MutableLiveData) {
|
||||
// Se c'era un observer precedente su un altro LiveData, rimuovilo
|
||||
// Questo scenario è meno comune ma è bene gestirlo
|
||||
Observer<Date> existingObserver = (Observer<Date>) view.getTag(R.id.bound_observable_date_observer);
|
||||
if (existingObserver != null) {
|
||||
((MutableLiveData<Date>) oldLiveDataTag).removeObserver(existingObserver);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Imposta il listener per il click per aprire il DatePicker
|
||||
RunnableArgs<View> onClick = v -> {
|
||||
Calendar c = UtilityDate.getCalendarInstance();
|
||||
if (liveDataDate.getValue() != null) {
|
||||
c.setTime(liveDataDate.getValue());
|
||||
}
|
||||
|
||||
MaterialDatePicker<Long> datePicker =
|
||||
MaterialDatePicker.Builder.datePicker()
|
||||
.setSelection(c.getTimeInMillis())
|
||||
.build();
|
||||
|
||||
datePicker.addOnPositiveButtonClickListener(selection -> {
|
||||
Calendar calendar = UtilityDate.getCalendarInstance();
|
||||
calendar.setTimeInMillis(selection);
|
||||
Date selectedDate = calendar.getTime();
|
||||
|
||||
if (warningOnOldDates && calendar.before(UtilityDate.getCalendarInstance())) {
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(view.getContext(), new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
|
||||
liveDataDate.postValue(selectedDate);
|
||||
}, () -> {
|
||||
// Non fare nulla se l'utente annulla
|
||||
})
|
||||
.show();
|
||||
} else {
|
||||
liveDataDate.postValue(selectedDate);
|
||||
}
|
||||
});
|
||||
datePicker.addOnNegativeButtonClickListener(dialog -> {
|
||||
// Utente ha annullato, potresti voler resettare o non fare nulla
|
||||
});
|
||||
datePicker.addOnCancelListener(dialog -> {
|
||||
// Utente ha cancellato (es. premendo back), potresti voler resettare o non fare nulla
|
||||
});
|
||||
|
||||
|
||||
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "MaterialDatePicker");
|
||||
};
|
||||
|
||||
view.setOnClickListener(onClick::run);
|
||||
if (view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
|
||||
((FrameLayout) view.getParent()).setOnClickListener(onClick::run);
|
||||
((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run);
|
||||
}
|
||||
|
||||
// Osserva il LiveData per aggiornare la view quando il valore cambia
|
||||
Observer<Date> dateObserver = date -> {
|
||||
String formattedDate = UtilityDate.formatDate(date, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN);
|
||||
if (!view.getText().toString().equals(formattedDate)) {
|
||||
view.setText(formattedDate);
|
||||
}
|
||||
};
|
||||
|
||||
// Rimuovi l'observer precedente se stiamo ri-bindando allo stesso LiveData
|
||||
Observer<Date> existingObserver = (Observer<Date>) view.getTag(R.id.bound_observable_date_observer);
|
||||
if (view.getTag(R.id.bound_observable_date_livedata) == liveDataDate && existingObserver != null) {
|
||||
liveDataDate.removeObserver(existingObserver);
|
||||
}
|
||||
|
||||
liveDataDate.observe(lifecycleOwner, dateObserver);
|
||||
|
||||
// Salva il LiveData e l'observer nel tag per poterli rimuovere in futuro se necessario
|
||||
view.setTag(R.id.bound_observable_date_livedata, liveDataDate);
|
||||
view.setTag(R.id.bound_observable_date_observer, dateObserver);
|
||||
|
||||
// Imposta il valore iniziale
|
||||
Date initialDate = liveDataDate.getValue();
|
||||
view.setText(UtilityDate.formatDate(initialDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
// Aggiungi un TextWatcher fittizio se necessario per coerenza con altri binding,
|
||||
// ma in questo caso il LiveData guida l'aggiornamento.
|
||||
// Se non hai bisogno di reagire ai cambiamenti di testo *dalla view al LiveData*
|
||||
// (perché il DatePicker lo fa già), questo TextWatcher potrebbe non essere strettamente necessario.
|
||||
// Tuttavia, per mantenere la struttura simile agli altri, lo includiamo.
|
||||
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
// Normalmente qui si aggiornerebbe il LiveData,
|
||||
// ma il DatePicker gestisce l'aggiornamento.
|
||||
// Potresti aggiungere logica qui se l'utente può modificare il testo direttamente
|
||||
// e vuoi che ciò si rifletta nel LiveData (richiederebbe parsing della data).
|
||||
}
|
||||
};
|
||||
view.setTag(R.id.bound_observable_date_listener, watcher); // Salva il watcher nel tag
|
||||
// view.addTextChangedListener(watcher); // Aggiungi solo se necessario
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter(value = {"binding", "warningOnOldDates"}, requireAll = false)
|
||||
public static void bindEditTextDate(EditText view, final ObservableField<LocalDate> observableDate, boolean warningOnOldDates) {
|
||||
Pair<ObservableField<LocalDate>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||
if (pair == null || pair.first != observableDate) {
|
||||
if (pair != null) {
|
||||
@@ -568,15 +697,15 @@ public class Converters {
|
||||
var nowTime = UtilityDate.millisTimeToLocalDate(selectedTimeInMillis, null);
|
||||
|
||||
|
||||
if (parentFragment != null && warningOnOldDates && nowTime.isBefore(UtilityDate.getNow())) {
|
||||
if (warningOnOldDates && nowTime.isBefore(UtilityDate.getNow())) {
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
|
||||
.makeWarningDialog(view.getContext(), new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
|
||||
view.setText(UtilityDate.formatDate(nowTime, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
observableDate.set(nowTime);
|
||||
}, () -> {
|
||||
|
||||
})
|
||||
.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
|
||||
.show();
|
||||
} else {
|
||||
view.setText(UtilityDate.formatDate(nowTime, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
observableDate.set(nowTime);
|
||||
@@ -588,7 +717,7 @@ public class Converters {
|
||||
}
|
||||
});
|
||||
|
||||
datePicker.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
|
||||
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "tag");
|
||||
};
|
||||
|
||||
//Adding click-listener
|
||||
@@ -602,6 +731,67 @@ public class Converters {
|
||||
view.setText(UtilityDate.formatDate(newValue, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
}
|
||||
|
||||
@BindingAdapter("binding")
|
||||
public static void bindAutoCompleteTextView(AutoCompleteTextView view, final MutableLiveData<String> liveDataString) {
|
||||
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
|
||||
if (lifecycleOwner == null) {
|
||||
Log.e("BindingAdapters", "LifecycleOwner not found for view " + view.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
// Rimuovi TextWatcher precedente
|
||||
Object oldWatcherTag = view.getTag(R.id.bound_observable_actv_watcher);
|
||||
if (oldWatcherTag instanceof TextWatcherAdapter) {
|
||||
view.removeTextChangedListener((TextWatcherAdapter) oldWatcherTag);
|
||||
}
|
||||
|
||||
// Rimuovi Observer precedente se il LiveData è cambiato
|
||||
Object oldLiveDataTag = view.getTag(R.id.bound_observable_actv_livedata);
|
||||
if (oldLiveDataTag instanceof MutableLiveData && oldLiveDataTag != liveDataString) {
|
||||
Observer<String> existingObserver = (Observer<String>) view.getTag(R.id.bound_observable_actv_observer);
|
||||
if (existingObserver != null) {
|
||||
((MutableLiveData<String>) oldLiveDataTag).removeObserver(existingObserver);
|
||||
}
|
||||
}
|
||||
|
||||
// TextWatcher per aggiornare il LiveData quando il testo cambia nella View
|
||||
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
if (liveDataString.getValue() == null || !liveDataString.getValue().equals(s.toString())) {
|
||||
liveDataString.setValue(s.toString());
|
||||
}
|
||||
}
|
||||
};
|
||||
view.addTextChangedListener(watcher);
|
||||
view.setTag(R.id.bound_observable_actv_watcher, watcher);
|
||||
|
||||
// Observer per aggiornare la View quando il LiveData cambia
|
||||
Observer<String> observer = newValue -> {
|
||||
if (!view.getText().toString().equals(newValue)) {
|
||||
view.setText(newValue, false); // Il 'false' evita di far scattare il dropdown
|
||||
}
|
||||
};
|
||||
|
||||
// Rimuovi l'observer precedente se stiamo ri-bindando allo stesso LiveData
|
||||
Observer<String> existingObserver = (Observer<String>) view.getTag(R.id.bound_observable_actv_observer);
|
||||
if (view.getTag(R.id.bound_observable_actv_livedata) == liveDataString && existingObserver != null) {
|
||||
liveDataString.removeObserver(existingObserver);
|
||||
}
|
||||
|
||||
liveDataString.observe(lifecycleOwner, observer);
|
||||
|
||||
// Salva il LiveData e l'observer nel tag
|
||||
view.setTag(R.id.bound_observable_actv_livedata, liveDataString);
|
||||
view.setTag(R.id.bound_observable_actv_observer, observer);
|
||||
|
||||
// Imposta il valore iniziale
|
||||
String initialValue = liveDataString.getValue();
|
||||
if (initialValue != null && !view.getText().toString().equals(initialValue)) {
|
||||
view.setText(initialValue);
|
||||
}
|
||||
}
|
||||
|
||||
@BindingAdapter("binding")
|
||||
public static void bindAutoCompleteTextView(AutoCompleteTextView view, final BindableString bindableString) {
|
||||
Pair<BindableString, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||
@@ -813,6 +1003,45 @@ public class Converters {
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter("visibility")
|
||||
public static void bindViewVisibility(View view, final LiveData<Boolean> liveDataBoolean) {
|
||||
if (liveDataBoolean == null) {
|
||||
return;
|
||||
}
|
||||
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
|
||||
if (lifecycleOwner == null) {
|
||||
Log.e("Converters", "Cannot find LifecycleOwner for view " + view);
|
||||
return;
|
||||
}
|
||||
|
||||
Observer<Boolean> observer = isVisible -> {
|
||||
if (isVisible != null) {
|
||||
view.setVisibility(isVisible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
};
|
||||
|
||||
// Rimuovi l'observer precedente se il LiveData è cambiato
|
||||
Object oldTag = view.getTag(R.id.bound_observable_visibility);
|
||||
if (oldTag instanceof Pair) {
|
||||
Pair<LiveData<Boolean>, Observer<Boolean>> pair = (Pair<LiveData<Boolean>, Observer<Boolean>>) oldTag;
|
||||
if (pair.first != liveDataBoolean) {
|
||||
pair.first.removeObserver(pair.second);
|
||||
}
|
||||
}
|
||||
|
||||
liveDataBoolean.observe(lifecycleOwner, observer);
|
||||
view.setTag(R.id.bound_observable_visibility, new Pair<>(liveDataBoolean, observer));
|
||||
|
||||
// Imposta il valore iniziale
|
||||
Boolean initialValue = liveDataBoolean.getValue();
|
||||
if (initialValue != null) {
|
||||
view.setVisibility(initialValue ? View.VISIBLE : View.GONE);
|
||||
} else {
|
||||
view.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter("visibility")
|
||||
public static void bindViewVisibility(View view, boolean bool) {
|
||||
view.setVisibility(bool ? View.VISIBLE : View.GONE);
|
||||
@@ -820,11 +1049,11 @@ public class Converters {
|
||||
|
||||
|
||||
@BindingAdapter("visibilityWhenNotNull")
|
||||
public static void bindViewVisibilityWhenNotNull(View view, ObservableField<?> bindableObject) {
|
||||
public static void bindViewVisibilityObservableFieldWhenNotNull(View view, ObservableField<?> bindableObject) {
|
||||
if(bindableObject == null) return;
|
||||
|
||||
if (view.getTag(R.id.bound_observable) != bindableObject) {
|
||||
view.setTag(R.id.bound_observable, bindableObject);
|
||||
if (view.getTag(R.id.bound_observable_visibility) != bindableObject) {
|
||||
view.setTag(R.id.bound_observable_visibility, bindableObject);
|
||||
}
|
||||
|
||||
bindableObject.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
||||
@@ -838,6 +1067,36 @@ public class Converters {
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter("visibilityWhenNotNull")
|
||||
public static void bindViewVisibilityLiveDataWhenNotNull(View view, LiveData<?> liveData) {
|
||||
// Se il LiveData è null, nascondi la view e esci
|
||||
if (liveData == null) {
|
||||
view.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Ottieni il LifecycleOwner dalla view
|
||||
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
|
||||
if (lifecycleOwner == null) return;
|
||||
|
||||
// Rimuovi eventuali observer precedenti
|
||||
Observer<Object> oldObserver = (Observer<Object>) view.getTag(R.id.bound_observable_visibility);
|
||||
if (oldObserver != null) {
|
||||
liveData.removeObserver(oldObserver);
|
||||
}
|
||||
|
||||
// Crea e registra il nuovo observer
|
||||
Observer<Object> newObserver = value ->
|
||||
view.setVisibility(value == null ? View.GONE : View.VISIBLE);
|
||||
|
||||
liveData.observe(lifecycleOwner, newObserver);
|
||||
view.setTag(R.id.bound_observable_visibility, newObserver);
|
||||
|
||||
// Imposta lo stato iniziale
|
||||
view.setVisibility(liveData.getValue() == null ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter("visibilityWhenNotNull")
|
||||
public static void bindViewVisibilityWhenNotNull(View view, Object genericObject) {
|
||||
view.setVisibility(genericObject == null ? View.GONE : View.VISIBLE);
|
||||
@@ -845,7 +1104,7 @@ public class Converters {
|
||||
|
||||
|
||||
@BindingAdapter("visibilityWhenNull")
|
||||
public static void bindViewVisibilityWhenNull(View view, ObservableField<?> bindableObject) {
|
||||
public static void bindViewVisibilityObservableFieldWhenNull(View view, ObservableField<?> bindableObject) {
|
||||
|
||||
if (view.getTag(R.id.bound_observable_visibility) != bindableObject) {
|
||||
view.setTag(R.id.bound_observable_visibility, bindableObject);
|
||||
@@ -864,6 +1123,36 @@ public class Converters {
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter("visibilityWhenNull")
|
||||
public static void bindViewVisibilityLiveDataWhenNull(View view, LiveData<?> liveData) {
|
||||
// Se il LiveData è null, nascondi la view e esci
|
||||
if (liveData == null) {
|
||||
view.setVisibility(View.VISIBLE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Ottieni il LifecycleOwner dalla view
|
||||
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
|
||||
if (lifecycleOwner == null) return;
|
||||
|
||||
// Rimuovi eventuali observer precedenti
|
||||
Observer<Object> oldObserver = (Observer<Object>) view.getTag(R.id.bound_observable_visibility);
|
||||
if (oldObserver != null) {
|
||||
liveData.removeObserver(oldObserver);
|
||||
}
|
||||
|
||||
// Crea e registra il nuovo observer
|
||||
Observer<Object> newObserver = value ->
|
||||
view.setVisibility(value == null ? View.VISIBLE : View.GONE);
|
||||
|
||||
liveData.observe(lifecycleOwner, newObserver);
|
||||
view.setTag(R.id.bound_observable_visibility, newObserver);
|
||||
|
||||
// Imposta lo stato iniziale
|
||||
view.setVisibility(liveData.getValue() == null ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter({"reverse_visibility"})
|
||||
public static void bindViewReverseVisibility(View view, final BindableBoolean bindableBoolean) {
|
||||
if (view.getTag(R.id.bound_reverse_visibility) != bindableBoolean) {
|
||||
@@ -910,4 +1199,64 @@ public class Converters {
|
||||
view.setLayoutParams(layoutParams);
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* BindingAdapter per bindare una LocalDate diretta su una TextView con un formato specificato.
|
||||
* Esempio di utilizzo in XML:
|
||||
* app:localDateText="@{myLocalDate}" app:dateFormat="@{@string/my_date_format}"
|
||||
*/
|
||||
@BindingAdapter(value = {"localDateText", "dateFormat"}, requireAll = false)
|
||||
public static void bindLocalDateText(TextView view, LocalDate date, String dateFormat) {
|
||||
if (date == null) {
|
||||
view.setText("");
|
||||
return;
|
||||
}
|
||||
String pattern = dateFormat != null ? dateFormat : "dd/MM/yyyy";
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
|
||||
view.setText(date.format(formatter));
|
||||
}
|
||||
|
||||
@BindingAdapter(value = {"localDateTimeText", "dateFormat"}, requireAll = false)
|
||||
public static void bindLocalDateText(TextView view, LocalDateTime date, String dateFormat) {
|
||||
if (date == null) {
|
||||
view.setText("");
|
||||
return;
|
||||
}
|
||||
String pattern = dateFormat != null ? dateFormat : "dd/MM/yyyy hh:mm";
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
|
||||
view.setText(date.format(formatter));
|
||||
}
|
||||
|
||||
/**
|
||||
* BindingAdapter per bindare una ObservableField<LocalDate> su una TextView con un formato specificato.
|
||||
* Esempio di utilizzo in XML:
|
||||
* app:localDateObservableText="@{myObservableLocalDate}" app:dateFormat="@{@string/my_date_format}"
|
||||
*/
|
||||
@BindingAdapter(value = {"localDateObservableText", "dateFormat"}, requireAll = false)
|
||||
public static void bindObservableLocalDateText(TextView view, ObservableField<LocalDate> observableDate, String dateFormat) {
|
||||
if (observableDate == null) {
|
||||
view.setText("");
|
||||
return;
|
||||
}
|
||||
LocalDate date = observableDate.get();
|
||||
if (date == null) {
|
||||
view.setText("");
|
||||
return;
|
||||
}
|
||||
String pattern = dateFormat != null ? dateFormat : "dd/MM/yyyy";
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
|
||||
view.setText(date.format(formatter));
|
||||
}
|
||||
|
||||
/**
|
||||
* BindingAdapter che applica automaticamente il KeyListener localizzato
|
||||
* ai campi con inputType numberDecimal, permettendo l'uso della virgola
|
||||
* come separatore decimale in base al locale del dispositivo.
|
||||
*/
|
||||
@BindingAdapter("useLocaleDecimalInput")
|
||||
public static void setLocaleDecimalInput(EditText view, boolean useLocaleInput) {
|
||||
if (useLocaleInput) {
|
||||
view.setKeyListener(LocaleDecimalKeyListener.getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
package it.integry.integrywmsnative.core.di;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class MutableListLiveData<T> extends MutableLiveData<List<T>> {
|
||||
|
||||
public MutableListLiveData() {
|
||||
super(new ArrayList<>());
|
||||
}
|
||||
|
||||
public MutableListLiveData(List<T> initialValue) {
|
||||
super(initialValue);
|
||||
}
|
||||
|
||||
public void add(T item, boolean immediateSet) {
|
||||
List<T> current = getValue();
|
||||
List<T> newList = new ArrayList<>(current);
|
||||
newList.add(item);
|
||||
|
||||
if(immediateSet)
|
||||
setValue(newList);
|
||||
else postValue(newList);
|
||||
}
|
||||
|
||||
public void add(T item) {
|
||||
add(item, false);
|
||||
}
|
||||
|
||||
public void add(int index, T item, boolean immediateSet) {
|
||||
List<T> current = getValue();
|
||||
List<T> newList = new ArrayList<>(current);
|
||||
newList.add(index, item);
|
||||
|
||||
if(immediateSet)
|
||||
setValue(newList);
|
||||
else postValue(newList);
|
||||
}
|
||||
|
||||
public void add(int index, T item) {
|
||||
add(index, item, false);
|
||||
}
|
||||
|
||||
public void remove(T item, boolean immediateSet) {
|
||||
List<T> current = getValue();
|
||||
List<T> newList = new ArrayList<>(current);
|
||||
newList.remove(item);
|
||||
|
||||
if(immediateSet)
|
||||
setValue(newList);
|
||||
else postValue(newList);
|
||||
}
|
||||
|
||||
public void remove(T item) {
|
||||
remove(item, false);
|
||||
}
|
||||
|
||||
public void update(Consumer<List<T>> updater) {
|
||||
List<T> current = getValue();
|
||||
List<T> newList = new ArrayList<>(current);
|
||||
updater.accept(newList);
|
||||
postValue(newList);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
List<T> newList = new ArrayList<>();
|
||||
postValue(newList);
|
||||
}
|
||||
|
||||
public void addAll(List<T> items) {
|
||||
List<T> current = getValue();
|
||||
List<T> newList = new ArrayList<>(current);
|
||||
newList.addAll(items);
|
||||
postValue(newList);
|
||||
}
|
||||
|
||||
public MutableListLiveData<T> clone() {
|
||||
MutableListLiveData<T> clone = new MutableListLiveData<>();
|
||||
List<T> current = getValue();
|
||||
if (current != null) {
|
||||
clone.postValue(new ArrayList<>(current));
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
List<T> current = getValue();
|
||||
return current == null || current.isEmpty();
|
||||
}
|
||||
|
||||
public T get(int index) {
|
||||
List<T> current = getValue();
|
||||
if (current != null && index >= 0 && index < current.size()) {
|
||||
return current.get(index);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int size() {
|
||||
List<T> current = getValue();
|
||||
return current != null ? current.size() : 0;
|
||||
}
|
||||
|
||||
public java.util.stream.Stream<T> stream() {
|
||||
List<T> current = getValue();
|
||||
return current != null ? current.stream() : java.util.stream.Stream.empty();
|
||||
}
|
||||
|
||||
public void removeAll(Collection<T> items) {
|
||||
List<T> current = getValue();
|
||||
List<T> newList = new ArrayList<>(current);
|
||||
newList.removeAll(items);
|
||||
postValue(newList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package it.integry.integrywmsnative.core.di;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Classe che gestisce la serializzazione e deserializzazione di MutableListLiveData con Gson
|
||||
*
|
||||
* @param <T> tipo degli elementi nella lista
|
||||
*/
|
||||
public class MutableListLiveDataTypeAdapter<T> implements JsonSerializer<MutableListLiveData<T>>, JsonDeserializer<MutableListLiveData<T>> {
|
||||
|
||||
private final Handler handler = new Handler(Looper.getMainLooper());
|
||||
|
||||
/**
|
||||
* Serializza un oggetto MutableListLiveData in un JsonElement
|
||||
*/
|
||||
@Override
|
||||
public JsonElement serialize(MutableListLiveData<T> src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
// Ottiene la lista interna da MutableListLiveData e la serializza
|
||||
List<T> list = src.getValue();
|
||||
return context.serialize(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserializza un JsonElement in un oggetto MutableListLiveData
|
||||
*/
|
||||
@Override
|
||||
public MutableListLiveData<T> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
// Determina il tipo degli elementi nella lista
|
||||
Type listType = getListType(typeOfT);
|
||||
|
||||
// Deserializza il JsonElement in una lista
|
||||
List<T> list = context.deserialize(json, listType);
|
||||
if (list == null) {
|
||||
list = new ArrayList<>();
|
||||
}
|
||||
|
||||
// Crea una nuova istanza di MutableListLiveData e aggiunge tutti gli elementi
|
||||
MutableListLiveData<T> result = new MutableListLiveData<>(list);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Estrae il tipo della lista da un tipo parametrizzato di MutableListLiveData<T>
|
||||
*/
|
||||
private Type getListType(Type mutableListLiveDataType) {
|
||||
if (mutableListLiveDataType instanceof ParameterizedType) {
|
||||
ParameterizedType parameterizedType = (ParameterizedType) mutableListLiveDataType;
|
||||
Type[] typeArguments = parameterizedType.getActualTypeArguments();
|
||||
if (typeArguments.length > 0) {
|
||||
// Crea un tipo di List<T> usando il parametro di tipo T
|
||||
return TypeToken.getParameterized(List.class, typeArguments[0]).getType();
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback per List<Object> se non riusciamo a determinare il tipo
|
||||
return TypeToken.getParameterized(List.class, Object.class).getType();
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un'istanza del TypeAdapter per MutableListLiveData<T>
|
||||
*
|
||||
* @param elementType il tipo T degli elementi nella lista
|
||||
* @return un'istanza del TypeAdapter
|
||||
*/
|
||||
public static <T> MutableListLiveDataTypeAdapter<T> create(Type elementType) {
|
||||
return new MutableListLiveDataTypeAdapter<>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package it.integry.integrywmsnative.core.di;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Classe che gestisce la serializzazione e deserializzazione di MutableListLiveData con Gson
|
||||
*
|
||||
* @param <T> tipo degli elementi nella lista
|
||||
*/
|
||||
public class ObservableArrayListDataTypeAdapter<T> implements JsonSerializer<ObservableArrayList<T>>, JsonDeserializer<ObservableArrayList<T>> {
|
||||
|
||||
private final Handler handler = new Handler(Looper.getMainLooper());
|
||||
|
||||
/**
|
||||
* Serializza un oggetto MutableListLiveData in un JsonElement
|
||||
*/
|
||||
@Override
|
||||
public JsonElement serialize(ObservableArrayList<T> src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
// Ottiene la lista interna da MutableListLiveData e la serializza
|
||||
ArrayList<T> list = new ArrayList<>(src);
|
||||
return context.serialize(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserializza un JsonElement in un oggetto MutableListLiveData
|
||||
*/
|
||||
@Override
|
||||
public ObservableArrayList<T> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
// Determina il tipo degli elementi nella lista
|
||||
Type listType = getListType(typeOfT);
|
||||
|
||||
// Deserializza il JsonElement in una lista
|
||||
List<T> list = context.deserialize(json, listType);
|
||||
if (list == null) {
|
||||
list = new ArrayList<>();
|
||||
}
|
||||
|
||||
// Crea una nuova istanza di MutableListLiveData e aggiunge tutti gli elementi
|
||||
ObservableArrayList<T> result = new ObservableArrayList<>();
|
||||
|
||||
result.addAll(list);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Estrae il tipo della lista da un tipo parametrizzato di MutableListLiveData<T>
|
||||
*/
|
||||
private Type getListType(Type mutableListLiveDataType) {
|
||||
if (mutableListLiveDataType instanceof ParameterizedType) {
|
||||
ParameterizedType parameterizedType = (ParameterizedType) mutableListLiveDataType;
|
||||
Type[] typeArguments = parameterizedType.getActualTypeArguments();
|
||||
if (typeArguments.length > 0) {
|
||||
// Crea un tipo di List<T> usando il parametro di tipo T
|
||||
return TypeToken.getParameterized(List.class, typeArguments[0]).getType();
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback per List<Object> se non riusciamo a determinare il tipo
|
||||
return TypeToken.getParameterized(List.class, Object.class).getType();
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un'istanza del TypeAdapter per MutableListLiveData<T>
|
||||
*
|
||||
* @param elementType il tipo T degli elementi nella lista
|
||||
* @return un'istanza del TypeAdapter
|
||||
*/
|
||||
public static <T> ObservableArrayListDataTypeAdapter<T> create(Type elementType) {
|
||||
return new ObservableArrayListDataTypeAdapter<>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package it.integry.integrywmsnative.core.diff;
|
||||
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
|
||||
public class MtbColrDiffCallback extends DiffUtil.Callback {
|
||||
private final List<MtbColr> oldList;
|
||||
private final List<MtbColr> newList;
|
||||
|
||||
public MtbColrDiffCallback(List<MtbColr> oldList, List<MtbColr> newList) {
|
||||
this.oldList = oldList;
|
||||
this.newList = newList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOldListSize() {
|
||||
return oldList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNewListSize() {
|
||||
return newList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
|
||||
MtbColr oldItem = oldList.get(oldItemPosition);
|
||||
MtbColr newItem = newList.get(newItemPosition);
|
||||
|
||||
return oldItem.getKey().equals(newItem.getKey()); // Placeholder, idealmente confrontare ID univoci
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
|
||||
// Assicurarsi che MtbColr.equals() confronti i contenuti rilevanti per la UI
|
||||
return oldList.get(oldItemPosition).equals(newList.get(newItemPosition));
|
||||
}
|
||||
}
|
||||
@@ -66,9 +66,6 @@ public class Ean128Service {
|
||||
|
||||
switch (aiModel.AI) {
|
||||
case SSCC -> {
|
||||
if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
|
||||
aiValue = new StringBuilder(aiValue.substring(1));
|
||||
}
|
||||
model.Sscc = aiValue.toString();
|
||||
}
|
||||
case GTIN -> {
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.core.rest.model.giacenza.GetColloInGiacResponseDTO;
|
||||
|
||||
public class AnomaliaUlException extends RuntimeException {
|
||||
public AnomaliaUlException(GetColloInGiacResponseDTO colloInGiac) {
|
||||
super(String.format("%s: %s", colloInGiac.getDescrizioneLivelloAnomalia(), colloInGiac.getDescrizioneAnomalia()));
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,6 @@ package it.integry.integrywmsnative.core.exception;
|
||||
public class InvalidCodMdepBarcodeException extends RuntimeException {
|
||||
|
||||
public InvalidCodMdepBarcodeException(String message) {
|
||||
super(message);
|
||||
super("Il deposito scansionato non è valido: " + message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,13 +3,13 @@ package it.integry.integrywmsnative.core.exception;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class InvalidCodMdepLUException extends Exception {
|
||||
public final class InvalidCodMdepException extends Exception {
|
||||
|
||||
public InvalidCodMdepLUException() {
|
||||
public InvalidCodMdepException() {
|
||||
super(UtilityResources.getString(R.string.invalid_codmdep_error_message));
|
||||
}
|
||||
|
||||
public InvalidCodMdepLUException(String codMdep) {
|
||||
public InvalidCodMdepException(String codMdep) {
|
||||
super(UtilityResources.getString(R.string.invalid_codmdep_error_message) + "(" + codMdep + ")");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
public final class InvalidPositionException extends Exception {
|
||||
|
||||
public InvalidPositionException() {
|
||||
super("La posizione scansionata non è valida");
|
||||
}
|
||||
|
||||
public InvalidPositionException(String message) {
|
||||
super("La posizione scansionata non è valida: " + message);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -23,6 +24,11 @@ public class BaseActivity extends AppCompatActivity {
|
||||
@Inject
|
||||
public ExecutorService executorService;
|
||||
|
||||
@Inject
|
||||
public Handler handler;
|
||||
|
||||
private Integer barcodeCallbackId;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -33,41 +39,45 @@ public class BaseActivity extends AppCompatActivity {
|
||||
.inject(this);
|
||||
}
|
||||
|
||||
protected void initBarcodeManager(int barcodeCallbackId) {
|
||||
this.barcodeCallbackId = barcodeCallbackId;
|
||||
}
|
||||
|
||||
public void onLoadingStarted() {
|
||||
BarcodeManager.disable();
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.disable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.disableLastCallback();
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
public void onLoadingEnded() {
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.enable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.enableLastCallback();
|
||||
this.closeProgress();
|
||||
}
|
||||
|
||||
public void onError(Exception ex) {
|
||||
this.runOnUiThread(() -> {
|
||||
this.closeProgress();
|
||||
handler.post(() -> {
|
||||
this.onLoadingEnded();
|
||||
UtilityExceptions.defaultException(this, ex);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void openProgress() {
|
||||
BarcodeManager.disable();
|
||||
// executorService.execute(() -> {
|
||||
this.mCurrentProgress.show(getSupportFragmentManager());
|
||||
// });
|
||||
this.mCurrentProgress.show(getSupportFragmentManager());
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
BarcodeManager.enable();
|
||||
// executorService.execute(() -> {
|
||||
mCurrentProgress.dismiss();
|
||||
// });
|
||||
mCurrentProgress.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
|
||||
if (BarcodeManager.isLastCallbackEnabled() && BarcodeManager.isKeyboardEmulator()) {
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE && !isControlKey(event)) {
|
||||
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
|
||||
}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
|
||||
public class BaseDialog extends Dialog {
|
||||
|
||||
private boolean mBarcodeListener = false;
|
||||
|
||||
public BaseDialog(@NonNull Context context) {
|
||||
super(context);
|
||||
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
|
||||
setOnKeyListener((dialog, keyCode, event) -> {
|
||||
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
|
||||
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isControlKey(KeyEvent keyEvent) {
|
||||
int keyCode = keyEvent.getKeyCode();
|
||||
return (
|
||||
keyCode == KeyEvent.KEYCODE_BACK ||
|
||||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
|
||||
keyCode == KeyEvent.KEYCODE_DEL
|
||||
);
|
||||
}
|
||||
|
||||
public void setBarcodeListener(boolean listen) {
|
||||
this.mBarcodeListener = listen;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -30,10 +31,15 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
|
||||
@Inject
|
||||
public ExecutorService executorService;
|
||||
|
||||
@Inject
|
||||
public Handler handler;
|
||||
|
||||
private boolean mBarcodeListener = false;
|
||||
|
||||
private boolean cancelable = true;
|
||||
|
||||
private Integer barcodeCallbackId;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isCancelable() {
|
||||
@@ -47,6 +53,16 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
|
||||
this.cancelable = cancelable;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
return super.onCreateDialog(savedInstanceState);
|
||||
}
|
||||
|
||||
protected void initBarcodeManager(int barcodeCallbackId) {
|
||||
this.barcodeCallbackId = barcodeCallbackId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show(FragmentManager manager, String tag) {
|
||||
try {
|
||||
@@ -58,42 +74,36 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
this.initialize();
|
||||
}
|
||||
|
||||
public void onLoadingStarted() {
|
||||
BarcodeManager.disable();
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.disable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.disableLastCallback();
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
public void onLoadingEnded() {
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.enable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.enableLastCallback();
|
||||
this.closeProgress();
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
|
||||
private void openProgress() {
|
||||
BarcodeManager.disable();
|
||||
// executorService.execute(() -> {
|
||||
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
|
||||
// });
|
||||
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
BarcodeManager.enable();
|
||||
// executorService.execute(() -> {
|
||||
mCurrentProgress.dismiss();
|
||||
// });
|
||||
mCurrentProgress.dismiss();
|
||||
}
|
||||
|
||||
|
||||
public void onError(Exception ex) {
|
||||
this.onLoadingEnded();
|
||||
|
||||
requireActivity().runOnUiThread(() -> {
|
||||
handler.post(() -> {
|
||||
this.onLoadingEnded();
|
||||
UtilityExceptions.defaultException(requireActivity(), ex);
|
||||
});
|
||||
}
|
||||
@@ -130,7 +140,7 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator() && getDialog() != null) {
|
||||
if (BarcodeManager.isLastCallbackEnabled() && BarcodeManager.isKeyboardEmulator() && getDialog() != null) {
|
||||
getDialog().setOnKeyListener((dialog, keyCode, event) -> {
|
||||
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
|
||||
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
|
||||
|
||||
@@ -38,6 +38,8 @@ public abstract class BaseFragment extends Fragment {
|
||||
|
||||
protected final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
private Integer barcodeCallbackId;
|
||||
|
||||
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
mToolbar = toolbar;
|
||||
@@ -60,33 +62,40 @@ public abstract class BaseFragment extends Fragment {
|
||||
return view;
|
||||
}
|
||||
|
||||
protected void initBarcodeManager(int barcodeCallbackId) {
|
||||
this.barcodeCallbackId = barcodeCallbackId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void onLoadingStarted() {
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.disable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.disableLastCallback();
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
public void onLoadingEnded() {
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.enable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.enableLastCallback();
|
||||
this.closeProgress();
|
||||
}
|
||||
|
||||
private void openProgress() {
|
||||
BarcodeManager.disable();
|
||||
// executorService.execute(() -> {
|
||||
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
|
||||
// });
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
BarcodeManager.enable();
|
||||
// executorService.execute(() -> {
|
||||
mCurrentProgress.dismiss();
|
||||
// });
|
||||
}
|
||||
|
||||
public void onError(Exception ex) {
|
||||
handler.post(() -> {
|
||||
this.closeProgress();
|
||||
this.onLoadingEnded();
|
||||
UtilityExceptions.defaultException(getActivity(), ex);
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
||||
|
||||
public class BaseMaterialAlertDialogBuilder extends MaterialAlertDialogBuilder {
|
||||
|
||||
@Inject
|
||||
public DialogProgressView mCurrentProgress;
|
||||
|
||||
@Inject
|
||||
public ExecutorService executorService;
|
||||
|
||||
@Inject
|
||||
public Handler handler;
|
||||
|
||||
private boolean mBarcodeListener = false;
|
||||
|
||||
private Integer barcodeCallbackId;
|
||||
|
||||
private Context context;
|
||||
|
||||
private AlertDialog alertDialog;
|
||||
|
||||
public BaseMaterialAlertDialogBuilder(@NonNull Context context) {
|
||||
super(context);
|
||||
this.context = context;
|
||||
|
||||
MainApplication.appComponent
|
||||
.baseMaterialAlertDialogComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
if (BarcodeManager.isLastCallbackEnabled() && BarcodeManager.isKeyboardEmulator()) {
|
||||
setOnKeyListener((dialog, keyCode, event) -> {
|
||||
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
|
||||
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public AlertDialog create() {
|
||||
alertDialog = super.create();
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
protected void dismiss() {
|
||||
alertDialog.dismiss();
|
||||
}
|
||||
|
||||
protected void initBarcodeManager(int barcodeCallbackId) {
|
||||
this.barcodeCallbackId = barcodeCallbackId;
|
||||
}
|
||||
|
||||
|
||||
public void onLoadingStarted() {
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.disable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.disableLastCallback();
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
public void onLoadingEnded() {
|
||||
if (barcodeCallbackId != null)
|
||||
BarcodeManager.enable(barcodeCallbackId);
|
||||
else
|
||||
BarcodeManager.enableLastCallback();
|
||||
this.closeProgress();
|
||||
}
|
||||
|
||||
|
||||
private void openProgress() {
|
||||
if (context instanceof AppCompatActivity) {
|
||||
FragmentManager fragmentManager = ((AppCompatActivity) context).getSupportFragmentManager();
|
||||
// ora puoi usarlo
|
||||
this.mCurrentProgress.show(fragmentManager);
|
||||
} else {
|
||||
UtilityLogger.warn("Context is not an instance of AppCompatActivity, cannot show progress dialog.");
|
||||
}
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
mCurrentProgress.dismiss();
|
||||
}
|
||||
|
||||
|
||||
public void onError(Exception ex) {
|
||||
handler.post(() -> {
|
||||
this.onLoadingEnded();
|
||||
UtilityExceptions.defaultException(getContext(), ex);
|
||||
});
|
||||
}
|
||||
|
||||
private boolean isControlKey(KeyEvent keyEvent) {
|
||||
int keyCode = keyEvent.getKeyCode();
|
||||
return (
|
||||
keyCode == KeyEvent.KEYCODE_BACK ||
|
||||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
|
||||
keyCode == KeyEvent.KEYCODE_DEL
|
||||
);
|
||||
}
|
||||
|
||||
public void setBarcodeListener(boolean listen) {
|
||||
this.mBarcodeListener = listen;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface BaseMaterialAlertDialogBuilderComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
BaseMaterialAlertDialogBuilderComponent create();
|
||||
}
|
||||
|
||||
void inject(BaseMaterialAlertDialogBuilder baseMaterialAlertDialogBuilder);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import dagger.Module;
|
||||
|
||||
@Module(subcomponents = BaseMaterialAlertDialogBuilderComponent.class)
|
||||
public class BaseMaterialAlertDialogBuilderModule {
|
||||
}
|
||||
@@ -2,37 +2,108 @@ package it.integry.integrywmsnative.core.expansion.view;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class ExtendedSectionedRecyclerView<T, SH extends RecyclerView.ViewHolder, VH extends RecyclerView.ViewHolder>
|
||||
extends SectionedRecyclerViewAdapter<SH, VH> {
|
||||
|
||||
protected ArrayList<T> mDataset = new ArrayList<>();
|
||||
private View mEmptyView;
|
||||
|
||||
public ExtendedSectionedRecyclerView(ObservableArrayList<T> myDataset) {
|
||||
mDataset.addAll(myDataset);
|
||||
protected final List<T> originalItems = new ArrayList<>();
|
||||
private final Object originalItemsLock = new Object();
|
||||
|
||||
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback<T>() {
|
||||
@Override
|
||||
public void onChanged(ObservableList<T> sender) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(sender);
|
||||
public ExtendedSectionedRecyclerView(ObservableArrayList<T> observableList) {
|
||||
// originalItems.addAll(observableList);
|
||||
//
|
||||
// observableList.addOnListChangedCallback(new OnListGeneralChangedCallback<T>() {
|
||||
// @Override
|
||||
// public void onChanged(ObservableList<T> sender) {
|
||||
// originalItems.clear();
|
||||
// originalItems.addAll(sender);
|
||||
// notifyDataChanged();
|
||||
// notifyDataSetChanged();
|
||||
// checkIfEmpty();
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// checkIfEmpty();
|
||||
|
||||
synchronized (originalItemsLock) {
|
||||
this.originalItems.addAll(observableList); // Salva lo stato corrente per il filtraggio
|
||||
}
|
||||
|
||||
observableList.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<T>>() {
|
||||
private void updateLists() {
|
||||
// Si assume che observableList sia modificata sul thread UI o che la sincronizzazione sia gestita esternamente.
|
||||
List<T> currentData = new ArrayList<>(observableList); // Crea uno snapshot
|
||||
synchronized (originalItemsLock) {
|
||||
originalItems.clear();
|
||||
originalItems.addAll(currentData); // Aggiorna la lista originale per il filtraggio
|
||||
}
|
||||
// Aggiorna la lista visualizzata dall'adapter
|
||||
// clear();
|
||||
// addAll(currentData); // Usa lo snapshot
|
||||
// notifyDataSetChanged(); // ArrayAdapter.addAll non chiama notifyDataSetChanged, quindi è necessario se non chiamato da clear()
|
||||
// Tuttavia, clear() e addAll() di ArrayAdapter gestiscono la notifica se mNotifyOnChange è true (default).
|
||||
// Per sicurezza e coerenza con il codice originale, lo manteniamo.
|
||||
notifyDataChanged();
|
||||
notifyDataSetChanged();
|
||||
checkIfEmpty();
|
||||
}
|
||||
});
|
||||
|
||||
checkIfEmpty();
|
||||
@Override
|
||||
public void onChanged(ObservableList<T> sender) {
|
||||
updateLists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeChanged(ObservableList<T> sender, int positionStart, int itemCount) {
|
||||
updateLists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeInserted(ObservableList<T> sender, int positionStart, int itemCount) {
|
||||
updateLists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeMoved(ObservableList<T> sender, int fromPosition, int toPosition, int itemCount) {
|
||||
updateLists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeRemoved(ObservableList<T> sender, int positionStart, int itemCount) {
|
||||
updateLists();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public ExtendedSectionedRecyclerView(@NonNull LiveData<List<T>> liveData,
|
||||
@NonNull LifecycleOwner lifecycleOwner) {
|
||||
liveData.observe(lifecycleOwner, newList -> {
|
||||
// L'observer di LiveData viene eseguito sul thread UI
|
||||
List<T> dataToUse = (newList == null) ? new ArrayList<>() : new ArrayList<>(newList);
|
||||
synchronized (originalItemsLock) {
|
||||
originalItems.clear();
|
||||
originalItems.addAll(dataToUse); // Aggiorna la lista originale per il filtraggio
|
||||
}
|
||||
// Aggiorna la lista visualizzata dall'adapter
|
||||
// clear();
|
||||
// addAll(dataToUse); // addAll gestisce correttamente una collezione vuota se newList è null
|
||||
notifyDataChanged();
|
||||
notifyDataSetChanged();
|
||||
checkIfEmpty();
|
||||
});
|
||||
}
|
||||
|
||||
public ExtendedSectionedRecyclerView<T, SH, VH> setEmptyView(View emptyView) {
|
||||
@@ -43,7 +114,7 @@ public abstract class ExtendedSectionedRecyclerView<T, SH extends RecyclerView.V
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return this.mDataset.size();
|
||||
return this.originalItems.size();
|
||||
}
|
||||
|
||||
private void checkIfEmpty() {
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package it.integry.integrywmsnative.core.expansion.view;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
|
||||
public abstract class ExtendedSectionedRecyclerViewNew<T, SH extends RecyclerView.ViewHolder, VH extends RecyclerView.ViewHolder>
|
||||
extends SectionedRecyclerViewAdapter<SH, VH> {
|
||||
|
||||
private View mEmptyView;
|
||||
|
||||
public ExtendedSectionedRecyclerViewNew(ObservableArrayList<T> myDataset) {
|
||||
super();
|
||||
|
||||
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback<T>() {
|
||||
@Override
|
||||
public void onChanged(ObservableList<T> sender) {
|
||||
checkIfEmpty();
|
||||
}
|
||||
});
|
||||
|
||||
checkIfEmpty();
|
||||
}
|
||||
|
||||
public ExtendedSectionedRecyclerViewNew<T, SH, VH> setEmptyView(View emptyView) {
|
||||
this.mEmptyView = emptyView;
|
||||
this.checkIfEmpty();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void checkIfEmpty() {
|
||||
if (mEmptyView != null) {
|
||||
final boolean emptyViewVisible = getItemCount() == 0;
|
||||
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
package it.integry.integrywmsnative.core.expansion.view;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class RecyclerViewProfiler {
|
||||
private static final String TAG = "RVProfiler";
|
||||
private final SparseArray<Long> bindingTimes;
|
||||
private final SparseArray<Long> creationTimes;
|
||||
private final Handler mainHandler;
|
||||
private WeakReference<RecyclerView> recyclerViewRef;
|
||||
private boolean isProfilingEnabled = true;
|
||||
|
||||
// Metriche di performance
|
||||
private long totalBindingTime = 0;
|
||||
private long totalCreationTime = 0;
|
||||
private int bindCount = 0;
|
||||
private int createCount = 0;
|
||||
private long firstBindTime = 0;
|
||||
private final ArrayDeque<Long> recentBindTimes;
|
||||
private static final int MAX_RECENT_TIMES = 50;
|
||||
|
||||
public RecyclerViewProfiler(RecyclerView recyclerView) {
|
||||
this.recyclerViewRef = new WeakReference<>(recyclerView);
|
||||
this.bindingTimes = new SparseArray<>();
|
||||
this.creationTimes = new SparseArray<>();
|
||||
this.mainHandler = new Handler(Looper.getMainLooper());
|
||||
this.recentBindTimes = new ArrayDeque<>();
|
||||
|
||||
setupRecyclerViewCallbacks();
|
||||
}
|
||||
|
||||
private void setupRecyclerViewCallbacks() {
|
||||
RecyclerView recyclerView = recyclerViewRef.get();
|
||||
if (recyclerView == null) return;
|
||||
|
||||
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
|
||||
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
||||
logPerformanceMetrics();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Monitora il pre-layout
|
||||
recyclerView.addOnLayoutChangeListener((v, left, top, right, bottom,
|
||||
oldLeft, oldTop, oldRight, oldBottom) -> {
|
||||
if (firstBindTime == 0) {
|
||||
mainHandler.postDelayed(this::checkInitialPerformance, 500);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void onPreBind(int position) {
|
||||
if (!isProfilingEnabled) return;
|
||||
bindingTimes.put(position, System.nanoTime());
|
||||
}
|
||||
|
||||
public void onPostBind(int position) {
|
||||
if (!isProfilingEnabled) return;
|
||||
|
||||
Long startTime = bindingTimes.get(position);
|
||||
if (startTime != null) {
|
||||
long bindTime = System.nanoTime() - startTime;
|
||||
bindingTimes.remove(position);
|
||||
|
||||
if (firstBindTime == 0) {
|
||||
firstBindTime = bindTime;
|
||||
}
|
||||
|
||||
totalBindingTime += bindTime;
|
||||
bindCount++;
|
||||
|
||||
recentBindTimes.addLast(bindTime);
|
||||
if (recentBindTimes.size() > MAX_RECENT_TIMES) {
|
||||
recentBindTimes.removeFirst();
|
||||
}
|
||||
|
||||
// Segnala binding lenti
|
||||
if (bindTime > TimeUnit.MILLISECONDS.toNanos(16)) { // 1 frame
|
||||
Log.w(TAG, String.format("Slow binding at position %d: %.2fms",
|
||||
position, bindTime / 1_000_000.0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onPreCreate(int viewType) {
|
||||
if (!isProfilingEnabled) return;
|
||||
creationTimes.put(viewType, System.nanoTime());
|
||||
}
|
||||
|
||||
public void onPostCreate(int viewType) {
|
||||
if (!isProfilingEnabled) return;
|
||||
|
||||
Long startTime = creationTimes.get(viewType);
|
||||
if (startTime != null) {
|
||||
long createTime = System.nanoTime() - startTime;
|
||||
creationTimes.remove(viewType);
|
||||
|
||||
totalCreationTime += createTime;
|
||||
createCount++;
|
||||
|
||||
// Segnala creazioni lente
|
||||
if (createTime > TimeUnit.MILLISECONDS.toNanos(8)) {
|
||||
Log.w(TAG, String.format("Slow view creation for type %d: %.2fms",
|
||||
viewType, createTime / 1_000_000.0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkInitialPerformance() {
|
||||
RecyclerView recyclerView = recyclerViewRef.get();
|
||||
if (recyclerView == null) return;
|
||||
|
||||
// Verifica inflazione layout
|
||||
long avgBindTime = bindCount > 0 ? totalBindingTime / bindCount : 0;
|
||||
if (avgBindTime > TimeUnit.MILLISECONDS.toNanos(8)) {
|
||||
Log.w(TAG, String.format("High average binding time: %.2fms. " +
|
||||
"Consider using AsyncLayoutInflater", avgBindTime / 1_000_000.0));
|
||||
}
|
||||
|
||||
// Verifica dimensione view pool
|
||||
RecyclerView.RecycledViewPool pool = recyclerView.getRecycledViewPool();
|
||||
if (pool != null) {
|
||||
int[] viewTypes = getViewTypes(recyclerView);
|
||||
for (int type : viewTypes) {
|
||||
if (pool.getRecycledViewCount(type) == 0) {
|
||||
Log.w(TAG, "ViewPool empty for type " + type +
|
||||
". Consider increasing pool size");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Verifica prefetch
|
||||
if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
|
||||
LinearLayoutManager lm = (LinearLayoutManager) recyclerView.getLayoutManager();
|
||||
if (!lm.isItemPrefetchEnabled()) {
|
||||
Log.w(TAG, "Item prefetch is disabled. Enable it for better performance");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void logPerformanceMetrics() {
|
||||
if (!isProfilingEnabled || recentBindTimes.isEmpty()) return;
|
||||
|
||||
// Calcola la varianza dei tempi di binding recenti
|
||||
double mean = recentBindTimes.stream()
|
||||
.mapToLong(Long::longValue)
|
||||
.average()
|
||||
.orElse(0.0);
|
||||
|
||||
double variance = recentBindTimes.stream()
|
||||
.mapToDouble(time -> Math.pow(time - mean, 2))
|
||||
.average()
|
||||
.orElse(0.0);
|
||||
|
||||
Log.d(TAG, String.format("Performance metrics:\n" +
|
||||
"Avg binding time: %.2fms\n" +
|
||||
"Binding time variance: %.2f\n" +
|
||||
"View creation rate: %.1f%%",
|
||||
mean / 1_000_000.0,
|
||||
variance / 1_000_000.0,
|
||||
createCount * 100.0 / (bindCount + 1)));
|
||||
}
|
||||
|
||||
private int[] getViewTypes(RecyclerView recyclerView) {
|
||||
RecyclerView.Adapter<?> adapter = recyclerView.getAdapter();
|
||||
if (adapter == null) return new int[0];
|
||||
|
||||
Set<Integer> types = new HashSet<>();
|
||||
for (int i = 0; i < adapter.getItemCount(); i++) {
|
||||
types.add(adapter.getItemViewType(i));
|
||||
}
|
||||
return types.stream().mapToInt(Integer::intValue).toArray();
|
||||
}
|
||||
|
||||
public void enableProfiling(boolean enabled) {
|
||||
isProfilingEnabled = enabled;
|
||||
if (!enabled) {
|
||||
bindingTimes.clear();
|
||||
creationTimes.clear();
|
||||
recentBindTimes.clear();
|
||||
}
|
||||
}
|
||||
|
||||
public String getProfilingStats() {
|
||||
if (bindCount == 0) return "No data collected yet";
|
||||
|
||||
return String.format(Locale.US,
|
||||
"Profiling Statistics:\n" +
|
||||
"Total bindings: %d\n" +
|
||||
"Average binding time: %.2fms\n" +
|
||||
"Total view creations: %d\n" +
|
||||
"Average creation time: %.2fms\n" +
|
||||
"First binding time: %.2fms\n" +
|
||||
"Creation/Binding ratio: %.1f%%",
|
||||
bindCount,
|
||||
(totalBindingTime / bindCount) / 1_000_000.0,
|
||||
createCount,
|
||||
(totalCreationTime / createCount) / 1_000_000.0,
|
||||
firstBindTime / 1_000_000.0,
|
||||
createCount * 100.0 / bindCount);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,352 @@
|
||||
package it.integry.integrywmsnative.core.expansion.view;
|
||||
|
||||
import android.util.SparseArray;
|
||||
import android.util.SparseIntArray;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
|
||||
public abstract class SectionedRecyclerViewAdapter<H extends RecyclerView.ViewHolder,
|
||||
I extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private RecyclerViewProfiler profiler;
|
||||
|
||||
private static final int TYPE_HEADER = 0;
|
||||
private static final int TYPE_ITEM = 1;
|
||||
|
||||
// Utilizziamo SparseArray invece di HashMap per migliori performance su Android
|
||||
private final SparseArray<Section> sectionsByPosition;
|
||||
private final ArrayList<Section> sections;
|
||||
|
||||
// Cache per le posizioni degli item per evitare ricalcoli frequenti
|
||||
private final SparseIntArray positionCache;
|
||||
private int lastCacheUpdateCount;
|
||||
|
||||
// Pool di View per riutilizzo
|
||||
private final RecyclerView.RecycledViewPool sharedPool;
|
||||
|
||||
// Dimensione massima della cache delle posizioni
|
||||
private static final int MAX_POSITION_CACHE_SIZE = 2000;
|
||||
|
||||
public SectionedRecyclerViewAdapter() {
|
||||
this.sections = new ArrayList<>();
|
||||
this.sectionsByPosition = new SparseArray<>();
|
||||
this.positionCache = new SparseIntArray(MAX_POSITION_CACHE_SIZE);
|
||||
this.sharedPool = new RecyclerView.RecycledViewPool();
|
||||
|
||||
// Aumentiamo il pool di ViewHolder per tipo
|
||||
sharedPool.setMaxRecycledViews(TYPE_HEADER, 500);
|
||||
sharedPool.setMaxRecycledViews(TYPE_ITEM, 2000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
|
||||
super.onAttachedToRecyclerView(recyclerView);
|
||||
profiler = new RecyclerViewProfiler(recyclerView);
|
||||
profiler.enableProfiling(BuildConfig.DEBUG);
|
||||
|
||||
recyclerView.setRecycledViewPool(sharedPool);
|
||||
|
||||
// Ottimizziamo il layout manager per le prestazioni
|
||||
if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
|
||||
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
|
||||
layoutManager.setItemPrefetchEnabled(true);
|
||||
// layoutManager.setInitialPrefetchItemCount(20);
|
||||
}
|
||||
|
||||
// recyclerView.postDelayed(() -> {
|
||||
// Precarica alcuni ViewHolder
|
||||
// for (int i = 0; i < 100; i++) {
|
||||
// sharedPool.putRecycledView(
|
||||
// createViewHolder(recyclerView, TYPE_HEADER));
|
||||
// }
|
||||
// for (int i = 0; i < 100; i++) {
|
||||
// sharedPool.putRecycledView(
|
||||
// createViewHolder(recyclerView, TYPE_ITEM));
|
||||
// }
|
||||
// }, 50);
|
||||
}
|
||||
|
||||
protected static class Section {
|
||||
private final Object headerData;
|
||||
private final ArrayList<Object> itemsData;
|
||||
private int globalStartPosition; // Posizione globale di inizio sezione
|
||||
|
||||
public Section(Object headerData, int initialCapacity) {
|
||||
this.headerData = headerData;
|
||||
this.itemsData = new ArrayList<>(initialCapacity);
|
||||
this.globalStartPosition = 0;
|
||||
}
|
||||
|
||||
public Object getHeaderData() {
|
||||
return headerData;
|
||||
}
|
||||
|
||||
public List<Object> getItemsData() {
|
||||
return itemsData;
|
||||
}
|
||||
|
||||
public void addItem(Object item) {
|
||||
itemsData.add(item);
|
||||
}
|
||||
|
||||
public int getItemCount() {
|
||||
return itemsData.size();
|
||||
}
|
||||
|
||||
public void setGlobalStartPosition(int position) {
|
||||
this.globalStartPosition = position;
|
||||
}
|
||||
|
||||
public int getGlobalStartPosition() {
|
||||
return globalStartPosition;
|
||||
}
|
||||
}
|
||||
|
||||
// ViewHolder pooling e caching
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||
super.onViewRecycled(holder);
|
||||
// Pulizia custom del ViewHolder se necessario
|
||||
if (holder instanceof OnRecycleListener) {
|
||||
((OnRecycleListener) holder).onRecycle();
|
||||
}
|
||||
}
|
||||
|
||||
// Interfaccia per gestire la pulizia custom dei ViewHolder
|
||||
public interface OnRecycleListener {
|
||||
void onRecycle();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
profiler.onPreCreate(viewType);
|
||||
RecyclerView.ViewHolder holder;
|
||||
if (viewType == TYPE_HEADER) {
|
||||
holder = onCreateHeaderViewHolder(parent);
|
||||
} else {
|
||||
holder = onCreateItemViewHolder(parent);
|
||||
}
|
||||
|
||||
// Applichiamo ViewHolder pooling
|
||||
if (holder.itemView.getLayoutParams() == null) {
|
||||
holder.itemView.setLayoutParams(
|
||||
new ViewGroup.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
profiler.onPostCreate(viewType);
|
||||
return holder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
profiler.onPreBind(position);
|
||||
PositionInfo posInfo = getItemPositionInfo(position);
|
||||
|
||||
if (getItemViewType(position) == TYPE_HEADER) {
|
||||
onBindHeaderViewHolder((H) holder,
|
||||
sections.get(posInfo.sectionPosition).getHeaderData(),
|
||||
posInfo.sectionPosition);
|
||||
} else {
|
||||
Section section = sections.get(posInfo.sectionPosition);
|
||||
onBindItemViewHolder((I) holder,
|
||||
section.getItemsData().get(posInfo.itemPosition),
|
||||
posInfo.sectionPosition,
|
||||
posInfo.itemPosition);
|
||||
}
|
||||
profiler.onPostBind(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List<Object> payloads) {
|
||||
if (payloads.isEmpty()) {
|
||||
super.onBindViewHolder(holder, position, payloads);
|
||||
return;
|
||||
}
|
||||
|
||||
// Supporto per aggiornamenti parziali
|
||||
if (getItemViewType(position) == TYPE_HEADER) {
|
||||
onBindHeaderViewHolderPartial((H) holder, position, payloads);
|
||||
} else {
|
||||
onBindItemViewHolderPartial((I) holder, position, payloads);
|
||||
}
|
||||
}
|
||||
|
||||
// Metodi per gestire aggiornamenti parziali
|
||||
protected void onBindHeaderViewHolderPartial(H holder, int position, List<Object> payloads) {
|
||||
onBindViewHolder(holder, position);
|
||||
}
|
||||
|
||||
protected void onBindItemViewHolderPartial(I holder, int position, List<Object> payloads) {
|
||||
onBindViewHolder(holder, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
int count = 0;
|
||||
for (Section section : sections) {
|
||||
count += section.getItemCount() + 1;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return isHeader(position) ? TYPE_HEADER : TYPE_ITEM;
|
||||
}
|
||||
|
||||
// Metodi ottimizzati per la gestione delle sezioni
|
||||
public <T> void addSection(T headerData, int expectedItems) {
|
||||
sections.add(new Section(headerData, expectedItems));
|
||||
updatePositionCache();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void addItem(int sectionPosition, Object item) {
|
||||
if (sectionPosition >= 0 && sectionPosition < sections.size()) {
|
||||
sections.get(sectionPosition).addItem(item);
|
||||
updatePositionCache();
|
||||
// Notifichiamo solo l'inserimento invece di un refresh completo
|
||||
notifyItemInserted(getGlobalPositionForItem(sectionPosition,
|
||||
sections.get(sectionPosition).getItemCount() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
public <T extends Object, S extends Object> void setSections(List<T> headers, Map<T, List<S>> items) {
|
||||
sections.clear();
|
||||
sectionsByPosition.clear();
|
||||
|
||||
int position = 0;
|
||||
for (T header : headers) {
|
||||
List<S> sectionItems = items.get(header);
|
||||
Section section = new Section(header, sectionItems != null ? sectionItems.size() : 5);
|
||||
if (sectionItems != null) {
|
||||
section.getItemsData().addAll(sectionItems);
|
||||
}
|
||||
section.setGlobalStartPosition(position);
|
||||
sections.add(section);
|
||||
sectionsByPosition.put(position, section);
|
||||
|
||||
position += section.getItemCount() + 1;
|
||||
}
|
||||
|
||||
updatePositionCache();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
// Gestione efficiente della cache delle posizioni
|
||||
private void updatePositionCache() {
|
||||
if (sections.size() > MAX_POSITION_CACHE_SIZE) {
|
||||
positionCache.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
int currentPosition = 0;
|
||||
for (int i = 0; i < sections.size(); i++) {
|
||||
Section section = sections.get(i);
|
||||
section.setGlobalStartPosition(currentPosition);
|
||||
sectionsByPosition.put(currentPosition, section);
|
||||
currentPosition += section.getItemCount() + 1;
|
||||
}
|
||||
|
||||
lastCacheUpdateCount = getItemCount();
|
||||
}
|
||||
|
||||
private boolean isHeader(int position) {
|
||||
Section section = sectionsByPosition.get(position);
|
||||
if (section != null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (int i = 0; i < sections.size(); i++) {
|
||||
section = sections.get(i);
|
||||
if (position == section.getGlobalStartPosition()) {
|
||||
return true;
|
||||
}
|
||||
if (position < section.getGlobalStartPosition() + section.getItemCount() + 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static class PositionInfo {
|
||||
final int sectionPosition;
|
||||
final int itemPosition;
|
||||
|
||||
PositionInfo(int sectionPosition, int itemPosition) {
|
||||
this.sectionPosition = sectionPosition;
|
||||
this.itemPosition = itemPosition;
|
||||
}
|
||||
}
|
||||
|
||||
private PositionInfo getItemPositionInfo(int position) {
|
||||
// Controllo cache
|
||||
int cachedSection = positionCache.get(position, -1);
|
||||
if (cachedSection != -1 && lastCacheUpdateCount == getItemCount()) {
|
||||
Section section = sections.get(cachedSection);
|
||||
int relativePos = position - section.getGlobalStartPosition();
|
||||
if (relativePos == 0) {
|
||||
return new PositionInfo(cachedSection, -1);
|
||||
}
|
||||
return new PositionInfo(cachedSection, relativePos - 1);
|
||||
}
|
||||
|
||||
// Ricerca ottimizzata
|
||||
Section targetSection = sectionsByPosition.get(position);
|
||||
if (targetSection != null) {
|
||||
int sectionIndex = sections.indexOf(targetSection);
|
||||
return new PositionInfo(sectionIndex, -1);
|
||||
}
|
||||
|
||||
// Ricerca binaria nelle sezioni
|
||||
int left = 0;
|
||||
int right = sections.size() - 1;
|
||||
|
||||
while (left <= right) {
|
||||
int mid = (left + right) >>> 1;
|
||||
Section section = sections.get(mid);
|
||||
int sectionStart = section.getGlobalStartPosition();
|
||||
int sectionEnd = sectionStart + section.getItemCount() + 1;
|
||||
|
||||
if (position >= sectionStart && position < sectionEnd) {
|
||||
int relativePos = position - sectionStart;
|
||||
if (relativePos == 0) {
|
||||
return new PositionInfo(mid, -1);
|
||||
}
|
||||
return new PositionInfo(mid, relativePos - 1);
|
||||
}
|
||||
|
||||
if (position < sectionStart) {
|
||||
right = mid - 1;
|
||||
} else {
|
||||
left = mid + 1;
|
||||
}
|
||||
}
|
||||
|
||||
throw new IndexOutOfBoundsException("Position " + position + " is out of bounds");
|
||||
}
|
||||
|
||||
private int getGlobalPositionForItem(int sectionPosition, int itemPosition) {
|
||||
return sections.get(sectionPosition).getGlobalStartPosition() + itemPosition + 1;
|
||||
}
|
||||
|
||||
// Metodi astratti che devono essere implementati
|
||||
protected abstract H onCreateHeaderViewHolder(ViewGroup parent);
|
||||
protected abstract I onCreateItemViewHolder(ViewGroup parent);
|
||||
protected abstract void onBindHeaderViewHolder(H holder, Object headerData, int sectionPosition);
|
||||
protected abstract void onBindItemViewHolder(I holder, Object itemData, int sectionPosition, int itemPosition);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package it.integry.integrywmsnative.core.helper;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.model.secondary.TrasferimentoPedaneStatusEnum;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class TrasferimentoPedaneStatusConverter {
|
||||
|
||||
public static @ColorInt int getLabelBgColor(Context context, TrasferimentoPedaneStatusEnum status) {
|
||||
var attrColor = switch (status) {
|
||||
case APERTO -> com.google.android.material.R.attr.colorPrimaryContainer; // Primary
|
||||
case COMPLETATO -> R.attr.colorSuccessContainer; // Green
|
||||
case SCADUTO -> com.google.android.material.R.attr.colorErrorContainer; // Red
|
||||
};
|
||||
|
||||
return UtilityResources.getColorResourceFromAttr(context, attrColor);
|
||||
}
|
||||
|
||||
public static @ColorInt int getLabelTextColor(Context context, TrasferimentoPedaneStatusEnum status) {
|
||||
var attrColor = switch (status) {
|
||||
case APERTO -> com.google.android.material.R.attr.colorOnPrimaryContainer; // Primary
|
||||
case COMPLETATO -> R.attr.colorOnSuccessContainer; // Green
|
||||
case SCADUTO -> com.google.android.material.R.attr.colorOnErrorContainer; // Red
|
||||
};
|
||||
|
||||
return UtilityResources.getColorResourceFromAttr(context, attrColor);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,7 @@ public interface ILUPrintListener {
|
||||
|
||||
void onLUSuccessullyPrinted();
|
||||
|
||||
void onLUPrintRequest(RunnableArgs<Boolean> onComplete);
|
||||
boolean onLUPrintRequest();
|
||||
|
||||
void onLUPrintError(Exception ex, Runnable onComplete);
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package it.integry.integrywmsnative.core.mapper;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
|
||||
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneDTO;
|
||||
|
||||
@Singleton
|
||||
public class TrasferimentoPedaneMapper extends BaseMapper<TrasferimentoPedaneDTO, TrasferimentoPedaneEntity> {
|
||||
private final TrasferimentoPedaneRowMapper trasferimentoPedaneRowMapper;
|
||||
|
||||
@Inject
|
||||
public TrasferimentoPedaneMapper(TrasferimentoPedaneRowMapper trasferimentoPedaneRowMapper) {
|
||||
this.trasferimentoPedaneRowMapper = trasferimentoPedaneRowMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrasferimentoPedaneEntity mapRestToRoom(TrasferimentoPedaneDTO inputData) {
|
||||
if(inputData == null) return null;
|
||||
|
||||
var data = new TrasferimentoPedaneEntity();
|
||||
data.setCodMdepDest(inputData.getCodMdepDest());
|
||||
data.setCreatedAt(inputData.getCreatedAt());
|
||||
|
||||
data.setTrasferimentoPedaneRowList(trasferimentoPedaneRowMapper.mapRestsToRooms(inputData.getRows()));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrasferimentoPedaneDTO mapRoomToRest(TrasferimentoPedaneEntity inputData) {
|
||||
if(inputData == null) return null;
|
||||
|
||||
var data = new TrasferimentoPedaneDTO();
|
||||
data.setCodMdepDest(inputData.getCodMdepDest());
|
||||
data.setCreatedAt(inputData.getCreatedAt());
|
||||
|
||||
data.setRows(trasferimentoPedaneRowMapper.mapRoomsToRests(inputData.getTrasferimentoPedaneRowList()));
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package it.integry.integrywmsnative.core.mapper;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
|
||||
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneRowDTO;
|
||||
|
||||
@Singleton
|
||||
public class TrasferimentoPedaneRowMapper extends BaseMapper<TrasferimentoPedaneRowDTO, TrasferimentoPedaneRowEntity> {
|
||||
|
||||
@Inject
|
||||
public TrasferimentoPedaneRowMapper() {
|
||||
// Default constructor for dependency injection
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrasferimentoPedaneRowEntity mapRestToRoom(TrasferimentoPedaneRowDTO inputData) {
|
||||
if(inputData == null) return null;
|
||||
|
||||
var data = new TrasferimentoPedaneRowEntity();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrasferimentoPedaneRowDTO mapRoomToRest(TrasferimentoPedaneRowEntity inputData) {
|
||||
if(inputData == null) return null;
|
||||
|
||||
var data = new TrasferimentoPedaneRowDTO();
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,10 @@
|
||||
package it.integry.integrywmsnative.core.menu;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.StbMenu;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.handler.ManagedErrorCallback;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Response;
|
||||
|
||||
@Singleton
|
||||
public class MenuRESTConsumer extends _BaseRESTConsumer {
|
||||
@@ -22,19 +15,12 @@ public class MenuRESTConsumer extends _BaseRESTConsumer {
|
||||
this.restBuilder = restBuilder;
|
||||
}
|
||||
|
||||
public void retrieveMenu(String rootCodOpz, RunnableArgs<StbMenu> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public StbMenu retrieveMenuSynchronized(String rootCodOpz) throws Exception {
|
||||
MenuRESTConsumerService menuRESTConsumerService = restBuilder.getService(MenuRESTConsumerService.class);
|
||||
menuRESTConsumerService.retrieveMenuConfig(rootCodOpz).enqueue(new ManagedErrorCallback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<StbMenu>> call, Response<ServiceRESTResponse<StbMenu>> response) {
|
||||
analyzeAnswer(response, "retrieveMenu", onComplete, onFailed);
|
||||
}
|
||||
var response = menuRESTConsumerService.retrieveMenuConfig(rootCodOpz)
|
||||
.execute();
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<StbMenu>> call, @NonNull final Exception e) {
|
||||
onFailed.run(e);
|
||||
}
|
||||
});
|
||||
return analyzeAnswer(response, "retrieveMenu");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
|
||||
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.menu.exception.MenuNotFoundException;
|
||||
import it.integry.integrywmsnative.core.model.StbMenu;
|
||||
|
||||
@@ -29,20 +28,18 @@ public class MenuService {
|
||||
this.menuRESTConsumer = menuRESTConsumer;
|
||||
}
|
||||
|
||||
public void init(Runnable onMenuInitialized, RunnableArgs<Exception> onFailed) {
|
||||
menuRESTConsumer.retrieveMenu(MENU_COD_OPZ, menu -> {
|
||||
if(menu != null) {
|
||||
this.mInternalCachedMenu = menu.getStbMenuChildren();
|
||||
this.mInternalCachedFlatMenu = new ArrayList<>();
|
||||
flattenMenu(this.mInternalCachedMenu);
|
||||
}
|
||||
public void init() throws Exception {
|
||||
var menu = menuRESTConsumer.retrieveMenuSynchronized(MENU_COD_OPZ);
|
||||
|
||||
onMenuInitialized.run();
|
||||
}, onFailed);
|
||||
if (menu != null) {
|
||||
this.mInternalCachedMenu = menu.getStbMenuChildren();
|
||||
this.mInternalCachedFlatMenu = new ArrayList<>();
|
||||
flattenMenu(this.mInternalCachedMenu);
|
||||
}
|
||||
}
|
||||
|
||||
public List<StbMenu> getMenu() throws Exception {
|
||||
if(mInternalCachedMenu == null) throw new MenuNotFoundException();
|
||||
if (mInternalCachedMenu == null) throw new MenuNotFoundException();
|
||||
|
||||
return mInternalCachedMenu;
|
||||
}
|
||||
@@ -64,10 +61,10 @@ public class MenuService {
|
||||
}
|
||||
|
||||
private void flattenMenu(List<StbMenu> menu) {
|
||||
for(StbMenu stbMenu : menu) {
|
||||
for (StbMenu stbMenu : menu) {
|
||||
this.mInternalCachedFlatMenu.add(stbMenu);
|
||||
|
||||
if(stbMenu.getStbMenuChildren() != null && !stbMenu.getStbMenuChildren().isEmpty()) {
|
||||
if (stbMenu.getStbMenuChildren() != null && !stbMenu.getStbMenuChildren().isEmpty()) {
|
||||
flattenMenu(stbMenu.getStbMenuChildren());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,76 +4,146 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.util.Base64;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
public class Azienda {
|
||||
public class Azienda extends EntityBase {
|
||||
|
||||
@SerializedName("nomeDitta")
|
||||
private String nomeDitta;
|
||||
@SerializedName("indirizzo")
|
||||
private String indirizzo;
|
||||
@SerializedName("cap")
|
||||
private String cap;
|
||||
@SerializedName("citta")
|
||||
private String citta;
|
||||
@SerializedName("prov")
|
||||
private String prov;
|
||||
@SerializedName("partIva")
|
||||
private String partIva;
|
||||
@SerializedName("numTel")
|
||||
private String numTel;
|
||||
@SerializedName("numFax")
|
||||
private String numFax;
|
||||
@SerializedName("eMail")
|
||||
private String eMail;
|
||||
@SerializedName("annoContab")
|
||||
private Integer annoContab;
|
||||
@SerializedName("annoMagaz")
|
||||
private Integer annoMagaz;
|
||||
@SerializedName("annoAttuale")
|
||||
private Integer annoAttuale;
|
||||
@SerializedName("ultDataGio")
|
||||
private String ultDataGio;
|
||||
@SerializedName("ultNumGio")
|
||||
private Integer ultNumGio;
|
||||
@SerializedName("ribaRSoc1")
|
||||
private String ribaRSoc1;
|
||||
@SerializedName("ribaRSoc2")
|
||||
private String ribaRSoc2;
|
||||
@SerializedName("ribaRSocBreve")
|
||||
private String ribaRSocBreve;
|
||||
@SerializedName("dataInizMsg")
|
||||
private String dataInizMsg;
|
||||
@SerializedName("dataFineMsg")
|
||||
private String dataFineMsg;
|
||||
@SerializedName("messaggioDoc")
|
||||
private String messaggioDoc;
|
||||
@SerializedName("liquidazioniIva")
|
||||
private String liquidazioniIva;
|
||||
@SerializedName("lastUpgDb")
|
||||
private String lastUpgDb;
|
||||
@SerializedName("logoFile")
|
||||
private String logoFile;
|
||||
@SerializedName("logoB64")
|
||||
private String logoB64;
|
||||
@SerializedName("ultDareAv")
|
||||
private BigDecimal ultDareAv;
|
||||
@SerializedName("sollTop")
|
||||
private Integer sollTop;
|
||||
@SerializedName("sollLeft")
|
||||
private Integer sollLeft;
|
||||
@SerializedName("ggUtili")
|
||||
private Integer ggUtili;
|
||||
@SerializedName("codSia")
|
||||
private String codSia;
|
||||
@SerializedName("flagFattDiff")
|
||||
private String flagFattDiff;
|
||||
@SerializedName("sollHeadPersonal")
|
||||
private String sollHeadPersonal;
|
||||
@SerializedName("lastUpgSp")
|
||||
private String lastUpgSp;
|
||||
@SerializedName("sitoWeb")
|
||||
private String sitoWeb;
|
||||
@SerializedName("capitaleSoc")
|
||||
private BigDecimal capitaleSoc;
|
||||
@SerializedName("cciaa")
|
||||
private String cciaa;
|
||||
@SerializedName("iscRegImp")
|
||||
private String iscRegImp;
|
||||
@SerializedName("ragSocMod")
|
||||
private String ragSocMod;
|
||||
@SerializedName("prefissoEan")
|
||||
private String prefissoEan;
|
||||
@SerializedName("codFiscale")
|
||||
private String codFiscale;
|
||||
@SerializedName("persFisicaCognome")
|
||||
private String persFisicaCognome;
|
||||
@SerializedName("persFisicaNome")
|
||||
private String persFisicaNome;
|
||||
@SerializedName("persFisicaSesso")
|
||||
private String persFisicaSesso;
|
||||
@SerializedName("persFisicaDataNascita")
|
||||
private String persFisicaDataNascita;
|
||||
@SerializedName("persFisicaComuneNascita")
|
||||
private String persFisicaComuneNascita;
|
||||
@SerializedName("persFisicaProvNascita")
|
||||
private String persFisicaProvNascita;
|
||||
@SerializedName("flagPersFisica")
|
||||
private String flagPersFisica;
|
||||
@SerializedName("persFisicaCodFisc")
|
||||
private String persFisicaCodFisc;
|
||||
@SerializedName("rapprLegale")
|
||||
private String rapprLegale;
|
||||
@SerializedName("rapprLegaleCodFisc")
|
||||
private String rapprLegaleCodFisc;
|
||||
@SerializedName("sedeAmm")
|
||||
private String sedeAmm;
|
||||
@SerializedName("flagSetIvaOmaggi")
|
||||
private String flagSetIvaOmaggi;
|
||||
@SerializedName("applicationName")
|
||||
private String applicationName;
|
||||
@SerializedName("flagTipoFatturazione")
|
||||
private String flagTipoFatturazione;
|
||||
@SerializedName("tribunale")
|
||||
private String tribunale;
|
||||
@SerializedName("settRitardoAnno")
|
||||
private Integer settRitardoAnno;
|
||||
@SerializedName("dbDistributore")
|
||||
private String dbDistributore;
|
||||
@SerializedName("coStringco")
|
||||
private String coStringco;
|
||||
@SerializedName("lastUpgQc")
|
||||
private String lastUpgQc;
|
||||
@SerializedName("tipoAzienda")
|
||||
private String tipoAzienda;
|
||||
@SerializedName("nazione")
|
||||
private String nazione;
|
||||
@SerializedName("codDiviContab")
|
||||
private String codDiviContab;
|
||||
@SerializedName("codIvaOmaggi")
|
||||
private String codIvaOmaggi;
|
||||
@SerializedName("codCconQuadra")
|
||||
private String codCconQuadra;
|
||||
|
||||
|
||||
|
||||
public Azienda() {
|
||||
type = "azienda";
|
||||
}
|
||||
|
||||
/**
|
||||
* Regime Fiscale
|
||||
*/
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
|
||||
public class CheckableMtbAart {
|
||||
|
||||
private MtbAart mtbAart;
|
||||
private BindableBoolean checked = new BindableBoolean(false);
|
||||
|
||||
public CheckableMtbAart(MtbAart mtbAart) {
|
||||
this.mtbAart = mtbAart;
|
||||
}
|
||||
|
||||
public MtbAart getMtbAart() {
|
||||
return mtbAart;
|
||||
}
|
||||
|
||||
public CheckableMtbAart setMtbAart(MtbAart mtbAart) {
|
||||
this.mtbAart = mtbAart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BindableBoolean getChecked() {
|
||||
return checked;
|
||||
}
|
||||
|
||||
public CheckableMtbAart setChecked(BindableBoolean checked) {
|
||||
this.checked = checked;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void toggleCheck() {
|
||||
this.checked.set(!this.checked.get());
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import androidx.databinding.Observable;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListItemModel;
|
||||
|
||||
public class CheckableMtbColr {
|
||||
|
||||
|
||||
private DialogChooseArtsFromMtbColrListItemModel item;
|
||||
private BindableBoolean checked = new BindableBoolean(false);
|
||||
private BindableBoolean hidden = new BindableBoolean(false);
|
||||
|
||||
public CheckableMtbColr(DialogChooseArtsFromMtbColrListItemModel item) {
|
||||
this.item = item;
|
||||
|
||||
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
||||
@Override
|
||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
||||
hidden.set(item.isHidden());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public DialogChooseArtsFromMtbColrListItemModel getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
public CheckableMtbColr setItem(DialogChooseArtsFromMtbColrListItemModel item) {
|
||||
this.item = item;
|
||||
|
||||
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
||||
@Override
|
||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
||||
hidden.set(item.isHidden());
|
||||
}
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public BindableBoolean getChecked() {
|
||||
return checked;
|
||||
}
|
||||
|
||||
public CheckableMtbColr setChecked(BindableBoolean checked) {
|
||||
this.checked = checked;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BindableBoolean getHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
return hidden.get();
|
||||
}
|
||||
|
||||
public CheckableMtbColr setHidden(BindableBoolean hidden) {
|
||||
this.hidden = hidden;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,149 +1,224 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.model.key.DtbDocrKey;
|
||||
|
||||
public class DtbDocr {
|
||||
public class DtbDocr extends EntityBase {
|
||||
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
|
||||
@SerializedName("codDtip")
|
||||
private String codDtip;
|
||||
|
||||
private String dataDoc;
|
||||
@SerializedName("dataDoc")
|
||||
private LocalDate dataDoc;
|
||||
|
||||
@SerializedName("idRiga")
|
||||
private Integer idRiga;
|
||||
|
||||
@SerializedName("numDoc")
|
||||
private Integer numDoc;
|
||||
|
||||
@SerializedName("serDoc")
|
||||
private String serDoc;
|
||||
|
||||
@SerializedName("codAliq")
|
||||
private String codAliq;
|
||||
|
||||
@SerializedName("codAnagComp")
|
||||
private String codAnagComp;
|
||||
|
||||
@SerializedName("codArtFor")
|
||||
private String codArtFor;
|
||||
|
||||
@SerializedName("codCol")
|
||||
private String codCol;
|
||||
|
||||
@SerializedName("codDtipComp")
|
||||
private String codDtipComp;
|
||||
|
||||
@SerializedName("codJcom")
|
||||
private String codJcom;
|
||||
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
|
||||
@SerializedName("codPromo")
|
||||
private String codPromo;
|
||||
|
||||
@SerializedName("codTagl")
|
||||
private String codTagl;
|
||||
|
||||
@SerializedName("costoUnt")
|
||||
private BigDecimal costoUnt;
|
||||
|
||||
@SerializedName("dataDocComp")
|
||||
private String dataDocComp;
|
||||
|
||||
@SerializedName("dataOrd")
|
||||
private String dataOrd;
|
||||
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
|
||||
@SerializedName("descrizioneEstesa")
|
||||
private String descrizioneEstesa;
|
||||
|
||||
private String flagEvasoForzato;
|
||||
|
||||
@SerializedName("importoRiga")
|
||||
private BigDecimal importoRiga;
|
||||
|
||||
@SerializedName("numCnf")
|
||||
private BigDecimal numCnf;
|
||||
|
||||
@SerializedName("numDocComp")
|
||||
private Integer numDocComp;
|
||||
|
||||
@SerializedName("numOrd")
|
||||
private Integer numOrd;
|
||||
|
||||
@SerializedName("partitaMag")
|
||||
private String partitaMag;
|
||||
|
||||
@SerializedName("percGest")
|
||||
private BigDecimal percGest;
|
||||
|
||||
@SerializedName("percIspe")
|
||||
private BigDecimal percIspe;
|
||||
|
||||
@SerializedName("percOneri")
|
||||
private BigDecimal percOneri;
|
||||
|
||||
@SerializedName("percPromo")
|
||||
private BigDecimal percPromo;
|
||||
|
||||
@SerializedName("percProv")
|
||||
private BigDecimal percProv;
|
||||
|
||||
@SerializedName("percProv2")
|
||||
private BigDecimal percProv2;
|
||||
|
||||
@SerializedName("pesoLordo")
|
||||
private BigDecimal pesoLordo;
|
||||
|
||||
private String posizione;
|
||||
|
||||
@SerializedName("qtaCnf")
|
||||
private BigDecimal qtaCnf;
|
||||
|
||||
@SerializedName("qtaDoc")
|
||||
private BigDecimal qtaDoc;
|
||||
|
||||
@SerializedName("qtaDoc2")
|
||||
private BigDecimal qtaDoc2;
|
||||
|
||||
@SerializedName("qtaDoc3")
|
||||
private BigDecimal qtaDoc3;
|
||||
|
||||
@SerializedName("rapConv")
|
||||
private BigDecimal rapConv;
|
||||
|
||||
@SerializedName("rigaOrd")
|
||||
private Integer rigaOrd;
|
||||
|
||||
@SerializedName("sconto5")
|
||||
private BigDecimal sconto5;
|
||||
|
||||
@SerializedName("sconto6")
|
||||
private BigDecimal sconto6;
|
||||
|
||||
@SerializedName("sconto7")
|
||||
private BigDecimal sconto7;
|
||||
|
||||
@SerializedName("sconto8")
|
||||
private BigDecimal sconto8;
|
||||
|
||||
@SerializedName("serDocComp")
|
||||
private String serDocComp;
|
||||
|
||||
@SerializedName("untDoc")
|
||||
private String untDoc;
|
||||
|
||||
@SerializedName("untDoc2")
|
||||
private String untDoc2;
|
||||
|
||||
@SerializedName("untDoc3")
|
||||
private String untDoc3;
|
||||
|
||||
@SerializedName("valGest")
|
||||
private BigDecimal valGest;
|
||||
|
||||
@SerializedName("valIspe")
|
||||
private BigDecimal valIspe;
|
||||
|
||||
@SerializedName("valOneri")
|
||||
private BigDecimal valOneri;
|
||||
|
||||
@SerializedName("valPromo")
|
||||
private BigDecimal valPromo;
|
||||
|
||||
@SerializedName("valProv")
|
||||
private BigDecimal valProv;
|
||||
|
||||
@SerializedName("valProv2")
|
||||
private BigDecimal valProv2;
|
||||
|
||||
@SerializedName("valUnt")
|
||||
private BigDecimal valUnt;
|
||||
|
||||
@SerializedName("valUntIva")
|
||||
private BigDecimal valUntIva;
|
||||
|
||||
@SerializedName("codMtip")
|
||||
private String codMtip;
|
||||
|
||||
@SerializedName("matricola")
|
||||
private String matricola;
|
||||
|
||||
@SerializedName("dataInizComp")
|
||||
private String dataInizComp;
|
||||
|
||||
@SerializedName("dataFineComp")
|
||||
private String dataFineComp;
|
||||
|
||||
@SerializedName("codKit")
|
||||
private String codKit;
|
||||
|
||||
@SerializedName("codAlis")
|
||||
private String codAlis;
|
||||
|
||||
@SerializedName("dataInsRow")
|
||||
private String dataInsRow;
|
||||
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
|
||||
@SerializedName("rigaKit")
|
||||
private int rigaKit;
|
||||
|
||||
@SerializedName("mtbAart")
|
||||
private MtbAart mtbAart;
|
||||
|
||||
@SerializedName("dataScadPartitaMag")
|
||||
private LocalDate dataScadPartitaMag;
|
||||
|
||||
public DtbDocr() {
|
||||
type = "dtb_docr";
|
||||
}
|
||||
|
||||
public DtbDocrKey getKey() {
|
||||
return new DtbDocrKey(codAnag, codDtip, dataDoc, numDoc, serDoc, idRiga);
|
||||
}
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
}
|
||||
@@ -162,17 +237,12 @@ public class DtbDocr {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataDocS() {
|
||||
public LocalDate getDataDoc() {
|
||||
return dataDoc;
|
||||
}
|
||||
|
||||
public Date getDataDocD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataDocS());
|
||||
}
|
||||
|
||||
public DtbDocr setDataDoc(String dataDoc) {
|
||||
public void setDataDoc(LocalDate dataDoc) {
|
||||
this.dataDoc = dataDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getIdRiga() {
|
||||
|
||||
@@ -1,128 +1,244 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
public class DtbDoct {
|
||||
|
||||
public static final String ENTITY = "dtb_doct";
|
||||
public class DtbDoct extends EntityBase{
|
||||
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
@SerializedName("codDtip")
|
||||
private String codDtip;
|
||||
private Date dataDoc;
|
||||
@SerializedName("dataDoc")
|
||||
private LocalDate dataDoc;
|
||||
@SerializedName("numDoc")
|
||||
private Integer numDoc;
|
||||
@SerializedName("serDoc")
|
||||
private String serDoc;
|
||||
@SerializedName("acconto")
|
||||
private BigDecimal acconto;
|
||||
@SerializedName("activityId")
|
||||
private String activityId;
|
||||
@SerializedName("annotazioni")
|
||||
private String annotazioni;
|
||||
@SerializedName("aspettoBeni")
|
||||
private String aspettoBeni;
|
||||
@SerializedName("cambio")
|
||||
private BigDecimal cambio;
|
||||
@SerializedName("causaleTrasp")
|
||||
private String causaleTrasp;
|
||||
@SerializedName("codAbi")
|
||||
private String codAbi;
|
||||
@SerializedName("codAuto")
|
||||
private String codAuto;
|
||||
@SerializedName("codBanc")
|
||||
private String codBanc;
|
||||
@SerializedName("codBancAzi")
|
||||
private String codBancAzi;
|
||||
@SerializedName("codCab")
|
||||
private String codCab;
|
||||
@SerializedName("codDivi")
|
||||
private String codDivi;
|
||||
@SerializedName("codDtipVal")
|
||||
private String codDtipVal;
|
||||
@SerializedName("codFornTd")
|
||||
private String codFornTd;
|
||||
@SerializedName("codJcom")
|
||||
private String codJcom;
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
@SerializedName("codPaga")
|
||||
private String codPaga;
|
||||
@SerializedName("codProd")
|
||||
private String codProd;
|
||||
@SerializedName("codVage")
|
||||
private String codVage;
|
||||
@SerializedName("codVage2")
|
||||
private String codVage2;
|
||||
@SerializedName("codVdes")
|
||||
private String codVdes;
|
||||
@SerializedName("codVvet")
|
||||
private String codVvet;
|
||||
@SerializedName("codVvet2")
|
||||
private String codVvet2;
|
||||
@SerializedName("codVzon")
|
||||
private String codVzon;
|
||||
@SerializedName("compilatoDa")
|
||||
private String compilatoDa;
|
||||
@SerializedName("userName")
|
||||
private String userName;
|
||||
@SerializedName("controllatoDa")
|
||||
private String controllatoDa;
|
||||
private Date dataChkDoc;
|
||||
private Date dataDocVal;
|
||||
private Date dataInizTrasp;
|
||||
private Date dataIns;
|
||||
private Date dataOrd;
|
||||
private Date dataReg;
|
||||
private Date dataRifScad;
|
||||
private Date dataUltMod;
|
||||
@SerializedName("dataChkDoc")
|
||||
private LocalDate dataChkDoc;
|
||||
@SerializedName("dataDocVal")
|
||||
private LocalDate dataDocVal;
|
||||
@SerializedName("dataInizTrasp")
|
||||
private LocalDate dataInizTrasp;
|
||||
@SerializedName("dataIns")
|
||||
private LocalDate dataIns;
|
||||
@SerializedName("dataOrd")
|
||||
private LocalDate dataOrd;
|
||||
@SerializedName("dataReg")
|
||||
private LocalDate dataReg;
|
||||
@SerializedName("dataRifScad")
|
||||
private LocalDate dataRifScad;
|
||||
@SerializedName("dataUltMod")
|
||||
private LocalDate dataUltMod;
|
||||
@SerializedName("descrizionePaga")
|
||||
private String descrizionePaga;
|
||||
@SerializedName("flagPrzScontati")
|
||||
private String flagPrzScontati;
|
||||
@SerializedName("gestione")
|
||||
private String gestione;
|
||||
@SerializedName("kmPercorsi")
|
||||
private Integer kmPercorsi;
|
||||
@SerializedName("listino")
|
||||
private String listino;
|
||||
@SerializedName("mezzo")
|
||||
private String mezzo;
|
||||
@SerializedName("modificatoDa")
|
||||
private String modificatoDa;
|
||||
@SerializedName("nettoMerce")
|
||||
private BigDecimal nettoMerce;
|
||||
@SerializedName("numCmov")
|
||||
private Integer numCmov;
|
||||
@SerializedName("numColli")
|
||||
private String numColli;
|
||||
@SerializedName("numDocVal")
|
||||
private Integer numDocVal;
|
||||
@SerializedName("numOrd")
|
||||
private Integer numOrd;
|
||||
@SerializedName("numVettura")
|
||||
private String numVettura;
|
||||
@SerializedName("oraInizTrasp")
|
||||
private String oraInizTrasp;
|
||||
@SerializedName("partitaMag")
|
||||
private String partitaMag;
|
||||
@SerializedName("peso")
|
||||
private String peso;
|
||||
@SerializedName("porto")
|
||||
private String porto;
|
||||
@SerializedName("previstaFat")
|
||||
private String previstaFat;
|
||||
@SerializedName("qtaProd")
|
||||
private BigDecimal qtaProd;
|
||||
@SerializedName("rapConvProd")
|
||||
private BigDecimal rapConvProd;
|
||||
@SerializedName("rifOrd")
|
||||
private String rifOrd;
|
||||
@SerializedName("sconto1")
|
||||
private BigDecimal sconto1;
|
||||
@SerializedName("sconto2")
|
||||
private BigDecimal sconto2;
|
||||
@SerializedName("sconto3")
|
||||
private BigDecimal sconto3;
|
||||
@SerializedName("sconto4")
|
||||
private BigDecimal sconto4;
|
||||
@SerializedName("serDocVal")
|
||||
private String serDocVal;
|
||||
@SerializedName("termCons")
|
||||
private String termCons;
|
||||
@SerializedName("tipoAnag")
|
||||
private String tipoAnag;
|
||||
@SerializedName("totImponib")
|
||||
private BigDecimal totImponib;
|
||||
@SerializedName("totIva")
|
||||
private BigDecimal totIva;
|
||||
@SerializedName("totMerce")
|
||||
private BigDecimal totMerce;
|
||||
@SerializedName("totOmaggi")
|
||||
private BigDecimal totOmaggi;
|
||||
@SerializedName("totProvvig")
|
||||
private BigDecimal totProvvig;
|
||||
@SerializedName("untMisProd")
|
||||
private String untMisProd;
|
||||
@SerializedName("idViaggio")
|
||||
private String idViaggio;
|
||||
@SerializedName("numDocForn")
|
||||
private String numDocForn;
|
||||
@SerializedName("generaMovCont")
|
||||
private String generaMovCont;
|
||||
@SerializedName("targa")
|
||||
private String targa;
|
||||
@SerializedName("postiPallet")
|
||||
private Integer postiPallet;
|
||||
@SerializedName("tempMedia")
|
||||
private BigDecimal tempMedia;
|
||||
private Date dataCons;
|
||||
@SerializedName("dataCons")
|
||||
private LocalDate dataCons;
|
||||
@SerializedName("nolo")
|
||||
private BigDecimal nolo;
|
||||
@SerializedName("nolo2")
|
||||
private BigDecimal nolo2;
|
||||
@SerializedName("conducente")
|
||||
private String conducente;
|
||||
@SerializedName("iban")
|
||||
private String iban;
|
||||
@SerializedName("mrn")
|
||||
private String mrn;
|
||||
@SerializedName("explodeKit")
|
||||
private String explodeKit;
|
||||
@SerializedName("flagPrzIva")
|
||||
private String flagPrzIva;
|
||||
@SerializedName("flagCheckPlafond")
|
||||
private String flagCheckPlafond;
|
||||
@SerializedName("tipoEmissione")
|
||||
private String tipoEmissione;
|
||||
@SerializedName("setDataDecorrenza2DataRic")
|
||||
private String setDataDecorrenza2DataRic;
|
||||
@SerializedName("totSpese")
|
||||
private BigDecimal totSpese;
|
||||
@SerializedName("chkArtListino")
|
||||
private String chkArtListino;
|
||||
private Date dataCmov;
|
||||
@SerializedName("dataCmov")
|
||||
private LocalDate dataCmov;
|
||||
@SerializedName("reso")
|
||||
private String reso;
|
||||
@SerializedName("numCmovAutofattura")
|
||||
private Integer numCmovAutofattura;
|
||||
@SerializedName("dtbTipi")
|
||||
private Object dtbTipi;
|
||||
@SerializedName("vtbClie")
|
||||
private Object vtbClie;
|
||||
@SerializedName("jrlSchmacDoc")
|
||||
private List<Object> jrlSchmacDoc;
|
||||
@SerializedName("arlSchaccDoc")
|
||||
private List<Object> arlSchaccDoc;
|
||||
@SerializedName("dtbDocr")
|
||||
private List<DtbDocr> dtbDocr;
|
||||
@SerializedName("dtbDocs")
|
||||
private List<Object> dtbDocs;
|
||||
@SerializedName("mtbColt")
|
||||
private List<MtbColt> mtbColt;
|
||||
@SerializedName("drlDocAttached")
|
||||
private List<Object> drlDocAttached;
|
||||
@SerializedName("dtbDocCarat")
|
||||
private List<Object> dtbDocCarat;
|
||||
@SerializedName("ctbScad")
|
||||
private List<Object> ctbScad;
|
||||
@SerializedName("ctbMovt")
|
||||
private Object ctbMovt;
|
||||
@SerializedName("ctbMovi")
|
||||
private List<Object> ctbMovi;
|
||||
@SerializedName("costi")
|
||||
private List<Object> costi;
|
||||
@SerializedName("ntbDoct")
|
||||
private List<Object> ntbDoct;
|
||||
@SerializedName("dtbDoctBolle")
|
||||
private List<DtbDoct> dtbDoctBolle;
|
||||
private Object dtbInum;
|
||||
|
||||
|
||||
|
||||
public DtbDoct() {
|
||||
type = "dtb_doct";
|
||||
}
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
}
|
||||
@@ -141,11 +257,11 @@ public class DtbDoct {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataDoc() {
|
||||
public LocalDate getDataDoc() {
|
||||
return dataDoc;
|
||||
}
|
||||
|
||||
public DtbDoct setDataDoc(Date dataDoc) {
|
||||
public DtbDoct setDataDoc(LocalDate dataDoc) {
|
||||
this.dataDoc = dataDoc;
|
||||
return this;
|
||||
}
|
||||
@@ -420,74 +536,74 @@ public class DtbDoct {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataChkDoc() {
|
||||
public LocalDate getDataChkDoc() {
|
||||
return dataChkDoc;
|
||||
}
|
||||
|
||||
public DtbDoct setDataChkDoc(Date dataChkDoc) {
|
||||
public DtbDoct setDataChkDoc(LocalDate dataChkDoc) {
|
||||
this.dataChkDoc = dataChkDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataDocVal() {
|
||||
public LocalDate getDataDocVal() {
|
||||
return dataDocVal;
|
||||
}
|
||||
|
||||
public DtbDoct setDataDocVal(Date dataDocVal) {
|
||||
public DtbDoct setDataDocVal(LocalDate dataDocVal) {
|
||||
this.dataDocVal = dataDocVal;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataInizTrasp() {
|
||||
public LocalDate getDataInizTrasp() {
|
||||
return dataInizTrasp;
|
||||
}
|
||||
|
||||
public DtbDoct setDataInizTrasp(Date dataInizTrasp) {
|
||||
public DtbDoct setDataInizTrasp(LocalDate dataInizTrasp) {
|
||||
this.dataInizTrasp = dataInizTrasp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataIns() {
|
||||
public LocalDate getDataIns() {
|
||||
return dataIns;
|
||||
}
|
||||
|
||||
public DtbDoct setDataIns(Date dataIns) {
|
||||
public DtbDoct setDataIns(LocalDate dataIns) {
|
||||
this.dataIns = dataIns;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataOrd() {
|
||||
public LocalDate getDataOrd() {
|
||||
return dataOrd;
|
||||
}
|
||||
|
||||
public DtbDoct setDataOrd(Date dataOrd) {
|
||||
public DtbDoct setDataOrd(LocalDate dataOrd) {
|
||||
this.dataOrd = dataOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataReg() {
|
||||
public LocalDate getDataReg() {
|
||||
return dataReg;
|
||||
}
|
||||
|
||||
public DtbDoct setDataReg(Date dataReg) {
|
||||
public DtbDoct setDataReg(LocalDate dataReg) {
|
||||
this.dataReg = dataReg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataRifScad() {
|
||||
public LocalDate getDataRifScad() {
|
||||
return dataRifScad;
|
||||
}
|
||||
|
||||
public DtbDoct setDataRifScad(Date dataRifScad) {
|
||||
public DtbDoct setDataRifScad(LocalDate dataRifScad) {
|
||||
this.dataRifScad = dataRifScad;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataUltMod() {
|
||||
public LocalDate getDataUltMod() {
|
||||
return dataUltMod;
|
||||
}
|
||||
|
||||
public DtbDoct setDataUltMod(Date dataUltMod) {
|
||||
public DtbDoct setDataUltMod(LocalDate dataUltMod) {
|
||||
this.dataUltMod = dataUltMod;
|
||||
return this;
|
||||
}
|
||||
@@ -852,11 +968,11 @@ public class DtbDoct {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataCons() {
|
||||
public LocalDate getDataCons() {
|
||||
return dataCons;
|
||||
}
|
||||
|
||||
public DtbDoct setDataCons(Date dataCons) {
|
||||
public DtbDoct setDataCons(LocalDate dataCons) {
|
||||
this.dataCons = dataCons;
|
||||
return this;
|
||||
}
|
||||
@@ -969,11 +1085,11 @@ public class DtbDoct {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataCmov() {
|
||||
public LocalDate getDataCmov() {
|
||||
return dataCmov;
|
||||
}
|
||||
|
||||
public DtbDoct setDataCmov(Date dataCmov) {
|
||||
public DtbDoct setDataCmov(LocalDate dataCmov) {
|
||||
this.dataCmov = dataCmov;
|
||||
return this;
|
||||
}
|
||||
@@ -1130,13 +1246,4 @@ public class DtbDoct {
|
||||
this.dtbDoctBolle = dtbDoctBolle;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Object getDtbInum() {
|
||||
return dtbInum;
|
||||
}
|
||||
|
||||
public DtbDoct setDtbInum(Object dtbInum) {
|
||||
this.dtbInum = dtbInum;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,45 +1,120 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class DtbOrdSteps extends EntityBase {
|
||||
|
||||
|
||||
@SerializedName("dataOrd")
|
||||
private String dataOrd;
|
||||
|
||||
@SerializedName("gestione")
|
||||
private String gestione;
|
||||
|
||||
@SerializedName("idRiga")
|
||||
private Integer idRiga;
|
||||
|
||||
@SerializedName("idStep")
|
||||
private Integer idStep;
|
||||
|
||||
@SerializedName("numOrd")
|
||||
private Integer numOrd;
|
||||
|
||||
@SerializedName("activityId")
|
||||
private String activityId;
|
||||
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
|
||||
@SerializedName("codDtip")
|
||||
private String codDtip;
|
||||
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
|
||||
@SerializedName("codProdPri")
|
||||
private String codProdPri;
|
||||
|
||||
@SerializedName("dataDoc")
|
||||
private String dataDoc;
|
||||
|
||||
@SerializedName("dataFine")
|
||||
private String dataFine;
|
||||
|
||||
@SerializedName("dataIniz")
|
||||
private String dataIniz;
|
||||
|
||||
@SerializedName("descrizioneAttivita")
|
||||
private String descrizioneAttivita;
|
||||
|
||||
@SerializedName("flagTipoTempo")
|
||||
private String flagTipoTempo;
|
||||
|
||||
@SerializedName("hrNum")
|
||||
private Integer hrNum;
|
||||
|
||||
@SerializedName("hrTime")
|
||||
private BigDecimal hrTime;
|
||||
|
||||
@SerializedName("idRigaDoc")
|
||||
private String idRigaDoc;
|
||||
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
|
||||
@SerializedName("numDoc")
|
||||
private String numDoc;
|
||||
|
||||
@SerializedName("numFase")
|
||||
private Integer numFase;
|
||||
|
||||
@SerializedName("qtaAllocata")
|
||||
private BigDecimal qtaAllocata;
|
||||
|
||||
@SerializedName("qtaDisp")
|
||||
private BigDecimal qtaDisp;
|
||||
|
||||
@SerializedName("qtaDispImmessa")
|
||||
private BigDecimal qtaDispImmessa;
|
||||
|
||||
@SerializedName("qtaImmesse")
|
||||
private BigDecimal qtaImmesse;
|
||||
|
||||
@SerializedName("qtaInProd")
|
||||
private BigDecimal qtaInProd;
|
||||
|
||||
@SerializedName("qtaLav")
|
||||
private BigDecimal qtaLav;
|
||||
|
||||
@SerializedName("qtaProd")
|
||||
private BigDecimal qtaProd;
|
||||
|
||||
@SerializedName("qtaScartate")
|
||||
private BigDecimal qtaScartate;
|
||||
|
||||
@SerializedName("qtaTrasferite")
|
||||
private BigDecimal qtaTrasferite;
|
||||
|
||||
@SerializedName("rapConvLav")
|
||||
private BigDecimal rapConvLav;
|
||||
|
||||
@SerializedName("serDoc")
|
||||
private String serDoc;
|
||||
|
||||
@SerializedName("untMisLav")
|
||||
private String untMisLav;
|
||||
|
||||
|
||||
|
||||
public DtbOrdSteps() {
|
||||
type = "dtb_ord_steps";
|
||||
}
|
||||
|
||||
public String getDataOrd() {
|
||||
return dataOrd;
|
||||
}
|
||||
|
||||
@@ -1,120 +1,325 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class DtbOrdt extends EntityBase {
|
||||
|
||||
private String dataOrd;
|
||||
|
||||
@SerializedName("dataOrd")
|
||||
private LocalDate dataOrd;
|
||||
|
||||
@SerializedName("gestione")
|
||||
private String gestione;
|
||||
|
||||
@SerializedName("numOrd")
|
||||
private Integer numOrd;
|
||||
|
||||
@SerializedName("acconto")
|
||||
private BigDecimal acconto;
|
||||
|
||||
@SerializedName("activityId")
|
||||
private String activityId;
|
||||
|
||||
@SerializedName("activityTypeId")
|
||||
private String activityTypeId;
|
||||
|
||||
@SerializedName("aspettoBeni")
|
||||
private String aspettoBeni;
|
||||
|
||||
@SerializedName("causaleTrasp")
|
||||
private String causaleTrasp;
|
||||
|
||||
@SerializedName("codAbi")
|
||||
private String codAbi;
|
||||
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
|
||||
@SerializedName("codAuto")
|
||||
private String codAuto;
|
||||
|
||||
@SerializedName("codBanc")
|
||||
private String codBanc;
|
||||
|
||||
@SerializedName("codBancAzi")
|
||||
private String codBancAzi;
|
||||
|
||||
@SerializedName("codCab")
|
||||
private String codCab;
|
||||
|
||||
@SerializedName("codDgrpArt")
|
||||
private String codDgrpArt;
|
||||
|
||||
@SerializedName("codDivi")
|
||||
private String codDivi;
|
||||
|
||||
@SerializedName("codEtic")
|
||||
private String codEtic;
|
||||
|
||||
@SerializedName("codFornTd")
|
||||
private String codFornTd;
|
||||
|
||||
@SerializedName("codJcom")
|
||||
private String codJcom;
|
||||
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
|
||||
@SerializedName("codPaga")
|
||||
private String codPaga;
|
||||
|
||||
@SerializedName("codProd")
|
||||
private String codProd;
|
||||
|
||||
@SerializedName("codTcolUi")
|
||||
private String codTcolUi;
|
||||
|
||||
@SerializedName("codTcolUl")
|
||||
private String codTcolUl;
|
||||
|
||||
@SerializedName("codVage")
|
||||
private String codVage;
|
||||
|
||||
@SerializedName("codVage2")
|
||||
private String codVage2;
|
||||
|
||||
@SerializedName("codVdes")
|
||||
private String codVdes;
|
||||
|
||||
@SerializedName("codVvet")
|
||||
private String codVvet;
|
||||
|
||||
@SerializedName("codVvet2")
|
||||
private String codVvet2;
|
||||
|
||||
@SerializedName("codVzon")
|
||||
private String codVzon;
|
||||
|
||||
@SerializedName("colliPedana")
|
||||
private BigDecimal colliPedana;
|
||||
|
||||
@SerializedName("compilatoDa")
|
||||
private String compilatoDa;
|
||||
|
||||
@SerializedName("controllatoDa")
|
||||
private String controllatoDa;
|
||||
|
||||
@SerializedName("dataConsProd")
|
||||
private String dataConsProd;
|
||||
|
||||
@SerializedName("dataConsProdMax")
|
||||
private String dataConsProdMax;
|
||||
|
||||
@SerializedName("dataEsportazione")
|
||||
private String dataEsportazione;
|
||||
|
||||
@SerializedName("dataConferma")
|
||||
private String dataConferma;
|
||||
|
||||
@SerializedName("dataInizProd")
|
||||
private String dataInizProd;
|
||||
|
||||
@SerializedName("dataInizTrasp")
|
||||
private String dataInizTrasp;
|
||||
|
||||
@SerializedName("dataInsOrd")
|
||||
private String dataInsOrd;
|
||||
|
||||
@SerializedName("dataOrdRif")
|
||||
private String dataOrdRif;
|
||||
|
||||
@SerializedName("rifDdataOrd")
|
||||
private String rifDdataOrd;
|
||||
|
||||
@SerializedName("dataRicezione")
|
||||
private String dataRicezione;
|
||||
|
||||
@SerializedName("dataRifScad")
|
||||
private String dataRifScad;
|
||||
|
||||
@SerializedName("dataUltMod")
|
||||
private String dataUltMod;
|
||||
|
||||
@SerializedName("descrEstesaProd")
|
||||
private String descrEstesaProd;
|
||||
|
||||
@SerializedName("descrizionePaga")
|
||||
private String descrizionePaga;
|
||||
|
||||
@SerializedName("descrizioneProd")
|
||||
private String descrizioneProd;
|
||||
|
||||
@SerializedName("eanFidelity")
|
||||
private String eanFidelity;
|
||||
|
||||
@SerializedName("flagAnnulla")
|
||||
private String flagAnnulla;
|
||||
|
||||
@SerializedName("flagEscRoyal")
|
||||
private String flagEscRoyal;
|
||||
|
||||
@SerializedName("flagEvasoForzato")
|
||||
private String flagEvasoForzato;
|
||||
|
||||
@SerializedName("flagEvasoProd")
|
||||
private String flagEvasoProd;
|
||||
|
||||
@SerializedName("flagPrzScontati")
|
||||
private String flagPrzScontati;
|
||||
|
||||
@SerializedName("flagSospeso")
|
||||
private String flagSospeso;
|
||||
|
||||
@SerializedName("flagTipologia")
|
||||
private String flagTipologia;
|
||||
|
||||
@SerializedName("gestioneRif")
|
||||
private String gestioneRif;
|
||||
|
||||
@SerializedName("itemId")
|
||||
private String itemId;
|
||||
|
||||
@SerializedName("listino")
|
||||
private String listino;
|
||||
|
||||
@SerializedName("livello")
|
||||
private Integer livello;
|
||||
|
||||
@SerializedName("mezzo")
|
||||
private String mezzo;
|
||||
|
||||
@SerializedName("modificatoDa")
|
||||
private String modificatoDa;
|
||||
|
||||
@SerializedName("nettoMerce")
|
||||
private BigDecimal nettoMerce;
|
||||
|
||||
@SerializedName("nolo")
|
||||
private BigDecimal nolo;
|
||||
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
|
||||
@SerializedName("numColli")
|
||||
private String numColli;
|
||||
|
||||
@SerializedName("numCons")
|
||||
private String numCons;
|
||||
|
||||
@SerializedName("numFase")
|
||||
private Integer numFase;
|
||||
|
||||
@SerializedName("numOrdProvv")
|
||||
private Integer numOrdProvv;
|
||||
|
||||
@SerializedName("numOrdRif")
|
||||
private Integer numOrdRif;
|
||||
|
||||
@SerializedName("rifNumOrd")
|
||||
private Integer rifNumOrd;
|
||||
|
||||
@SerializedName("partitaMag")
|
||||
private String partitaMag;
|
||||
|
||||
@SerializedName("percEsclStat")
|
||||
private BigDecimal percEsclStat;
|
||||
|
||||
@SerializedName("personaRif")
|
||||
private String personaRif;
|
||||
|
||||
@SerializedName("peso")
|
||||
private String peso;
|
||||
|
||||
@SerializedName("porto")
|
||||
private String porto;
|
||||
|
||||
@SerializedName("qtaEvasaProd")
|
||||
private BigDecimal qtaEvasaProd;
|
||||
|
||||
@SerializedName("qtaPrenotataRep")
|
||||
private BigDecimal qtaPrenotataRep;
|
||||
|
||||
@SerializedName("qtaProd")
|
||||
private BigDecimal qtaProd;
|
||||
|
||||
@SerializedName("rapConvProd")
|
||||
private BigDecimal rapConvProd;
|
||||
|
||||
@SerializedName("rfid")
|
||||
private String rfid;
|
||||
|
||||
@SerializedName("rifOrd")
|
||||
private String rifOrd;
|
||||
|
||||
@SerializedName("rigaOrdRif")
|
||||
private Integer rigaOrdRif;
|
||||
|
||||
@SerializedName("sconto1")
|
||||
private BigDecimal sconto1;
|
||||
|
||||
@SerializedName("sconto2")
|
||||
private BigDecimal sconto2;
|
||||
|
||||
@SerializedName("sconto3")
|
||||
private BigDecimal sconto3;
|
||||
|
||||
@SerializedName("sconto4")
|
||||
private BigDecimal sconto4;
|
||||
|
||||
@SerializedName("serie")
|
||||
private String serie;
|
||||
|
||||
@SerializedName("termCons")
|
||||
private String termCons;
|
||||
|
||||
@SerializedName("tipoAnag")
|
||||
private String tipoAnag;
|
||||
|
||||
@SerializedName("totFasi")
|
||||
private Integer totFasi;
|
||||
|
||||
@SerializedName("totImponib")
|
||||
private BigDecimal totImponib;
|
||||
|
||||
@SerializedName("totIva")
|
||||
private BigDecimal totIva;
|
||||
|
||||
@SerializedName("totMerce")
|
||||
private BigDecimal totMerce;
|
||||
|
||||
@SerializedName("totOmaggi")
|
||||
private BigDecimal totOmaggi;
|
||||
|
||||
@SerializedName("totProvvig")
|
||||
private BigDecimal totProvvig;
|
||||
|
||||
@SerializedName("untMisProd")
|
||||
private String untMisProd;
|
||||
|
||||
@SerializedName("flagPrzIva")
|
||||
private String flagPrzIva;
|
||||
|
||||
@SerializedName("noteConferma")
|
||||
private String noteConferma;
|
||||
|
||||
@SerializedName("codJflav")
|
||||
private String codJflav;
|
||||
|
||||
public DtbOrdt() {
|
||||
this.type = "dtb_ordt";
|
||||
}
|
||||
|
||||
public String getDataOrd() {
|
||||
public LocalDate getDataOrd() {
|
||||
return dataOrd;
|
||||
}
|
||||
|
||||
public DtbOrdt setDataOrd(String dataOrd) {
|
||||
public DtbOrdt setDataOrd(LocalDate dataOrd) {
|
||||
this.dataOrd = dataOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import android.util.Log;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public abstract class EntityBase extends BaseRestDTO implements Cloneable{
|
||||
|
||||
@SerializedName("operation")
|
||||
public String operation;
|
||||
@SerializedName("type")
|
||||
public String type;
|
||||
@SerializedName("onlyPkMaster")
|
||||
public boolean onlyPkMaster = false;
|
||||
|
||||
public String getOperation() {
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import java.util.Date;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class FiltroOrdineDTO {
|
||||
|
||||
@SerializedName("gestioneOrd")
|
||||
private String gestioneOrd;
|
||||
private String dataOrd;
|
||||
private String dataCons;
|
||||
@SerializedName("dataOrd")
|
||||
private LocalDate dataOrd;
|
||||
@SerializedName("dataCons")
|
||||
private LocalDate dataCons;
|
||||
@SerializedName("numOrd")
|
||||
private int numOrd;
|
||||
|
||||
public String getGestioneOrd() {
|
||||
@@ -20,44 +24,25 @@ public class FiltroOrdineDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataOrdS() {
|
||||
|
||||
public LocalDate getDataOrd() {
|
||||
return dataOrd;
|
||||
}
|
||||
|
||||
public Date getDataOrdD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
|
||||
}
|
||||
|
||||
public FiltroOrdineDTO setDataOrd(String dataOrd) {
|
||||
public FiltroOrdineDTO setDataOrd(LocalDate dataOrd) {
|
||||
this.dataOrd = dataOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public FiltroOrdineDTO setDataOrd(Date dataOrd) {
|
||||
this.dataOrd = UtilityDate.formatDate(dataOrd, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataConsS() {
|
||||
public LocalDate getDataCons() {
|
||||
return dataCons;
|
||||
}
|
||||
|
||||
public Date getDataConsD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataConsS());
|
||||
}
|
||||
|
||||
public FiltroOrdineDTO setDataCons(String dataCons) {
|
||||
public FiltroOrdineDTO setDataCons(LocalDate dataCons) {
|
||||
this.dataCons = dataCons;
|
||||
return this;
|
||||
}
|
||||
|
||||
public FiltroOrdineDTO setDataCons(Date dataCons) {
|
||||
if(dataCons != null) {
|
||||
this.dataCons = UtilityDate.formatDate(dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getNumOrd() {
|
||||
return numOrd;
|
||||
}
|
||||
@@ -77,8 +62,8 @@ public class FiltroOrdineDTO {
|
||||
if (getNumOrd() != that.getNumOrd()) return false;
|
||||
if (getGestioneOrd() != null ? !getGestioneOrd().equals(that.getGestioneOrd()) : that.getGestioneOrd() != null)
|
||||
return false;
|
||||
if (dataOrd != null ? !dataOrd.equals(that.dataOrd) : that.dataOrd != null) return false;
|
||||
return dataCons != null ? dataCons.equals(that.dataCons) : that.dataCons == null;
|
||||
if (dataOrd != null ? !dataOrd.isEqual(that.dataOrd) : that.dataOrd != null) return false;
|
||||
return dataCons != null ? dataCons.isEqual(that.dataCons) : that.dataCons == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,48 +1,88 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
public class GtbAnag extends EntityBase {
|
||||
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
@SerializedName("ragSoc")
|
||||
private String ragSoc;
|
||||
@SerializedName("indirizzo")
|
||||
private String indirizzo;
|
||||
@SerializedName("cap")
|
||||
private String cap;
|
||||
@SerializedName("citta")
|
||||
private String citta;
|
||||
@SerializedName("prov")
|
||||
private String prov;
|
||||
@SerializedName("nazione")
|
||||
private String nazione;
|
||||
@SerializedName("telefono")
|
||||
private String telefono;
|
||||
@SerializedName("fax")
|
||||
private String fax;
|
||||
@SerializedName("partIva")
|
||||
private String partIva;
|
||||
@SerializedName("codFisc")
|
||||
private String codFisc;
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
@SerializedName("personaRif")
|
||||
private String personaRif;
|
||||
@SerializedName("allegato")
|
||||
private String allegato;
|
||||
@SerializedName("eMail")
|
||||
private String eMail;
|
||||
@SerializedName("eMailPec")
|
||||
private String eMailPec;
|
||||
@SerializedName("flagPersonaFg")
|
||||
private String flagPersonaFg;
|
||||
@SerializedName("sesso")
|
||||
private String sesso;
|
||||
@SerializedName("codCentroAzi")
|
||||
private String codCentroAzi;
|
||||
@SerializedName("codRuop")
|
||||
private String codRuop;
|
||||
@SerializedName("dataNascita")
|
||||
private Date dataNascita;
|
||||
@SerializedName("luogoNascita")
|
||||
private String luogoNascita;
|
||||
@SerializedName("provNascita")
|
||||
private String provNascita;
|
||||
@SerializedName("nome")
|
||||
private String nome;
|
||||
@SerializedName("ragSoc2")
|
||||
private String ragSoc2;
|
||||
@SerializedName("classeMerito")
|
||||
private Integer classeMerito;
|
||||
@SerializedName("dataIns")
|
||||
private Date dataIns;
|
||||
@SerializedName("numCell")
|
||||
private String numCell;
|
||||
@SerializedName("cciaa")
|
||||
private String cciaa;
|
||||
@SerializedName("tipoAzienda")
|
||||
private String tipoAzienda;
|
||||
@SerializedName("cuuPa")
|
||||
private String cuuPa;
|
||||
@SerializedName("cognome")
|
||||
private String cognome;
|
||||
@SerializedName("diacod")
|
||||
private String diacod;
|
||||
@SerializedName("lat")
|
||||
private BigDecimal lat;
|
||||
@SerializedName("lng")
|
||||
private BigDecimal lng;
|
||||
@SerializedName("flagInformativa")
|
||||
private String flagInformativa;
|
||||
@SerializedName("flagConsenso")
|
||||
private String flagConsenso;
|
||||
@SerializedName("precode")
|
||||
private String precode;
|
||||
@SerializedName("insDestinatario")
|
||||
private Boolean insDestinatario;
|
||||
|
||||
public GtbAnag() {
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public class JtbComt extends EntityBase {
|
||||
|
||||
@SerializedName("codJcom")
|
||||
private String codJcom;
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
@SerializedName("codJflav")
|
||||
private String codJflav;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
|
||||
public JtbComt() {
|
||||
|
||||
@@ -2,25 +2,42 @@ package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class JtbFasi extends EntityBase {
|
||||
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
@SerializedName("codJfasParent")
|
||||
private String codJfasParent;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
@SerializedName("descrizEstesa")
|
||||
private String descrizEstesa;
|
||||
@SerializedName("codMfas")
|
||||
private String codMfas;
|
||||
@SerializedName("pathIcona")
|
||||
private String pathIcona;
|
||||
@SerializedName("umAllocazione")
|
||||
private String umAllocazione;
|
||||
@SerializedName("maxAllocazione")
|
||||
private BigDecimal maxAllocazione;
|
||||
@SerializedName("codJCal")
|
||||
private String codJCal;
|
||||
@SerializedName("idJfas")
|
||||
private String idJfas;
|
||||
@SerializedName("flagAttivo")
|
||||
private String flagAttivo;
|
||||
@SerializedName("flagCheck")
|
||||
private String flagCheck;
|
||||
@SerializedName("umProd")
|
||||
private String umProd;
|
||||
@SerializedName("prodStd")
|
||||
private BigDecimal prodStd;
|
||||
@SerializedName("codMdepLav")
|
||||
private String codMdepLav;
|
||||
@SerializedName("tipoProd")
|
||||
private String tipoProd;
|
||||
|
||||
public JtbFasi() {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
@@ -11,91 +13,179 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
public class MtbAart extends EntityBase {
|
||||
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
@SerializedName("untMis")
|
||||
private String untMis;
|
||||
@SerializedName("barCode")
|
||||
private String barCode;
|
||||
@SerializedName("pesoKg")
|
||||
private BigDecimal pesoKg;
|
||||
@SerializedName("qtaCnf")
|
||||
private BigDecimal qtaCnf;
|
||||
@SerializedName("codAliq")
|
||||
private String codAliq;
|
||||
@SerializedName("codScoArt")
|
||||
private String codScoArt;
|
||||
@SerializedName("codTcolUi")
|
||||
private String codTcolUi;
|
||||
@SerializedName("codTcolUl")
|
||||
private String codTcolUl;
|
||||
@SerializedName("articoloComposto")
|
||||
private String articoloComposto;
|
||||
@SerializedName("esposizioneComp")
|
||||
private String esposizioneComp;
|
||||
@SerializedName("descrizioneEstesa")
|
||||
private String descrizioneEstesa;
|
||||
@SerializedName("codUltForn")
|
||||
private String codUltForn;
|
||||
@SerializedName("dataUltCar")
|
||||
private String dataUltCar;
|
||||
@SerializedName("valUltCar")
|
||||
private BigDecimal valUltCar;
|
||||
@SerializedName("codUltClie")
|
||||
private String codUltClie;
|
||||
@SerializedName("dataUltScar")
|
||||
private String dataUltScar;
|
||||
@SerializedName("valUltScar")
|
||||
private BigDecimal valUltScar;
|
||||
@SerializedName("tipoCodice")
|
||||
private String tipoCodice;
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
@SerializedName("posizione")
|
||||
private String posizione;
|
||||
@SerializedName("colliPedana")
|
||||
private BigDecimal colliPedana;
|
||||
@SerializedName("untMis2")
|
||||
private String untMis2;
|
||||
@SerializedName("rapConv2")
|
||||
private BigDecimal rapConv2;
|
||||
@SerializedName("flagInclListino")
|
||||
private String flagInclListino;
|
||||
@SerializedName("untMis3")
|
||||
private String untMis3;
|
||||
@SerializedName("rapConv3")
|
||||
private BigDecimal rapConv3;
|
||||
@SerializedName("codMartStat")
|
||||
private String codMartStat;
|
||||
@SerializedName("codMcon")
|
||||
private String codMcon;
|
||||
@SerializedName("codMgrp")
|
||||
private String codMgrp;
|
||||
@SerializedName("codMsfa")
|
||||
private String codMsfa;
|
||||
@SerializedName("codMsgr")
|
||||
private String codMsgr;
|
||||
@SerializedName("codMstp")
|
||||
private String codMstp;
|
||||
@SerializedName("codMtip")
|
||||
private String codMtip;
|
||||
@SerializedName("descrizioneStat")
|
||||
private String descrizioneStat;
|
||||
@SerializedName("flagStato")
|
||||
private String flagStato;
|
||||
@SerializedName("cambioDiviCar")
|
||||
private BigDecimal cambioDiviCar;
|
||||
@SerializedName("cambioDiviScar")
|
||||
private BigDecimal cambioDiviScar;
|
||||
@SerializedName("ggScadPartita")
|
||||
private Integer ggScadPartita;
|
||||
@SerializedName("volumeMc")
|
||||
private BigDecimal volumeMc;
|
||||
@SerializedName("flagEsponiPrz")
|
||||
private String flagEsponiPrz;
|
||||
@SerializedName("dataUltVar")
|
||||
private String dataUltVar;
|
||||
@SerializedName("percSfrido")
|
||||
private BigDecimal percSfrido;
|
||||
@SerializedName("codBarreImb")
|
||||
private String codBarreImb;
|
||||
@SerializedName("flagCalcPrz")
|
||||
private String flagCalcPrz;
|
||||
@SerializedName("esposizioneCompAcq")
|
||||
private String esposizioneCompAcq;
|
||||
@SerializedName("flagCalcPrzAcq")
|
||||
private String flagCalcPrzAcq;
|
||||
@SerializedName("diacod")
|
||||
private String diacod;
|
||||
@SerializedName("plu")
|
||||
private String plu;
|
||||
@SerializedName("partIvaProd")
|
||||
private String partIvaProd;
|
||||
@SerializedName("ragSocProd")
|
||||
private String ragSocProd;
|
||||
@SerializedName("flagRapConvVariabile")
|
||||
private String flagRapConvVariabile;
|
||||
@SerializedName("flagMovArtMag")
|
||||
private String flagMovArtMag;
|
||||
@SerializedName("flagTracciabilita")
|
||||
private String flagTracciabilita;
|
||||
@SerializedName("taraKg")
|
||||
private BigDecimal taraKg;
|
||||
@SerializedName("colliStrato")
|
||||
private BigDecimal colliStrato;
|
||||
@SerializedName("flagQtaCnfFissa")
|
||||
private String flagQtaCnfFissa;
|
||||
@SerializedName("flagColliPedanaFisso")
|
||||
private String flagColliPedanaFisso;
|
||||
@SerializedName("codCconCosti")
|
||||
private String codCconCosti;
|
||||
@SerializedName("codCconRicavi")
|
||||
private String codCconRicavi;
|
||||
@SerializedName("codDgrpArt")
|
||||
private String codDgrpArt;
|
||||
@SerializedName("codDiviCar")
|
||||
private String codDiviCar;
|
||||
@SerializedName("codDiviScar")
|
||||
private String codDiviScar;
|
||||
@SerializedName("codEcrCat")
|
||||
private String codEcrCat;
|
||||
@SerializedName("codEcrMcat")
|
||||
private String codEcrMcat;
|
||||
@SerializedName("codEcrRep")
|
||||
private String codEcrRep;
|
||||
@SerializedName("codEcrStipo")
|
||||
private String codEcrStipo;
|
||||
@SerializedName("codEcrTipo")
|
||||
private String codEcrTipo;
|
||||
@SerializedName("codGrpBolla")
|
||||
private String codGrpBolla;
|
||||
@SerializedName("ingredienti")
|
||||
private String ingredienti;
|
||||
@SerializedName("idArtEqui")
|
||||
private String idArtEqui;
|
||||
@SerializedName("descrCassa")
|
||||
private String descrCassa;
|
||||
@SerializedName("codNcIntracee")
|
||||
private String codNcIntracee;
|
||||
@SerializedName("marchio")
|
||||
private String marchio;
|
||||
@SerializedName("sezione")
|
||||
private Integer sezione;
|
||||
@SerializedName("untMisRifPeso")
|
||||
private UntMisRifPesoEnum untMisRifPeso;
|
||||
|
||||
@SerializedName("qtaEsistente")
|
||||
private BigDecimal qtaEsistente;
|
||||
|
||||
@SerializedName("qtaImpegnata")
|
||||
private BigDecimal qtaImpegnata;
|
||||
|
||||
@SerializedName("numCnfEsistente")
|
||||
private BigDecimal numCnfEsistente;
|
||||
|
||||
@SerializedName("numCnfImpegnata")
|
||||
private BigDecimal numCnfImpegnata;
|
||||
|
||||
@SerializedName("mtbUntMis")
|
||||
private List<MtbUntMis> mtbUntMis;
|
||||
|
||||
@SerializedName("mtbAartBarCode")
|
||||
private List<MtbAartBarCode> mtbAartBarCode;
|
||||
|
||||
|
||||
public enum UntMisRifPesoEnum {
|
||||
C,
|
||||
@@ -108,6 +198,110 @@ public class MtbAart extends EntityBase {
|
||||
this.type = "mtb_aart";
|
||||
}
|
||||
|
||||
public MtbAart(MtbAart other) {
|
||||
this();
|
||||
|
||||
this.codMart = other.codMart;
|
||||
this.descrizione = other.descrizione;
|
||||
this.untMis = other.untMis;
|
||||
this.barCode = other.barCode;
|
||||
this.pesoKg = other.pesoKg; // BigDecimal è immutabile
|
||||
this.qtaCnf = other.qtaCnf;
|
||||
this.codAliq = other.codAliq;
|
||||
this.codScoArt = other.codScoArt;
|
||||
this.codTcolUi = other.codTcolUi;
|
||||
this.codTcolUl = other.codTcolUl;
|
||||
this.articoloComposto = other.articoloComposto;
|
||||
this.esposizioneComp = other.esposizioneComp;
|
||||
this.descrizioneEstesa = other.descrizioneEstesa;
|
||||
this.codUltForn = other.codUltForn;
|
||||
this.dataUltCar = other.dataUltCar;
|
||||
this.valUltCar = other.valUltCar;
|
||||
this.codUltClie = other.codUltClie;
|
||||
this.dataUltScar = other.dataUltScar;
|
||||
this.valUltScar = other.valUltScar;
|
||||
this.tipoCodice = other.tipoCodice;
|
||||
this.note = other.note;
|
||||
this.posizione = other.posizione;
|
||||
this.colliPedana = other.colliPedana;
|
||||
this.untMis2 = other.untMis2;
|
||||
this.rapConv2 = other.rapConv2;
|
||||
this.flagInclListino = other.flagInclListino;
|
||||
this.untMis3 = other.untMis3;
|
||||
this.rapConv3 = other.rapConv3;
|
||||
this.codMartStat = other.codMartStat;
|
||||
this.codMcon = other.codMcon;
|
||||
this.codMgrp = other.codMgrp;
|
||||
this.codMsfa = other.codMsfa;
|
||||
this.codMsgr = other.codMsgr;
|
||||
this.codMstp = other.codMstp;
|
||||
this.codMtip = other.codMtip;
|
||||
this.descrizioneStat = other.descrizioneStat;
|
||||
this.flagStato = other.flagStato;
|
||||
this.cambioDiviCar = other.cambioDiviCar;
|
||||
this.cambioDiviScar = other.cambioDiviScar;
|
||||
this.ggScadPartita = other.ggScadPartita;
|
||||
this.volumeMc = other.volumeMc;
|
||||
this.flagEsponiPrz = other.flagEsponiPrz;
|
||||
this.dataUltVar = other.dataUltVar;
|
||||
this.percSfrido = other.percSfrido;
|
||||
this.codBarreImb = other.codBarreImb;
|
||||
this.flagCalcPrz = other.flagCalcPrz;
|
||||
this.esposizioneCompAcq = other.esposizioneCompAcq;
|
||||
this.flagCalcPrzAcq = other.flagCalcPrzAcq;
|
||||
this.diacod = other.diacod;
|
||||
this.plu = other.plu;
|
||||
this.partIvaProd = other.partIvaProd;
|
||||
this.ragSocProd = other.ragSocProd;
|
||||
this.flagRapConvVariabile = other.flagRapConvVariabile;
|
||||
this.flagMovArtMag = other.flagMovArtMag;
|
||||
this.flagTracciabilita = other.flagTracciabilita;
|
||||
this.taraKg = other.taraKg;
|
||||
this.colliStrato = other.colliStrato;
|
||||
this.flagQtaCnfFissa = other.flagQtaCnfFissa;
|
||||
this.flagColliPedanaFisso = other.flagColliPedanaFisso;
|
||||
this.codCconCosti = other.codCconCosti;
|
||||
this.codCconRicavi = other.codCconRicavi;
|
||||
this.codDgrpArt = other.codDgrpArt;
|
||||
this.codDiviCar = other.codDiviCar;
|
||||
this.codDiviScar = other.codDiviScar;
|
||||
this.codEcrCat = other.codEcrCat;
|
||||
this.codEcrMcat = other.codEcrMcat;
|
||||
this.codEcrRep = other.codEcrRep;
|
||||
this.codEcrStipo = other.codEcrStipo;
|
||||
this.codEcrTipo = other.codEcrTipo;
|
||||
this.codGrpBolla = other.codGrpBolla;
|
||||
this.ingredienti = other.ingredienti;
|
||||
this.idArtEqui = other.idArtEqui;
|
||||
this.descrCassa = other.descrCassa;
|
||||
this.codNcIntracee = other.codNcIntracee;
|
||||
this.marchio = other.marchio;
|
||||
this.sezione = other.sezione;
|
||||
this.untMisRifPeso = other.untMisRifPeso; // Enum è immutabile
|
||||
|
||||
this.qtaEsistente = other.qtaEsistente;
|
||||
this.qtaImpegnata = other.qtaImpegnata;
|
||||
this.numCnfEsistente = other.numCnfEsistente;
|
||||
this.numCnfImpegnata = other.numCnfImpegnata;
|
||||
|
||||
// Deep copy della lista
|
||||
if (other.mtbUntMis != null) {
|
||||
this.mtbUntMis = new ArrayList<>();
|
||||
for (MtbUntMis untMis : other.mtbUntMis) {
|
||||
this.mtbUntMis.add(untMis.clone()); // Assicurati che MtbUntMis abbia un costruttore di copia
|
||||
}
|
||||
}
|
||||
if (other.mtbAartBarCode != null) {
|
||||
this.mtbAartBarCode = new ArrayList<>();
|
||||
for (MtbAartBarCode mtbAartBarCode : other.mtbAartBarCode) {
|
||||
this.mtbAartBarCode.add(mtbAartBarCode.clone()); // Assicurati che MtbUntMis abbia un costruttore di copia
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public boolean isFlagTracciabilitaBoolean() {
|
||||
return flagTracciabilita != null && flagTracciabilita.equalsIgnoreCase("S");
|
||||
}
|
||||
@@ -866,6 +1060,13 @@ public class MtbAart extends EntityBase {
|
||||
return getMtbUntMis() != null && !getMtbUntMis().isEmpty() ? getMtbUntMis().get(0) : null;
|
||||
}
|
||||
|
||||
public List<MtbAartBarCode> getMtbAartBarCode() {
|
||||
return mtbAartBarCode;
|
||||
}
|
||||
|
||||
public void setMtbAartBarCode(List<MtbAartBarCode> mtbAartBarCode) {
|
||||
this.mtbAartBarCode = mtbAartBarCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class MtbAartBarCode extends EntityBase {
|
||||
@SerializedName("codBarre")
|
||||
private String codBarre;
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
@SerializedName("qtaCnf")
|
||||
private BigDecimal qtaCnf;
|
||||
@SerializedName("flagPrimario")
|
||||
private String flagPrimario;
|
||||
@SerializedName("tipoCodBarre")
|
||||
private String tipoCodBarre;
|
||||
|
||||
public MtbAartBarCode() {
|
||||
this.type = "mtb_aart_bar_code";
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getCodBarre() {
|
||||
return codBarre;
|
||||
}
|
||||
|
||||
public void setCodBarre(String codBarre) {
|
||||
this.codBarre = codBarre;
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public void setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
|
||||
public void setQtaCnf(BigDecimal qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
}
|
||||
|
||||
public String getFlagPrimario() {
|
||||
return flagPrimario;
|
||||
}
|
||||
|
||||
public void setFlagPrimario(String flagPrimario) {
|
||||
this.flagPrimario = flagPrimario;
|
||||
}
|
||||
|
||||
public String getTipoCodBarre() {
|
||||
return tipoCodBarre;
|
||||
}
|
||||
|
||||
public void setTipoCodBarre(String tipoCodBarre) {
|
||||
this.tipoCodBarre = tipoCodBarre;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una copia dell'oggetto MtbAartBarCode corrente
|
||||
* @return Una nuova istanza di MtbAartBarCode con gli stessi valori
|
||||
*/
|
||||
@Override
|
||||
public MtbAartBarCode clone() {
|
||||
MtbAartBarCode clone = new MtbAartBarCode();
|
||||
clone.setCodBarre(this.codBarre);
|
||||
clone.setCodMart(this.codMart);
|
||||
clone.setQtaCnf(this.qtaCnf != null ? new BigDecimal(this.qtaCnf.toString()) : null);
|
||||
clone.setFlagPrimario(this.flagPrimario);
|
||||
clone.setTipoCodBarre(this.tipoCodBarre);
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,16 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.key.DtbDocrKey;
|
||||
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
|
||||
import it.integry.integrywmsnative.core.model.key.MtbColrKey;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
@@ -11,48 +18,102 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
public class MtbColr extends EntityBase {
|
||||
|
||||
|
||||
@SerializedName("gestione")
|
||||
private String gestione;
|
||||
@SerializedName("serCollo")
|
||||
private String serCollo;
|
||||
@SerializedName("numCollo")
|
||||
private Integer numCollo;
|
||||
private String dataCollo;
|
||||
@SerializedName("dataCollo")
|
||||
private LocalDate dataCollo;
|
||||
@SerializedName("riga")
|
||||
private Integer riga;
|
||||
@SerializedName("rigaOrd")
|
||||
private Integer rigaOrd;
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
@SerializedName("codBarre")
|
||||
private String codBarre;
|
||||
@SerializedName("codCol")
|
||||
private String codCol;
|
||||
@SerializedName("codTagl")
|
||||
private String codTagl;
|
||||
@SerializedName("partitaMag")
|
||||
private String partitaMag;
|
||||
@SerializedName("gestioneRif")
|
||||
private String gestioneRif;
|
||||
@SerializedName("serColloRif")
|
||||
private String serColloRif;
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
@SerializedName("dataOrd")
|
||||
private LocalDate dataOrd;
|
||||
private String dataColloRif;
|
||||
@SerializedName("dataColloRif")
|
||||
private LocalDate dataColloRif;
|
||||
@SerializedName("qtaCnf")
|
||||
private BigDecimal qtaCnf;
|
||||
@SerializedName("qtaCol")
|
||||
private BigDecimal qtaCol;
|
||||
@SerializedName("numOrd")
|
||||
private Integer numOrd;
|
||||
@SerializedName("numEtich")
|
||||
private Integer numEtich;
|
||||
@SerializedName("numColloRif")
|
||||
private Integer numColloRif;
|
||||
private String datetimeRow;
|
||||
@SerializedName("datetimeRow")
|
||||
private LocalDateTime datetimeRow;
|
||||
@SerializedName("codJcom")
|
||||
private String codJcom;
|
||||
@SerializedName("numCnf")
|
||||
private BigDecimal numCnf;
|
||||
@SerializedName("insPartitaMag")
|
||||
private String insPartitaMag;
|
||||
@SerializedName("mtbPartitaMag_descrizione")
|
||||
private String mtbPartitaMag_descrizione;
|
||||
@SerializedName("dataScadPartita")
|
||||
private LocalDate dataScadPartita;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
@SerializedName("untMis")
|
||||
private String untMis;
|
||||
@SerializedName("causale")
|
||||
private Integer causale;
|
||||
@SerializedName("utente")
|
||||
private String utente;
|
||||
@SerializedName("codAnagDoc")
|
||||
private String codAnagDoc;
|
||||
@SerializedName("codDtipDoc")
|
||||
private String codDtipDoc;
|
||||
private String dataDoc;
|
||||
@SerializedName("dataDoc")
|
||||
private LocalDate dataDoc;
|
||||
@SerializedName("serDoc")
|
||||
private String serDoc;
|
||||
@SerializedName("numDoc")
|
||||
private Integer numDoc;
|
||||
@SerializedName("idRigaDoc")
|
||||
private Integer idRigaDoc;
|
||||
|
||||
@SerializedName("pesoNettoKg")
|
||||
private BigDecimal pesoNettoKg;
|
||||
@SerializedName("pesoLordoKg")
|
||||
private BigDecimal pesoLordoKg;
|
||||
|
||||
@SerializedName("barcodeUlIn")
|
||||
private String barcodeUlIn;
|
||||
@SerializedName("barcodeUlOut")
|
||||
private String barcodeUlOut;
|
||||
@SerializedName("codMdepIn")
|
||||
private String codMdepIn;
|
||||
@SerializedName("codMdepOut")
|
||||
private String codMdepOut;
|
||||
@SerializedName("posizioneIn")
|
||||
private String posizioneIn;
|
||||
@SerializedName("posizioneOut")
|
||||
private String posizioneOut;
|
||||
|
||||
@SerializedName("mtbAart")
|
||||
private MtbAart mtbAart;
|
||||
@SerializedName("mtbPartitaMag")
|
||||
private MtbPartitaMag mtbPartitaMag;
|
||||
|
||||
|
||||
@@ -67,6 +128,97 @@ public class MtbColr extends EntityBase {
|
||||
}
|
||||
}
|
||||
|
||||
public MtbColr(MtbColr other) {
|
||||
this();
|
||||
|
||||
this.gestione = other.gestione;
|
||||
this.serCollo = other.serCollo;
|
||||
this.numCollo = other.numCollo;
|
||||
this.dataCollo = other.dataCollo;
|
||||
this.riga = other.riga;
|
||||
this.rigaOrd = other.rigaOrd;
|
||||
this.codMart = other.codMart;
|
||||
this.codBarre = other.codBarre;
|
||||
this.codCol = other.codCol;
|
||||
this.codTagl = other.codTagl;
|
||||
this.partitaMag = other.partitaMag;
|
||||
this.gestioneRif = other.gestioneRif;
|
||||
this.serColloRif = other.serColloRif;
|
||||
this.note = other.note;
|
||||
this.dataOrd = other.dataOrd; // LocalDate è immutabile
|
||||
this.dataColloRif = other.dataColloRif;
|
||||
this.qtaCnf = other.qtaCnf; // BigDecimal è immutabile
|
||||
this.qtaCol = other.qtaCol;
|
||||
this.numOrd = other.numOrd;
|
||||
this.numEtich = other.numEtich;
|
||||
this.numColloRif = other.numColloRif;
|
||||
this.datetimeRow = other.datetimeRow;
|
||||
this.codJcom = other.codJcom;
|
||||
this.numCnf = other.numCnf;
|
||||
this.insPartitaMag = other.insPartitaMag;
|
||||
this.mtbPartitaMag_descrizione = other.mtbPartitaMag_descrizione;
|
||||
this.dataScadPartita = other.dataScadPartita;
|
||||
this.descrizione = other.descrizione;
|
||||
this.untMis = other.untMis;
|
||||
this.causale = other.causale;
|
||||
this.utente = other.utente;
|
||||
this.codAnagDoc = other.codAnagDoc;
|
||||
this.codDtipDoc = other.codDtipDoc;
|
||||
this.dataDoc = other.dataDoc;
|
||||
this.serDoc = other.serDoc;
|
||||
this.numDoc = other.numDoc;
|
||||
this.idRigaDoc = other.idRigaDoc;
|
||||
this.pesoNettoKg = other.pesoNettoKg;
|
||||
this.pesoLordoKg = other.pesoLordoKg;
|
||||
this.barcodeUlIn = other.barcodeUlIn;
|
||||
this.barcodeUlOut = other.barcodeUlOut;
|
||||
this.posizioneIn = other.posizioneIn;
|
||||
this.posizioneOut = other.posizioneOut;
|
||||
this.codMdepIn = other.codMdepIn;
|
||||
this.codMdepOut = other.codMdepOut;
|
||||
|
||||
// Deep copy degli oggetti complessi
|
||||
this.mtbAart = other.mtbAart != null ? new MtbAart(other.mtbAart) : null;
|
||||
this.mtbPartitaMag = other.mtbPartitaMag != null ? new MtbPartitaMag(other.mtbPartitaMag) : null;
|
||||
|
||||
// Non copiamo i campi transient
|
||||
// this.id = other.id;
|
||||
// this.refMtbColr = other.refMtbColr;
|
||||
}
|
||||
|
||||
public MtbColrKey getKey() {
|
||||
if (UtilityString.isNullOrEmpty(gestione) ||
|
||||
UtilityString.isNullOrEmpty(serCollo) ||
|
||||
getDataColloLD() == null ||
|
||||
numCollo == null ||
|
||||
riga == null)
|
||||
return null;
|
||||
|
||||
return new MtbColrKey(gestione, serCollo, getDataColloLD(), numCollo, riga);
|
||||
}
|
||||
|
||||
public DtbDoctKey getDocumentKey() {
|
||||
if (UtilityString.isNullOrEmpty(codAnagDoc) ||
|
||||
UtilityString.isNullOrEmpty(codDtipDoc) ||
|
||||
UtilityString.isNullOrEmpty(serDoc) ||
|
||||
dataDoc == null ||
|
||||
numDoc == null)
|
||||
return null;
|
||||
|
||||
return new DtbDoctKey(codAnagDoc, codDtipDoc, dataDoc, numDoc, serDoc);
|
||||
}
|
||||
|
||||
public DtbDocrKey getDocumentRowKey() {
|
||||
if (UtilityString.isNullOrEmpty(codAnagDoc) ||
|
||||
UtilityString.isNullOrEmpty(codDtipDoc) ||
|
||||
UtilityString.isNullOrEmpty(serDoc) ||
|
||||
dataDoc == null ||
|
||||
numDoc == null ||
|
||||
idRigaDoc == null)
|
||||
return null;
|
||||
|
||||
return new DtbDocrKey(codAnagDoc, codDtipDoc, dataDoc, numDoc, serDoc, idRigaDoc);
|
||||
}
|
||||
|
||||
public static class Causale {
|
||||
public static final int DEFAULT = 0;
|
||||
@@ -112,21 +264,18 @@ public class MtbColr extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataColloS() {
|
||||
|
||||
public LocalDate getDataColloLD() {
|
||||
return dataCollo;
|
||||
}
|
||||
|
||||
public Date getDataColloD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataColloS());
|
||||
}
|
||||
|
||||
public MtbColr setDataCollo(String dataCollo) {
|
||||
this.dataCollo = dataCollo;
|
||||
this.dataCollo = UtilityDate.recognizeLocalDateWithExceptionHandler(dataCollo);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColr setDataCollo(Date dataCollo) {
|
||||
setDataCollo(UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
|
||||
public MtbColr setDataCollo(LocalDate dataCollo) {
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -235,25 +384,24 @@ public class MtbColr extends EntityBase {
|
||||
}
|
||||
|
||||
public String getDataColloRifS() {
|
||||
return dataColloRif;
|
||||
return dataColloRif != null ? UtilityDate.COMMONS_DATE_FORMATS.DATE_DMY_SLASHED_FORMATTER.format(dataColloRif) : null;
|
||||
}
|
||||
|
||||
public Date getDataColloRifD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataColloRifS());
|
||||
}
|
||||
|
||||
public MtbColr setDataColloRif(String dataColloRif) {
|
||||
this.dataColloRif = dataColloRif;
|
||||
return this;
|
||||
public LocalDate getDataColloRifLD() {
|
||||
return dataColloRif;
|
||||
}
|
||||
|
||||
public MtbColr setDataColloRif(Date dataColloRif) {
|
||||
this.dataColloRif = UtilityDate.formatDate(dataColloRif, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
public MtbColr setDataColloRif(String dataColloRif) {
|
||||
this.dataColloRif = UtilityDate.recognizeLocalDateWithExceptionHandler(dataColloRif);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColr setDataColloRif(LocalDate dataColloRif) {
|
||||
this.dataColloRif = UtilityDate.formatDate(dataColloRif, UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
|
||||
this.dataColloRif = dataColloRif;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -302,26 +450,15 @@ public class MtbColr extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public String getDatetimeRowS() {
|
||||
public LocalDateTime getDatetimeRow() {
|
||||
return datetimeRow;
|
||||
}
|
||||
|
||||
public Date getDatetimeRowD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDatetimeRowS());
|
||||
}
|
||||
|
||||
public MtbColr setDatetimeRow(String datetimeRow) {
|
||||
public MtbColr setDatetimeRow(LocalDateTime datetimeRow) {
|
||||
this.datetimeRow = datetimeRow;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColr setDatetimeRow(Date datetimeRow) {
|
||||
this.datetimeRow = UtilityDate.formatDate(datetimeRow, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
@@ -443,11 +580,11 @@ public class MtbColr extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataDoc() {
|
||||
public LocalDate getDataDoc() {
|
||||
return dataDoc;
|
||||
}
|
||||
|
||||
public MtbColr setDataDoc(String dataDoc) {
|
||||
public MtbColr setDataDoc(LocalDate dataDoc) {
|
||||
this.dataDoc = dataDoc;
|
||||
return this;
|
||||
}
|
||||
@@ -514,4 +651,170 @@ public class MtbColr extends EntityBase {
|
||||
this.refMtbColr = refMtbColr;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataCollo() {
|
||||
return dataCollo;
|
||||
}
|
||||
|
||||
public LocalDate getDataColloRif() {
|
||||
return dataColloRif;
|
||||
}
|
||||
|
||||
|
||||
public String getBarcodeUlIn() {
|
||||
return barcodeUlIn;
|
||||
}
|
||||
|
||||
public MtbColr setBarcodeUlIn(String barcodeUlIn) {
|
||||
this.barcodeUlIn = barcodeUlIn;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBarcodeUlOut() {
|
||||
return barcodeUlOut;
|
||||
}
|
||||
|
||||
public MtbColr setBarcodeUlOut(String barcodeUlOut) {
|
||||
this.barcodeUlOut = barcodeUlOut;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMdepIn() {
|
||||
return codMdepIn;
|
||||
}
|
||||
|
||||
public MtbColr setCodMdepIn(String codMdepIn) {
|
||||
this.codMdepIn = codMdepIn;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMdepOut() {
|
||||
return codMdepOut;
|
||||
}
|
||||
|
||||
public MtbColr setCodMdepOut(String codMdepOut) {
|
||||
this.codMdepOut = codMdepOut;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPosizioneIn() {
|
||||
return posizioneIn;
|
||||
}
|
||||
|
||||
public MtbColr setPosizioneIn(String posizioneIn) {
|
||||
this.posizioneIn = posizioneIn;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPosizioneOut() {
|
||||
return posizioneOut;
|
||||
}
|
||||
|
||||
public MtbColr setPosizioneOut(String posizioneOut) {
|
||||
this.posizioneOut = posizioneOut;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
MtbColr mtbColr = (MtbColr) o;
|
||||
return Objects.equals(getGestione(), mtbColr.getGestione()) &&
|
||||
Objects.equals(getSerCollo(), mtbColr.getSerCollo()) &&
|
||||
Objects.equals(getNumCollo(), mtbColr.getNumCollo()) &&
|
||||
Objects.equals(getDataCollo(), mtbColr.getDataCollo()) &&
|
||||
Objects.equals(getRiga(), mtbColr.getRiga()) &&
|
||||
Objects.equals(getRigaOrd(), mtbColr.getRigaOrd()) &&
|
||||
Objects.equals(getCodMart(), mtbColr.getCodMart()) &&
|
||||
Objects.equals(getCodBarre(), mtbColr.getCodBarre()) &&
|
||||
Objects.equals(getCodCol(), mtbColr.getCodCol()) &&
|
||||
Objects.equals(getCodTagl(), mtbColr.getCodTagl()) &&
|
||||
Objects.equals(getPartitaMag(), mtbColr.getPartitaMag()) &&
|
||||
Objects.equals(getGestioneRif(), mtbColr.getGestioneRif()) &&
|
||||
Objects.equals(getSerColloRif(), mtbColr.getSerColloRif()) &&
|
||||
Objects.equals(getNote(), mtbColr.getNote()) &&
|
||||
Objects.equals(getDataOrd(), mtbColr.getDataOrd()) &&
|
||||
Objects.equals(getDataColloRif(), mtbColr.getDataColloRif()) &&
|
||||
Objects.equals(getQtaCnf(), mtbColr.getQtaCnf()) &&
|
||||
Objects.equals(getQtaCol(), mtbColr.getQtaCol()) &&
|
||||
Objects.equals(getNumOrd(), mtbColr.getNumOrd()) &&
|
||||
Objects.equals(getNumEtich(), mtbColr.getNumEtich()) &&
|
||||
Objects.equals(getNumColloRif(), mtbColr.getNumColloRif()) &&
|
||||
Objects.equals(getDatetimeRow(), mtbColr.getDatetimeRow()) &&
|
||||
Objects.equals(getCodJcom(), mtbColr.getCodJcom()) &&
|
||||
Objects.equals(getNumCnf(), mtbColr.getNumCnf()) &&
|
||||
Objects.equals(getInsPartitaMag(), mtbColr.getInsPartitaMag()) &&
|
||||
Objects.equals(getMtbPartitaMag_descrizione(), mtbColr.getMtbPartitaMag_descrizione()) &&
|
||||
Objects.equals(getDataScadPartita(), mtbColr.getDataScadPartita()) &&
|
||||
Objects.equals(getDescrizione(), mtbColr.getDescrizione()) &&
|
||||
Objects.equals(getUntMis(), mtbColr.getUntMis()) &&
|
||||
Objects.equals(getCausale(), mtbColr.getCausale()) &&
|
||||
Objects.equals(getUtente(), mtbColr.getUtente()) &&
|
||||
Objects.equals(getCodAnagDoc(), mtbColr.getCodAnagDoc()) &&
|
||||
Objects.equals(getCodDtipDoc(), mtbColr.getCodDtipDoc()) &&
|
||||
Objects.equals(getDataDoc(), mtbColr.getDataDoc()) &&
|
||||
Objects.equals(getSerDoc(), mtbColr.getSerDoc()) &&
|
||||
Objects.equals(getNumDoc(), mtbColr.getNumDoc()) &&
|
||||
Objects.equals(getIdRigaDoc(), mtbColr.getIdRigaDoc()) &&
|
||||
Objects.equals(getPesoNettoKg(), mtbColr.getPesoNettoKg()) &&
|
||||
Objects.equals(getPesoLordoKg(), mtbColr.getPesoLordoKg()) &&
|
||||
Objects.equals(getBarcodeUlIn(), mtbColr.getBarcodeUlIn()) &&
|
||||
Objects.equals(getBarcodeUlOut(), mtbColr.getBarcodeUlOut()) &&
|
||||
Objects.equals(getCodMdepIn(), mtbColr.getCodMdepIn()) &&
|
||||
Objects.equals(getCodMdepOut(), mtbColr.getCodMdepOut()) &&
|
||||
Objects.equals(getPosizioneIn(), mtbColr.getPosizioneIn()) &&
|
||||
Objects.equals(getPosizioneOut(), mtbColr.getPosizioneOut());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = Objects.hashCode(getGestione());
|
||||
result = 31 * result + Objects.hashCode(getSerCollo());
|
||||
result = 31 * result + Objects.hashCode(getNumCollo());
|
||||
result = 31 * result + Objects.hashCode(getDataCollo());
|
||||
result = 31 * result + Objects.hashCode(getRiga());
|
||||
result = 31 * result + Objects.hashCode(getRigaOrd());
|
||||
result = 31 * result + Objects.hashCode(getCodMart());
|
||||
result = 31 * result + Objects.hashCode(getCodBarre());
|
||||
result = 31 * result + Objects.hashCode(getCodCol());
|
||||
result = 31 * result + Objects.hashCode(getCodTagl());
|
||||
result = 31 * result + Objects.hashCode(getPartitaMag());
|
||||
result = 31 * result + Objects.hashCode(getGestioneRif());
|
||||
result = 31 * result + Objects.hashCode(getSerColloRif());
|
||||
result = 31 * result + Objects.hashCode(getNote());
|
||||
result = 31 * result + Objects.hashCode(getDataOrd());
|
||||
result = 31 * result + Objects.hashCode(getDataColloRif());
|
||||
result = 31 * result + Objects.hashCode(getQtaCnf());
|
||||
result = 31 * result + Objects.hashCode(getQtaCol());
|
||||
result = 31 * result + Objects.hashCode(getNumOrd());
|
||||
result = 31 * result + Objects.hashCode(getNumEtich());
|
||||
result = 31 * result + Objects.hashCode(getNumColloRif());
|
||||
result = 31 * result + Objects.hashCode(getDatetimeRow());
|
||||
result = 31 * result + Objects.hashCode(getCodJcom());
|
||||
result = 31 * result + Objects.hashCode(getNumCnf());
|
||||
result = 31 * result + Objects.hashCode(getInsPartitaMag());
|
||||
result = 31 * result + Objects.hashCode(getMtbPartitaMag_descrizione());
|
||||
result = 31 * result + Objects.hashCode(getDataScadPartita());
|
||||
result = 31 * result + Objects.hashCode(getDescrizione());
|
||||
result = 31 * result + Objects.hashCode(getUntMis());
|
||||
result = 31 * result + Objects.hashCode(getCausale());
|
||||
result = 31 * result + Objects.hashCode(getUtente());
|
||||
result = 31 * result + Objects.hashCode(getCodAnagDoc());
|
||||
result = 31 * result + Objects.hashCode(getCodDtipDoc());
|
||||
result = 31 * result + Objects.hashCode(getDataDoc());
|
||||
result = 31 * result + Objects.hashCode(getSerDoc());
|
||||
result = 31 * result + Objects.hashCode(getNumDoc());
|
||||
result = 31 * result + Objects.hashCode(getIdRigaDoc());
|
||||
result = 31 * result + Objects.hashCode(getPesoNettoKg());
|
||||
result = 31 * result + Objects.hashCode(getPesoLordoKg());
|
||||
result = 31 * result + Objects.hashCode(getBarcodeUlIn());
|
||||
result = 31 * result + Objects.hashCode(getBarcodeUlOut());
|
||||
result = 31 * result + Objects.hashCode(getCodMdepIn());
|
||||
result = 31 * result + Objects.hashCode(getCodMdepOut());
|
||||
result = 31 * result + Objects.hashCode(getPosizioneIn());
|
||||
result = 31 * result + Objects.hashCode(getPosizioneOut());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,13 @@ package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -17,12 +19,13 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
|
||||
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
|
||||
import it.integry.integrywmsnative.core.model.key.MtbColtKey;
|
||||
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
/**
|
||||
@@ -30,47 +33,103 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
*/
|
||||
|
||||
public class MtbColt extends EntityBase {
|
||||
@SerializedName("gestione")
|
||||
private String gestione;
|
||||
private String dataCollo;
|
||||
@SerializedName("dataCollo")
|
||||
private LocalDate dataCollo;
|
||||
@SerializedName("serCollo")
|
||||
private String serCollo;
|
||||
@SerializedName("numCollo")
|
||||
private Integer numCollo;
|
||||
@SerializedName("rifOrd")
|
||||
private String rifOrd;
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
@SerializedName("codVdes")
|
||||
private String codVdes;
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
@SerializedName("codVlis")
|
||||
private String codVlis;
|
||||
@SerializedName("codDtip")
|
||||
private String codDtip;
|
||||
@SerializedName("codTcol")
|
||||
private String codTcol;
|
||||
@SerializedName("serDoc")
|
||||
private String serDoc;
|
||||
@SerializedName("filtroOrdini")
|
||||
private String filtroOrdini;
|
||||
@SerializedName("preparatoDa")
|
||||
private String preparatoDa;
|
||||
@SerializedName("annotazioni")
|
||||
private String annotazioni;
|
||||
@SerializedName("posizione")
|
||||
private String posizione;
|
||||
@SerializedName("codDtipProvv")
|
||||
private String codDtipProvv;
|
||||
@SerializedName("serDocProvv")
|
||||
private String serDocProvv;
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
@SerializedName("dataOrd")
|
||||
private String dataOrd;
|
||||
private String dataDoc;
|
||||
@SerializedName("dataDoc")
|
||||
private LocalDate dataDoc;
|
||||
@SerializedName("oraInizPrep")
|
||||
private String oraInizPrep;
|
||||
@SerializedName("oraFinePrep")
|
||||
private String oraFinePrep;
|
||||
@SerializedName("dataDocProvv")
|
||||
private String dataDocProvv;
|
||||
@SerializedName("dataVers")
|
||||
private String dataVers;
|
||||
@SerializedName("segno")
|
||||
private Integer segno;
|
||||
@SerializedName("numOrd")
|
||||
private Integer numOrd;
|
||||
@SerializedName("numDoc")
|
||||
private Integer numDoc;
|
||||
@SerializedName("numDocProvv")
|
||||
private Integer numDocProvv;
|
||||
@SerializedName("pesoKg")
|
||||
private BigDecimal pesoKg;
|
||||
@SerializedName("pesoNettoKg")
|
||||
private BigDecimal pesoNettoKg;
|
||||
@SerializedName("lunghezzaCm")
|
||||
private BigDecimal lunghezzaCm;
|
||||
@SerializedName("larghezzaCm")
|
||||
private BigDecimal larghezzaCm;
|
||||
@SerializedName("altezzaCm")
|
||||
private BigDecimal altezzaCm;
|
||||
@SerializedName("codJcom")
|
||||
private String codJcom;
|
||||
|
||||
private final ObservableField<ObservableMtbTcol> mtbTCol = new ObservableField<>();
|
||||
@SerializedName("barcodeUl")
|
||||
private String barcodeUl;
|
||||
|
||||
@SerializedName("progressivoUl")
|
||||
private Integer progressivoUl;
|
||||
|
||||
private final transient MutableLiveData<ObservableMtbTcol> mtbTCol = new MutableLiveData<>();
|
||||
|
||||
@SerializedName("disablePrint")
|
||||
private Boolean disablePrint;
|
||||
@SerializedName("ragSocCliente")
|
||||
private String ragSocCliente;
|
||||
|
||||
@SerializedName("descrizioneAnomalia")
|
||||
private String descrizioneAnomalia;
|
||||
|
||||
@SerializedName("descrizioneLivelloAnomalia")
|
||||
private String descrizioneLivelloAnomalia;
|
||||
|
||||
@SerializedName("escludiPickingVendita")
|
||||
private Boolean escludiPickingVendita;
|
||||
|
||||
@SerializedName("escludiPickingLavorazione")
|
||||
private Boolean escludiPickingLavorazione;
|
||||
|
||||
@SerializedName("mtbColr")
|
||||
private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>();
|
||||
|
||||
public ObservableArrayList<MtbColr> getMtbColr() {
|
||||
@@ -84,7 +143,7 @@ public class MtbColt extends EntityBase {
|
||||
|
||||
public MtbColt() {
|
||||
type = "mtb_colt";
|
||||
setDataCollo(UtilityDate.getDateInstance());
|
||||
setDataCollo(LocalDate.now());
|
||||
setSerCollo("/");
|
||||
|
||||
if (SettingsManager.i().isUserLoggedIn()) {
|
||||
@@ -92,6 +151,27 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
}
|
||||
|
||||
public MtbColtKey getKey() {
|
||||
if (UtilityString.isNullOrEmpty(gestione) ||
|
||||
UtilityString.isNullOrEmpty(serCollo) ||
|
||||
getDataColloLD() == null ||
|
||||
numCollo == null)
|
||||
return null;
|
||||
|
||||
return new MtbColtKey(gestione, serCollo, getDataColloLD(), numCollo);
|
||||
}
|
||||
|
||||
public DtbDoctKey getDocumentKey() {
|
||||
if (UtilityString.isNullOrEmpty(codAnag) ||
|
||||
UtilityString.isNullOrEmpty(codDtip) ||
|
||||
UtilityString.isNullOrEmpty(serDoc) ||
|
||||
dataDoc == null ||
|
||||
numDoc == null)
|
||||
return null;
|
||||
|
||||
return new DtbDoctKey(codAnag, codDtip, dataDoc, numDoc, serDoc);
|
||||
}
|
||||
|
||||
public MtbColt initDefaultFields(GestioneEnum gestioneEnum) {
|
||||
setGestione(gestioneEnum);
|
||||
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
||||
@@ -143,20 +223,13 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
|
||||
public String getDataColloHumanLong() {
|
||||
Date dataColloD = null;
|
||||
try {
|
||||
dataColloD = getDataColloD();
|
||||
} catch (Exception ex) {
|
||||
UtilityLogger.error(ex);
|
||||
}
|
||||
|
||||
if (dataColloD != null) {
|
||||
return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN_LONG);
|
||||
if (dataCollo != null) {
|
||||
return UtilityDate.COMMONS_DATE_FORMATS.DATE_DMY_HUMAN_FORMATTER.format(dataCollo);
|
||||
} else return null;
|
||||
}
|
||||
|
||||
public String getDataColloS() {
|
||||
return dataCollo;
|
||||
return dataCollo != null ? UtilityDate.COMMONS_DATE_FORMATS.DATE_DMY_SLASHED_FORMATTER.format(dataCollo) : null;
|
||||
}
|
||||
|
||||
public Date getDataColloD() {
|
||||
@@ -164,21 +237,16 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
|
||||
public LocalDate getDataColloLD() {
|
||||
return UtilityDate.recognizeLocalDateWithExceptionHandler(getDataColloS());
|
||||
return dataCollo;
|
||||
}
|
||||
|
||||
public MtbColt setDataCollo(String dataCollo) {
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt setDataCollo(Date dataCollo) {
|
||||
this.dataCollo = UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
this.dataCollo = UtilityDate.recognizeLocalDateWithExceptionHandler(dataCollo);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt setDataCollo(LocalDate dataCollo) {
|
||||
this.dataCollo = UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -261,7 +329,7 @@ public class MtbColt extends EntityBase {
|
||||
public MtbColt setCodTcol(String codTcol) {
|
||||
this.codTcol = codTcol;
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(codTcol)) {
|
||||
if (!UtilityString.isNullOrEmpty(codTcol)) {
|
||||
var fountMtbTcolObservable = SettingsManager.iDB().getInternalImballi().stream()
|
||||
.filter(x -> x.getCodTcol().equalsIgnoreCase(codTcol))
|
||||
.findFirst()
|
||||
@@ -349,6 +417,10 @@ public class MtbColt extends EntityBase {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrd());
|
||||
}
|
||||
|
||||
public LocalDate getDataOrdLD() {
|
||||
return UtilityDate.recognizeLocalDateWithExceptionHandler(getDataOrd());
|
||||
}
|
||||
|
||||
public String getDataOrd() {
|
||||
return dataOrd;
|
||||
}
|
||||
@@ -359,15 +431,15 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
|
||||
public MtbColt setDataOrdD(Date dataOrd) {
|
||||
this.dataOrd = UtilityDate.formatDate(dataOrd, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
this.dataOrd = UtilityDate.formatDate(dataOrd, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataDoc() {
|
||||
public LocalDate getDataDoc() {
|
||||
return dataDoc;
|
||||
}
|
||||
|
||||
public MtbColt setDataDoc(String dataDoc) {
|
||||
public MtbColt setDataDoc(LocalDate dataDoc) {
|
||||
this.dataDoc = dataDoc;
|
||||
return this;
|
||||
}
|
||||
@@ -382,7 +454,7 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
|
||||
public MtbColt setOraInizPrep(Date oraInizPrep) {
|
||||
this.oraInizPrep = UtilityDate.formatDate(oraInizPrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
this.oraInizPrep = UtilityDate.formatDate(oraInizPrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -396,7 +468,7 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
|
||||
public MtbColt setOraFinePrep(Date oraFinePrep) {
|
||||
this.oraFinePrep = UtilityDate.formatDate(oraFinePrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
this.oraFinePrep = UtilityDate.formatDate(oraFinePrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -432,7 +504,7 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
|
||||
public MtbColt setDataVers(Date dataVers) {
|
||||
this.dataVers = UtilityDate.formatDate(dataVers, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
this.dataVers = UtilityDate.formatDate(dataVers, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -535,6 +607,42 @@ public class MtbColt extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneAnomalia() {
|
||||
return descrizioneAnomalia;
|
||||
}
|
||||
|
||||
public MtbColt setDescrizioneAnomalia(String descrizioneAnomalia) {
|
||||
this.descrizioneAnomalia = descrizioneAnomalia;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneLivelloAnomalia() {
|
||||
return descrizioneLivelloAnomalia;
|
||||
}
|
||||
|
||||
public MtbColt setDescrizioneLivelloAnomalia(String descrizioneLivelloAnomalia) {
|
||||
this.descrizioneLivelloAnomalia = descrizioneLivelloAnomalia;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Boolean getEscludiPickingVendita() {
|
||||
return escludiPickingVendita;
|
||||
}
|
||||
|
||||
public MtbColt setEscludiPickingVendita(Boolean escludiPickingVendita) {
|
||||
this.escludiPickingVendita = escludiPickingVendita;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Boolean getEscludiPickingLavorazione() {
|
||||
return escludiPickingLavorazione;
|
||||
}
|
||||
|
||||
public MtbColt setEscludiPickingLavorazione(Boolean escludiPickingLavorazione) {
|
||||
this.escludiPickingLavorazione = escludiPickingLavorazione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
@@ -544,16 +652,34 @@ public class MtbColt extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ObservableMtbTcol getMtbTCol() {
|
||||
return mtbTCol.get();
|
||||
public String getBarcodeUl() {
|
||||
return barcodeUl;
|
||||
}
|
||||
|
||||
public MtbColt setMtbTCol(ObservableMtbTcol mtbTCol) {
|
||||
this.mtbTCol.set(mtbTCol);
|
||||
public MtbColt setBarcodeUl(String barcodeUl) {
|
||||
this.barcodeUl = barcodeUl;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ObservableField<ObservableMtbTcol> mtbTcolProperty() {
|
||||
public Integer getProgressivoUl() {
|
||||
return progressivoUl;
|
||||
}
|
||||
|
||||
public MtbColt setProgressivoUl(Integer progressivoUl) {
|
||||
this.progressivoUl = progressivoUl;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ObservableMtbTcol getMtbTCol() {
|
||||
return mtbTCol.getValue();
|
||||
}
|
||||
|
||||
public MtbColt setMtbTCol(ObservableMtbTcol mtbTCol) {
|
||||
this.mtbTCol.postValue(mtbTCol);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MutableLiveData<ObservableMtbTcol> mtbTcolProperty() {
|
||||
return mtbTCol;
|
||||
}
|
||||
|
||||
@@ -579,12 +705,12 @@ public class MtbColt extends EntityBase {
|
||||
try {
|
||||
String condition = (String.format("(d.g = %s AND d.d = %s and d.n = %s",
|
||||
UtilityDB.valueToString(filtroOrdineDTO.getGestioneOrd()),
|
||||
UtilityDB.valueToString(UtilityDate.formatDate(filtroOrdineDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)),
|
||||
UtilityDB.valueToString(filtroOrdineDTO.getDataOrd()),
|
||||
UtilityDB.valueToString(filtroOrdineDTO.getNumOrd())));
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(filtroOrdineDTO.getDataConsS())) {
|
||||
if (filtroOrdineDTO.getDataCons() != null) {
|
||||
condition += (String.format(" AND dr.dc = %s",
|
||||
UtilityDB.valueToString(UtilityDate.formatDate(filtroOrdineDTO.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))));
|
||||
UtilityDB.valueToString(filtroOrdineDTO.getDataCons())));
|
||||
}
|
||||
|
||||
condition += ")";
|
||||
@@ -629,10 +755,23 @@ public class MtbColt extends EntityBase {
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public EntityBase clone() {
|
||||
return clone(true);
|
||||
}
|
||||
|
||||
public MtbColt clone(boolean withMtbColr) {
|
||||
MtbColt mtbColt = (MtbColt) super.clone();
|
||||
mtbColt.setMtbColr((ObservableArrayList<MtbColr>) mtbColt.getMtbColr().clone());
|
||||
mtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
if(!withMtbColr) return mtbColt;
|
||||
|
||||
this.getMtbColr().stream()
|
||||
.map(MtbColr::new) //Genera un clone
|
||||
.forEach(mtbColr -> {
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
});
|
||||
return mtbColt;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,39 +1,65 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class MtbDepo extends EntityBase {
|
||||
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
@SerializedName("flagVal")
|
||||
private String flagVal;
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
@SerializedName("percDepo")
|
||||
private BigDecimal percDepo;
|
||||
@SerializedName("valDepo")
|
||||
private BigDecimal valDepo;
|
||||
@SerializedName("indirizzo")
|
||||
private String indirizzo;
|
||||
@SerializedName("cap")
|
||||
private String cap;
|
||||
@SerializedName("citta")
|
||||
private String citta;
|
||||
@SerializedName("prov")
|
||||
private String prov;
|
||||
@SerializedName("tel")
|
||||
private String tel;
|
||||
@SerializedName("nazione")
|
||||
private String nazione;
|
||||
@SerializedName("fax")
|
||||
private String fax;
|
||||
@SerializedName("eMail")
|
||||
private String eMail;
|
||||
@SerializedName("sitoWeb")
|
||||
private String sitoWeb;
|
||||
@SerializedName("codVdes")
|
||||
private String codVdes;
|
||||
@SerializedName("serie")
|
||||
private String serie;
|
||||
@SerializedName("flagMovimentabile")
|
||||
private String flagMovimentabile;
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
@SerializedName("codVlis")
|
||||
private String codVlis;
|
||||
@SerializedName("codCcau")
|
||||
private String codCcau;
|
||||
@SerializedName("codCcon")
|
||||
private String codCcon;
|
||||
@SerializedName("codDtip")
|
||||
private String codDtip;
|
||||
@SerializedName("codDtipFat")
|
||||
private String codDtipFat;
|
||||
@SerializedName("flagContoVendita")
|
||||
private String flagContoVendita;
|
||||
@SerializedName("flagTipoNegozio")
|
||||
private String flagTipoNegozio;
|
||||
@SerializedName("codMdepReso")
|
||||
private String codMdepReso;
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +1,30 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
public class MtbDepoPosizione {
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
@SerializedName("posizione")
|
||||
private String posizione;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
@SerializedName("flagMonoCollo")
|
||||
private String flagMonoCollo;
|
||||
@SerializedName("flagLineaProduzione")
|
||||
private String flagLineaProduzione;
|
||||
@SerializedName("priorita")
|
||||
private Integer priorita;
|
||||
|
||||
@SerializedName("tipoMagazAutomatico")
|
||||
private String tipoMagazAutomatico;
|
||||
|
||||
|
||||
|
||||
public MtbDepoPosizione clone() {
|
||||
try {
|
||||
return (MtbDepoPosizione) super.clone();
|
||||
@@ -27,6 +36,18 @@ public class MtbDepoPosizione {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
MtbDepoPosizione that = (MtbDepoPosizione) o;
|
||||
return Objects.equals(getCodMdep(), that.getCodMdep()) && Objects.equals(getPosizione(), that.getPosizione()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(isFlagMonoCollo(), that.isFlagMonoCollo()) && Objects.equals(isFlagLineaProduzione(), that.isFlagLineaProduzione()) && Objects.equals(getPriorita(), that.getPriorita()) && Objects.equals(getTipoMagazAutomatico(), that.getTipoMagazAutomatico());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getCodMdep(), getPosizione(), getDescrizione(), isFlagMonoCollo(), isFlagLineaProduzione(), getPriorita(), getTipoMagazAutomatico());
|
||||
}
|
||||
|
||||
public String getCodMdep() {
|
||||
return codMdep;
|
||||
}
|
||||
@@ -101,4 +122,5 @@ public class MtbDepoPosizione {
|
||||
public boolean isMagazzinoAutomatico() {
|
||||
return !UtilityString.isNullOrEmpty(getTipoMagazAutomatico());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,24 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MtbGrup extends EntityBase {
|
||||
|
||||
@SerializedName("codMgrp")
|
||||
private String codMgrp;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
@SerializedName("flagValMag")
|
||||
private String flagValMag;
|
||||
@SerializedName("logoWeb")
|
||||
private String logoWeb;
|
||||
@SerializedName("criterioVal")
|
||||
private String criterioVal;
|
||||
@SerializedName("tipoMgrp")
|
||||
private String tipoMgrp;
|
||||
@SerializedName("mtbSgrp")
|
||||
private List<MtbSgrp> mtbSgrp = new ArrayList<>();
|
||||
|
||||
public MtbGrup() {
|
||||
|
||||
@@ -1,31 +1,53 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
public class MtbInvenr extends EntityBase {
|
||||
|
||||
@SerializedName("idInventario")
|
||||
private Long idInventario;
|
||||
@SerializedName("idRiga")
|
||||
private Integer idRiga;
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
@SerializedName("codCol")
|
||||
private String codCol;
|
||||
@SerializedName("codTagl")
|
||||
private String codTagl;
|
||||
@SerializedName("qtaInv")
|
||||
private BigDecimal qtaInv;
|
||||
@SerializedName("dataOraInv")
|
||||
private LocalDateTime dataOraInv;
|
||||
@SerializedName("costoInv")
|
||||
private BigDecimal costoInv;
|
||||
@SerializedName("giacenzaConf")
|
||||
private BigDecimal giacenzaConf;
|
||||
@SerializedName("giacenzaDb")
|
||||
private BigDecimal giacenzaDb;
|
||||
@SerializedName("idDisp")
|
||||
private String idDisp;
|
||||
@SerializedName("dataCreate")
|
||||
private Date dataCreate;
|
||||
@SerializedName("numConf")
|
||||
private BigDecimal numConf;
|
||||
@SerializedName("partitaMag")
|
||||
private String partitaMag;
|
||||
@SerializedName("scanCodBarre")
|
||||
private String scanCodBarre;
|
||||
@SerializedName("zona")
|
||||
private String zona;
|
||||
@SerializedName("dataInventario")
|
||||
private Date dataInventario;
|
||||
@SerializedName("regolaCalcoloCosto")
|
||||
private String regolaCalcoloCosto;
|
||||
@SerializedName("dataScadPartitaMag")
|
||||
private Date dataScadPartitaMag;
|
||||
@SerializedName("mtbPartitaMag")
|
||||
private MtbPartitaMag mtbPartitaMag;
|
||||
|
||||
public MtbInvenr() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
@@ -7,29 +8,53 @@ import java.util.List;
|
||||
|
||||
public class MtbInvent extends EntityBase {
|
||||
|
||||
@SerializedName("idInventario")
|
||||
private Long idInventario;
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
@SerializedName("dataInventario")
|
||||
private LocalDate dataInventario;
|
||||
@SerializedName("dataReg")
|
||||
private LocalDateTime dataReg;
|
||||
@SerializedName("dataVer")
|
||||
private LocalDateTime dataVer;
|
||||
@SerializedName("filtro")
|
||||
private String filtro;
|
||||
@SerializedName("flagStato")
|
||||
private String flagStato;
|
||||
@SerializedName("flagOperazione")
|
||||
private String flagOperazione;
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
@SerializedName("codDtip")
|
||||
private String codDtip;
|
||||
@SerializedName("inseritoDa")
|
||||
private String inseritoDa;
|
||||
@SerializedName("registratoDa")
|
||||
private String registratoDa;
|
||||
@SerializedName("tipoGiacenza")
|
||||
private String tipoGiacenza;
|
||||
@SerializedName("tipoVerifica")
|
||||
private String tipoVerifica;
|
||||
@SerializedName("verificatoDa")
|
||||
private String verificatoDa;
|
||||
@SerializedName("dataIns")
|
||||
private Date dataIns;
|
||||
@SerializedName("dataDoc")
|
||||
private Date dataDoc;
|
||||
@SerializedName("serDoc")
|
||||
private String serDoc;
|
||||
@SerializedName("numDoc")
|
||||
private Integer numDoc;
|
||||
@SerializedName("regolaCalcoloCosto")
|
||||
private String regolaCalcoloCosto;
|
||||
@SerializedName("dataOraInizio")
|
||||
private LocalDateTime dataOraInizio;
|
||||
@SerializedName("dataOraFine")
|
||||
private LocalDateTime dataOraFine;
|
||||
@SerializedName("causale")
|
||||
private String causale;
|
||||
@SerializedName("mtbInvenr")
|
||||
private List<MtbInvenr> mtbInvenr;
|
||||
|
||||
public MtbInvent() {
|
||||
|
||||
@@ -1,37 +1,107 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
public class MtbPartitaMag extends EntityBase{
|
||||
private String codMart;
|
||||
|
||||
private String partitaMag;
|
||||
private String descrizione;
|
||||
public class MtbPartitaMag extends EntityBase {
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
|
||||
@SerializedName("partitaMag")
|
||||
private String partitaMag;
|
||||
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
|
||||
@SerializedName("dataIns")
|
||||
private LocalDateTime dataIns;
|
||||
|
||||
@SerializedName("dataScad")
|
||||
private LocalDate dataScad;
|
||||
private Integer scelta;
|
||||
|
||||
@SerializedName("scelta")
|
||||
private Integer scelta;
|
||||
|
||||
@SerializedName("costoUntUmMag")
|
||||
private BigDecimal costoUntUmMag;
|
||||
private BigDecimal valUntUmMag;
|
||||
private BigDecimal taraCnfKg;
|
||||
private BigDecimal qtaCnf;
|
||||
private String flagImballoArendere;
|
||||
private String flagStato;
|
||||
private String codDiviCont;
|
||||
private BigDecimal cambioDiviCont;
|
||||
private String barcode;
|
||||
private String note;
|
||||
private BigDecimal rapConv2;
|
||||
private BigDecimal rapConv3;
|
||||
private String posizione;
|
||||
|
||||
@SerializedName("valUntUmMag")
|
||||
private BigDecimal valUntUmMag;
|
||||
|
||||
@SerializedName("taraCnfKg")
|
||||
private BigDecimal taraCnfKg;
|
||||
|
||||
@SerializedName("qtaCnf")
|
||||
private BigDecimal qtaCnf;
|
||||
|
||||
@SerializedName("flagImballoArendere")
|
||||
private String flagImballoArendere;
|
||||
|
||||
@SerializedName("flagStato")
|
||||
private String flagStato;
|
||||
|
||||
@SerializedName("codDiviCont")
|
||||
private String codDiviCont;
|
||||
|
||||
@SerializedName("cambioDiviCont")
|
||||
private BigDecimal cambioDiviCont;
|
||||
|
||||
@SerializedName("barcode")
|
||||
private String barcode;
|
||||
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
|
||||
@SerializedName("rapConv2")
|
||||
private BigDecimal rapConv2;
|
||||
|
||||
@SerializedName("rapConv3")
|
||||
private BigDecimal rapConv3;
|
||||
|
||||
@SerializedName("posizione")
|
||||
private String posizione;
|
||||
|
||||
@SerializedName("dataAggPrz")
|
||||
private String dataAggPrz;
|
||||
private String partitaMagSec;
|
||||
|
||||
@SerializedName("partitaMagSec")
|
||||
private String partitaMagSec;
|
||||
|
||||
@SerializedName("qtaAttesa")
|
||||
private BigDecimal qtaAttesa;
|
||||
|
||||
public MtbPartitaMag() {
|
||||
this.type = "mtb_partita_mag";
|
||||
}
|
||||
public MtbPartitaMag(MtbPartitaMag other) {
|
||||
this();
|
||||
|
||||
this.codMart = other.codMart;
|
||||
this.partitaMag = other.partitaMag;
|
||||
this.descrizione = other.descrizione;
|
||||
this.dataIns = other.dataIns; // LocalDateTime è immutabile
|
||||
this.dataScad = other.dataScad; // LocalDate è immutabile
|
||||
this.scelta = other.scelta;
|
||||
this.costoUntUmMag = other.costoUntUmMag; // BigDecimal è immutabile
|
||||
this.valUntUmMag = other.valUntUmMag;
|
||||
this.taraCnfKg = other.taraCnfKg;
|
||||
this.qtaCnf = other.qtaCnf;
|
||||
this.flagImballoArendere = other.flagImballoArendere;
|
||||
this.flagStato = other.flagStato;
|
||||
this.codDiviCont = other.codDiviCont;
|
||||
this.cambioDiviCont = other.cambioDiviCont;
|
||||
this.barcode = other.barcode;
|
||||
this.note = other.note;
|
||||
this.rapConv2 = other.rapConv2;
|
||||
this.rapConv3 = other.rapConv3;
|
||||
this.posizione = other.posizione;
|
||||
this.dataAggPrz = other.dataAggPrz;
|
||||
this.partitaMagSec = other.partitaMagSec;
|
||||
this.qtaAttesa = other.qtaAttesa;
|
||||
}
|
||||
|
||||
|
||||
public String getCodMart() {
|
||||
@@ -231,4 +301,17 @@ public class MtbPartitaMag extends EntityBase{
|
||||
this.qtaAttesa = qtaAttesa;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
MtbPartitaMag that = (MtbPartitaMag) o;
|
||||
return Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getPartitaMag(), that.getPartitaMag()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(getDataIns(), that.getDataIns()) && Objects.equals(getDataScad(), that.getDataScad()) && Objects.equals(getScelta(), that.getScelta()) && Objects.equals(getCostoUntUmMag(), that.getCostoUntUmMag()) && Objects.equals(getValUntUmMag(), that.getValUntUmMag()) && Objects.equals(getTaraCnfKg(), that.getTaraCnfKg()) && Objects.equals(getQtaCnf(), that.getQtaCnf()) && Objects.equals(getFlagImballoArendere(), that.getFlagImballoArendere()) && Objects.equals(getFlagStato(), that.getFlagStato()) && Objects.equals(getCodDiviCont(), that.getCodDiviCont()) && Objects.equals(getCambioDiviCont(), that.getCambioDiviCont()) && Objects.equals(getBarcode(), that.getBarcode()) && Objects.equals(getNote(), that.getNote()) && Objects.equals(getRapConv2(), that.getRapConv2()) && Objects.equals(getRapConv3(), that.getRapConv3()) && Objects.equals(getPosizione(), that.getPosizione()) && Objects.equals(getDataAggPrz(), that.getDataAggPrz()) && Objects.equals(getPartitaMagSec(), that.getPartitaMagSec()) && Objects.equals(getQtaAttesa(), that.getQtaAttesa());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getCodMart(), getPartitaMag(), getDescrizione(), getDataIns(), getDataScad(), getScelta(), getCostoUntUmMag(), getValUntUmMag(), getTaraCnfKg(), getQtaCnf(), getFlagImballoArendere(), getFlagStato(), getCodDiviCont(), getCambioDiviCont(), getBarcode(), getNote(), getRapConv2(), getRapConv3(), getPosizione(), getDataAggPrz(), getPartitaMagSec(), getQtaAttesa());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,20 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public class MtbSfam extends EntityBase {
|
||||
|
||||
|
||||
@SerializedName("codMgrp")
|
||||
private String codMgrp;
|
||||
|
||||
@SerializedName("codMsgr")
|
||||
private String codMsgr;
|
||||
|
||||
@SerializedName("codMsfa")
|
||||
private String codMsfa;
|
||||
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
|
||||
public MtbSfam() {
|
||||
|
||||
@@ -1,19 +1,40 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MtbSgrp extends EntityBase {
|
||||
|
||||
|
||||
@SerializedName("codMgrp")
|
||||
private String codMgrp;
|
||||
|
||||
@SerializedName("codMsgr")
|
||||
private String codMsgr;
|
||||
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
|
||||
@SerializedName("inclInStat")
|
||||
private String inclInStat;
|
||||
|
||||
@SerializedName("contoRimFin")
|
||||
private String contoRimFin;
|
||||
|
||||
@SerializedName("ordinamento")
|
||||
private Integer ordinamento;
|
||||
|
||||
@SerializedName("chkGiacenzaNeg")
|
||||
private Boolean chkGiacenzaNeg;
|
||||
|
||||
@SerializedName("flagReso")
|
||||
private Boolean flagReso;
|
||||
|
||||
@SerializedName("codCconWip")
|
||||
private String codCconWip;
|
||||
|
||||
@SerializedName("mtbSfam")
|
||||
private List<MtbSfam> mtbSfam = new ArrayList<>();
|
||||
|
||||
public MtbSgrp() {
|
||||
|
||||
@@ -4,20 +4,42 @@ import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class MtbTCol {
|
||||
|
||||
public class MtbTCol extends EntityBase {
|
||||
|
||||
@SerializedName("codTcol")
|
||||
private String codTcol;
|
||||
|
||||
@SerializedName("pesoKg")
|
||||
private BigDecimal pesoKg;
|
||||
|
||||
@SerializedName("lunghezzaCm")
|
||||
private BigDecimal lunghezzaCm;
|
||||
|
||||
@SerializedName("larghezzaCm")
|
||||
private BigDecimal larghezzaCm;
|
||||
|
||||
@SerializedName("altezzaCm")
|
||||
private BigDecimal altezzaCm;
|
||||
|
||||
@SerializedName("taraKg")
|
||||
private BigDecimal taraKg;
|
||||
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
|
||||
@SerializedName("flagUiUl")
|
||||
private FlagUiUlEnum flagUiUl;
|
||||
|
||||
@SerializedName("circuito")
|
||||
private String circuito;
|
||||
|
||||
public MtbTCol() {
|
||||
this.type = "mtb_tcol";
|
||||
}
|
||||
|
||||
public String getCodTcol() {
|
||||
return codTcol;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,26 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class MtbUntMis extends EntityBase {
|
||||
|
||||
@SerializedName("untMis")
|
||||
private String untMis;
|
||||
|
||||
@SerializedName("flagDig")
|
||||
private String flagDig;
|
||||
|
||||
@SerializedName("cifreDec")
|
||||
private BigDecimal cifreDec;
|
||||
|
||||
@SerializedName("tipoUm")
|
||||
private String tipoUm;
|
||||
|
||||
@SerializedName("flagUnitaKg")
|
||||
private String flagUnitaKg;
|
||||
|
||||
@SerializedName("flagAttivo")
|
||||
private String flagAttivo;
|
||||
|
||||
public MtbUntMis() {
|
||||
@@ -73,4 +85,20 @@ public class MtbUntMis extends EntityBase {
|
||||
this.flagAttivo = flagAttivo;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una copia dell'oggetto MtbUntMis corrente
|
||||
* @return Una nuova istanza di MtbUntMis con gli stessi valori
|
||||
*/
|
||||
@Override
|
||||
public MtbUntMis clone() {
|
||||
MtbUntMis clone = new MtbUntMis();
|
||||
clone.setUntMis(this.untMis);
|
||||
clone.setFlagDig(this.flagDig);
|
||||
clone.setCifreDec(this.cifreDec);
|
||||
clone.setTipoUm(this.tipoUm);
|
||||
clone.setFlagUnitaKg(this.flagUnitaKg);
|
||||
clone.setFlagAttivo(this.flagAttivo);
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
@@ -14,40 +17,111 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
public class MvwSitArtUdcDetInventario {
|
||||
|
||||
|
||||
@SerializedName("gestione")
|
||||
private String gestione;
|
||||
|
||||
@SerializedName("dataCollo")
|
||||
private LocalDate dataCollo;
|
||||
|
||||
@SerializedName("serCollo")
|
||||
private String serCollo;
|
||||
|
||||
@SerializedName("numCollo")
|
||||
private Integer numCollo;
|
||||
|
||||
@SerializedName("segno")
|
||||
private Integer segno;
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
|
||||
@SerializedName("posizione")
|
||||
private String posizione;
|
||||
|
||||
@SerializedName("priorita")
|
||||
private Integer priorita;
|
||||
|
||||
@SerializedName("codGruppo")
|
||||
private String codGruppo;
|
||||
|
||||
@SerializedName("gruppo")
|
||||
private String gruppo;
|
||||
|
||||
@SerializedName("codSgruppo")
|
||||
private String codSgruppo;
|
||||
|
||||
@SerializedName("sottogruppo")
|
||||
private String sottogruppo;
|
||||
|
||||
@SerializedName("codMart")
|
||||
private String codMart;
|
||||
|
||||
@SerializedName("diacod")
|
||||
private String diacod;
|
||||
|
||||
@SerializedName("descrizioneEstesa")
|
||||
private String descrizioneEstesa;
|
||||
|
||||
@SerializedName("partitaMag")
|
||||
private String partitaMag;
|
||||
|
||||
@SerializedName("dataScad")
|
||||
private LocalDate dataScad;
|
||||
|
||||
@SerializedName("codJcom")
|
||||
private String codJcom;
|
||||
|
||||
@SerializedName("commessa")
|
||||
private String commessa;
|
||||
|
||||
@SerializedName("untMis")
|
||||
private String untMis;
|
||||
|
||||
@SerializedName("qtaCol")
|
||||
private BigDecimal qtaCol;
|
||||
|
||||
@SerializedName("numCnf")
|
||||
private BigDecimal numCnf;
|
||||
|
||||
@SerializedName("qtaCnf")
|
||||
private BigDecimal qtaCnf;
|
||||
|
||||
@SerializedName("pesoNettoKg")
|
||||
private BigDecimal pesoNettoKg;
|
||||
|
||||
@SerializedName("pesoLordoKg")
|
||||
private BigDecimal pesoLordoKg;
|
||||
|
||||
@SerializedName("codJfas")
|
||||
private String codJfas;
|
||||
|
||||
@SerializedName("mtbAart")
|
||||
private MtbAart mtbAart;
|
||||
|
||||
@SerializedName("numOrd")
|
||||
private Integer numOrd;
|
||||
|
||||
@SerializedName("dataOrd")
|
||||
private Date dataOrd;
|
||||
|
||||
@SerializedName("barcodeUl")
|
||||
private String barcodeUl;
|
||||
|
||||
@SerializedName("progressivoUl")
|
||||
private Integer progressivoUl;
|
||||
|
||||
@SerializedName("datetimePosizionamento")
|
||||
private LocalDateTime datetimePosizionamento;
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public GestioneEnum getGestioneEnum() {
|
||||
return GestioneEnum.fromString(gestione);
|
||||
}
|
||||
|
||||
public MvwSitArtUdcDetInventario setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
@@ -302,11 +376,35 @@ public class MvwSitArtUdcDetInventario {
|
||||
return text;
|
||||
}
|
||||
|
||||
public String getBarcodeUl() {
|
||||
return barcodeUl;
|
||||
}
|
||||
|
||||
public void setBarcodeUl(String barcodeUl) {
|
||||
this.barcodeUl = barcodeUl;
|
||||
}
|
||||
|
||||
public Integer getProgressivoUl() {
|
||||
return progressivoUl;
|
||||
}
|
||||
|
||||
public void setProgressivoUl(Integer progressivoUl) {
|
||||
this.progressivoUl = progressivoUl;
|
||||
}
|
||||
|
||||
public LocalDateTime getDatetimePosizionamento() {
|
||||
return datetimePosizionamento;
|
||||
}
|
||||
|
||||
public void setDatetimePosizionamento(LocalDateTime datetimePosizionamento) {
|
||||
this.datetimePosizionamento = datetimePosizionamento;
|
||||
}
|
||||
|
||||
public MtbColr toMtbColr() {
|
||||
return new MtbColr()
|
||||
.setCodJcom(getCodJcom())
|
||||
.setCodMart(getCodMart())
|
||||
.setDataCollo(UtilityDate.toDate(getDataCollo()))
|
||||
.setDataCollo(getDataCollo())
|
||||
.setNumCollo(getNumCollo())
|
||||
.setSerCollo(getSerCollo())
|
||||
.setGestione(getGestione())
|
||||
|
||||
@@ -1,36 +1,43 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import java.util.Date;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class OrdineInevasoDTO {
|
||||
|
||||
private String data;
|
||||
private Integer numero;
|
||||
@SerializedName("data")
|
||||
private LocalDate dataOrd;
|
||||
|
||||
@SerializedName("numero")
|
||||
private Integer numOrd;
|
||||
|
||||
@SerializedName("gestione")
|
||||
private String gestione;
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
|
||||
public String getDataOrdS() {
|
||||
return data;
|
||||
public LocalDate getDataOrd() {
|
||||
return dataOrd;
|
||||
}
|
||||
|
||||
public Date getDataOrdD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
|
||||
}
|
||||
|
||||
public OrdineInevasoDTO setData(String data) {
|
||||
this.data = data;
|
||||
public OrdineInevasoDTO setDataOrd(LocalDate data) {
|
||||
this.dataOrd = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumOrd() {
|
||||
return numero;
|
||||
return numOrd;
|
||||
}
|
||||
|
||||
public OrdineInevasoDTO setNumero(Integer numero) {
|
||||
this.numero = numero;
|
||||
public OrdineInevasoDTO setNumOrd(Integer numOrd) {
|
||||
this.numOrd = numOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -57,4 +64,34 @@ public class OrdineInevasoDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean equalsKey(OrdineInevasoDTO that) {
|
||||
if (that == null) return false;
|
||||
return this.dataOrd.equals(that.dataOrd) &&
|
||||
this.numOrd.equals(that.numOrd) &&
|
||||
StringUtils.equalsIgnoreCase(this.codMdep, that.codMdep);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
OrdineInevasoDTO that = (OrdineInevasoDTO) o;
|
||||
|
||||
if(!equalsKey(that)) return false;
|
||||
return StringUtils.equalsIgnoreCase(getCodMdep(), that.getCodMdep());
|
||||
}
|
||||
|
||||
public int hashCodeKey() {
|
||||
int result = getDataOrd().hashCode();
|
||||
result = 31 * result + getNumOrd().hashCode();
|
||||
result = 31 * result + getGestione().hashCode();
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = hashCodeKey();
|
||||
result = 31 * result + Objects.hashCode(getCodMdep());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,32 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public class StbGestSetup extends EntityBase{
|
||||
|
||||
@SerializedName("gestName")
|
||||
private String gestName;
|
||||
@SerializedName("section")
|
||||
private String section;
|
||||
@SerializedName("keySection")
|
||||
private String keySection;
|
||||
@SerializedName("value")
|
||||
private String value;
|
||||
@SerializedName("description")
|
||||
private String description;
|
||||
@SerializedName("flagSync")
|
||||
private String flagSync;
|
||||
@SerializedName("queryDefault")
|
||||
private String queryDefault;
|
||||
@SerializedName("flagUserView")
|
||||
private String flagUserView;
|
||||
@SerializedName("dataModifica")
|
||||
private String dataModifica;
|
||||
@SerializedName("modificatoDa")
|
||||
private String modificatoDa;
|
||||
@SerializedName("flagSetupDepo")
|
||||
private String flagSetupDepo;
|
||||
@SerializedName("flagSetupUserWeb")
|
||||
private String flagSetupUserWeb;
|
||||
|
||||
public StbGestSetup() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -9,26 +10,46 @@ public class StbMenu extends EntityBase {
|
||||
this.type = "stb_menu";
|
||||
}
|
||||
|
||||
@SerializedName("codOpz")
|
||||
private String codOpz;
|
||||
@SerializedName("codParent")
|
||||
private String codParent;
|
||||
@SerializedName("tipoAzienda")
|
||||
private String tipoAzienda;
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
@SerializedName("descrizioneEstesa")
|
||||
private String descrizioneEstesa;
|
||||
@SerializedName("entityName")
|
||||
private String entityName;
|
||||
@SerializedName("flagAttivo")
|
||||
private String flagAttivo;
|
||||
@SerializedName("flagPrinterSetup")
|
||||
private String flagPrinterSetup;
|
||||
@SerializedName("gestName")
|
||||
private String gestName;
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
@SerializedName("objectType")
|
||||
private String objectType;
|
||||
@SerializedName("openType")
|
||||
private String openType;
|
||||
@SerializedName("parameter")
|
||||
private String parameter;
|
||||
@SerializedName("pictureMenu")
|
||||
private String pictureMenu;
|
||||
@SerializedName("pictureSelect")
|
||||
private String pictureSelect;
|
||||
@SerializedName("pos")
|
||||
private Integer pos;
|
||||
@SerializedName("posCliente")
|
||||
private Integer posCliente;
|
||||
@SerializedName("posTipoAzienda")
|
||||
private Integer posTipoAzienda;
|
||||
@SerializedName("urlDescrizione")
|
||||
private String urlDescrizione;
|
||||
|
||||
@SerializedName("stbMenuChildren")
|
||||
private final List<StbMenu> stbMenuChildren = new ArrayList<>();
|
||||
|
||||
public String getCodOpz() {
|
||||
|
||||
@@ -3,6 +3,8 @@ package it.integry.integrywmsnative.core.model;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public class VtbDest extends EntityBase implements Parcelable {
|
||||
|
||||
|
||||
@@ -10,20 +12,28 @@ public class VtbDest extends EntityBase implements Parcelable {
|
||||
type = "vtb_dest";
|
||||
}
|
||||
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
|
||||
@SerializedName("codVdes")
|
||||
private String codVdes;
|
||||
|
||||
@SerializedName("destinatario")
|
||||
private String destinatario;
|
||||
|
||||
@SerializedName("indirizzo")
|
||||
private String indirizzo;
|
||||
|
||||
@SerializedName("cap")
|
||||
private String cap;
|
||||
|
||||
@SerializedName("citta")
|
||||
private String citta;
|
||||
|
||||
@SerializedName("prov")
|
||||
private String prov;
|
||||
|
||||
@SerializedName("nazione")
|
||||
private String nazione;
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class VtbVetr extends EntityBase {
|
||||
@@ -8,13 +9,21 @@ public class VtbVetr extends EntityBase {
|
||||
type = "vtb_vetr";
|
||||
}
|
||||
|
||||
@SerializedName("codVvet")
|
||||
private String codVvet;
|
||||
@SerializedName("codSpes")
|
||||
private String codSpes;
|
||||
@SerializedName("idRiga")
|
||||
private String idRiga;
|
||||
@SerializedName("daQta")
|
||||
private BigDecimal daQta;
|
||||
@SerializedName("aQta")
|
||||
private BigDecimal aQta;
|
||||
@SerializedName("impUnt")
|
||||
private BigDecimal impUnt;
|
||||
@SerializedName("impFisso")
|
||||
private BigDecimal impFisso;
|
||||
@SerializedName("codDivi")
|
||||
private String codDivi;
|
||||
|
||||
public String getCodVvet() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@@ -9,24 +10,43 @@ public class VtbVett extends EntityBase {
|
||||
type = "vtb_vett";
|
||||
}
|
||||
|
||||
@SerializedName("codVvet")
|
||||
private String codVvet;
|
||||
@SerializedName("codLettVett")
|
||||
private String codLettVett;
|
||||
@SerializedName("codAnag")
|
||||
private String codAnag;
|
||||
@SerializedName("ragSoc")
|
||||
private String ragSoc;
|
||||
@SerializedName("indirizzo")
|
||||
private String indirizzo;
|
||||
@SerializedName("cap")
|
||||
private String cap;
|
||||
@SerializedName("citta")
|
||||
private String citta;
|
||||
@SerializedName("prov")
|
||||
private String prov;
|
||||
@SerializedName("nazione")
|
||||
private String nazione;
|
||||
@SerializedName("telefono")
|
||||
private String telefono;
|
||||
@SerializedName("fax")
|
||||
private String fax;
|
||||
@SerializedName("partIva")
|
||||
private String partIva;
|
||||
@SerializedName("note")
|
||||
private String note;
|
||||
@SerializedName("eMail")
|
||||
private String eMail;
|
||||
@SerializedName("modStamp")
|
||||
private String modStamp;
|
||||
@SerializedName("coefVol")
|
||||
private BigDecimal coefVol;
|
||||
@SerializedName("flagAttivo")
|
||||
private String flagAttivo;
|
||||
@SerializedName("numAutoriz")
|
||||
private String numAutoriz;
|
||||
@SerializedName("vtbVetr")
|
||||
private List<VtbVetr> vtbVetr;
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
package it.integry.integrywmsnative.core.model.dto;
|
||||
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
|
||||
public class AlreadyRegisteredUDCDTO {
|
||||
public class AlreadyRegisteredUlDTO {
|
||||
|
||||
@SerializedName("mtbColt")
|
||||
private MtbColt mtbColt;
|
||||
|
||||
@SerializedName("canBeRecovered")
|
||||
private boolean canBeRecovered;
|
||||
|
||||
public MtbColt getMtbColt() {
|
||||
return mtbColt;
|
||||
}
|
||||
|
||||
public AlreadyRegisteredUDCDTO setMtbColt(MtbColt mtbColt) {
|
||||
public AlreadyRegisteredUlDTO setMtbColt(MtbColt mtbColt) {
|
||||
this.mtbColt = mtbColt;
|
||||
return this;
|
||||
}
|
||||
@@ -22,7 +25,7 @@ public class AlreadyRegisteredUDCDTO {
|
||||
return canBeRecovered;
|
||||
}
|
||||
|
||||
public AlreadyRegisteredUDCDTO setCanBeRecovered(boolean canBeRecovered) {
|
||||
public AlreadyRegisteredUlDTO setCanBeRecovered(boolean canBeRecovered) {
|
||||
this.canBeRecovered = canBeRecovered;
|
||||
return this;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user