@openmrs/esm-stock-management-app 3.3.1 → 3.3.2-pre.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/2392.js +1 -1
  2. package/dist/2392.js.map +1 -1
  3. package/dist/openmrs-esm-stock-management-app.js +2 -2
  4. package/dist/openmrs-esm-stock-management-app.js.map +1 -1
  5. package/dist/routes.json +1 -1
  6. package/package.json +3 -2
  7. package/coverage/__mocks__/index.html +0 -161
  8. package/coverage/__mocks__/index.ts.html +0 -91
  9. package/coverage/__mocks__/operation-type.mock.ts.html +0 -1681
  10. package/coverage/__mocks__/react-i18next.js.html +0 -259
  11. package/coverage/__mocks__/workspace2-props.mock.ts.html +0 -145
  12. package/coverage/base.css +0 -224
  13. package/coverage/block-navigation.js +0 -87
  14. package/coverage/clover.xml +0 -1659
  15. package/coverage/coverage-final.json +0 -69
  16. package/coverage/favicon.png +0 -0
  17. package/coverage/index.html +0 -611
  18. package/coverage/prettify.css +0 -1
  19. package/coverage/prettify.js +0 -2
  20. package/coverage/sort-arrow-sprite.png +0 -0
  21. package/coverage/sorter.js +0 -210
  22. package/coverage/src/constants.ts.html +0 -598
  23. package/coverage/src/core/api/api.ts.html +0 -181
  24. package/coverage/src/core/api/index.html +0 -116
  25. package/coverage/src/core/api/types/BatchJob.ts.html +0 -415
  26. package/coverage/src/core/api/types/index.html +0 -116
  27. package/coverage/src/core/api/types/stockOperation/StockOperationStatus.ts.html +0 -139
  28. package/coverage/src/core/api/types/stockOperation/StockOperationType.ts.html +0 -460
  29. package/coverage/src/core/api/types/stockOperation/index.html +0 -131
  30. package/coverage/src/core/components/carbon/controlled-number-input.component.tsx.html +0 -226
  31. package/coverage/src/core/components/carbon/controlled-radio-button-group.component.tsx.html +0 -253
  32. package/coverage/src/core/components/carbon/controlled-text-input.component.tsx.html +0 -202
  33. package/coverage/src/core/components/carbon/index.html +0 -146
  34. package/coverage/src/core/hooks/debounce-hook.ts.html +0 -181
  35. package/coverage/src/core/hooks/index.html +0 -116
  36. package/coverage/src/core/utils/datetimeUtils.ts.html +0 -289
  37. package/coverage/src/core/utils/index.html +0 -131
  38. package/coverage/src/core/utils/utils.ts.html +0 -382
  39. package/coverage/src/index.html +0 -131
  40. package/coverage/src/stock-items/add-bulk-stock-item/add-stock-items-bulk-import-action-button.component.tsx.html +0 -151
  41. package/coverage/src/stock-items/add-bulk-stock-item/index.html +0 -131
  42. package/coverage/src/stock-items/add-bulk-stock-item/stock-items-bulk-import.modal.tsx.html +0 -340
  43. package/coverage/src/stock-items/add-stock-item/add-stock-action-button.component.tsx.html +0 -145
  44. package/coverage/src/stock-items/add-stock-item/add-stock-item.component.tsx.html +0 -376
  45. package/coverage/src/stock-items/add-stock-item/batch-information/batch-information.resource.ts.html +0 -262
  46. package/coverage/src/stock-items/add-stock-item/batch-information/index.html +0 -116
  47. package/coverage/src/stock-items/add-stock-item/concepts-selector/concepts-selector.component.tsx.html +0 -301
  48. package/coverage/src/stock-items/add-stock-item/concepts-selector/index.html +0 -116
  49. package/coverage/src/stock-items/add-stock-item/drug-selector/drug-selector.component.tsx.html +0 -454
  50. package/coverage/src/stock-items/add-stock-item/drug-selector/index.html +0 -116
  51. package/coverage/src/stock-items/add-stock-item/index.html +0 -131
  52. package/coverage/src/stock-items/add-stock-item/stock-item-category-selector/index.html +0 -116
  53. package/coverage/src/stock-items/add-stock-item/stock-item-category-selector/stock-item-category-selector.component.tsx.html +0 -319
  54. package/coverage/src/stock-items/add-stock-item/stock-item-details/index.html +0 -131
  55. package/coverage/src/stock-items/add-stock-item/stock-item-details/stock-item-details.component.tsx.html +0 -862
  56. package/coverage/src/stock-items/add-stock-item/stock-item-details/stock-item-details.resource.ts.html +0 -142
  57. package/coverage/src/stock-items/components/filter-stock-items/filter-stock-items.component.tsx.html +0 -166
  58. package/coverage/src/stock-items/components/filter-stock-items/index.html +0 -116
  59. package/coverage/src/stock-items/edit-stock-item/edit-stock-item-action-menu.component.tsx.html +0 -169
  60. package/coverage/src/stock-items/edit-stock-item/index.html +0 -116
  61. package/coverage/src/stock-items/index.html +0 -161
  62. package/coverage/src/stock-items/stock-item.utils.tsx.html +0 -103
  63. package/coverage/src/stock-items/stock-items-table.component.tsx.html +0 -910
  64. package/coverage/src/stock-items/stock-items.resource.ts.html +0 -1342
  65. package/coverage/src/stock-items/validationSchema.ts.html +0 -325
  66. package/coverage/src/stock-locations/add-location.modal.tsx.html +0 -289
  67. package/coverage/src/stock-locations/index.html +0 -146
  68. package/coverage/src/stock-locations/location-admin-form.component.tsx.html +0 -574
  69. package/coverage/src/stock-locations/stock-locations-table.resource.ts.html +0 -370
  70. package/coverage/src/stock-lookups/index.html +0 -116
  71. package/coverage/src/stock-lookups/stock-lookups.resource.ts.html +0 -997
  72. package/coverage/src/stock-operations/index.html +0 -131
  73. package/coverage/src/stock-operations/stock-operation.utils.tsx.html +0 -184
  74. package/coverage/src/stock-operations/stock-operations-forms/hooks/index.html +0 -161
  75. package/coverage/src/stock-operations/stock-operations-forms/hooks/useFilterableStockItems.ts.html +0 -211
  76. package/coverage/src/stock-operations/stock-operations-forms/hooks/useOperationTypePermisions.ts.html +0 -172
  77. package/coverage/src/stock-operations/stock-operations-forms/hooks/useSearchUser.ts.html +0 -226
  78. package/coverage/src/stock-operations/stock-operations-forms/hooks/useStockItemBatchNumbers.ts.html +0 -208
  79. package/coverage/src/stock-operations/stock-operations-forms/index.html +0 -116
  80. package/coverage/src/stock-operations/stock-operations-forms/input-components/batch-no-selector.component.tsx.html +0 -439
  81. package/coverage/src/stock-operations/stock-operations-forms/input-components/index.html +0 -176
  82. package/coverage/src/stock-operations/stock-operations-forms/input-components/quantity-uom-selector.component.tsx.html +0 -259
  83. package/coverage/src/stock-operations/stock-operations-forms/input-components/stock-item-search.component.tsx.html +0 -319
  84. package/coverage/src/stock-operations/stock-operations-forms/input-components/stock-operation-reason-selector.component.tsx.html +0 -286
  85. package/coverage/src/stock-operations/stock-operations-forms/input-components/users-selector.component.tsx.html +0 -412
  86. package/coverage/src/stock-operations/stock-operations-forms/steps/base-operation-details-form-step.tsx.html +0 -868
  87. package/coverage/src/stock-operations/stock-operations-forms/steps/index.html +0 -236
  88. package/coverage/src/stock-operations/stock-operations-forms/steps/quantity-uom-cell.component.tsx.html +0 -184
  89. package/coverage/src/stock-operations/stock-operations-forms/steps/received-items.component.tsx.html +0 -433
  90. package/coverage/src/stock-operations/stock-operations-forms/steps/stock-availability-cell.component.tsx.html +0 -238
  91. package/coverage/src/stock-operations/stock-operations-forms/steps/stock-operation-item-batch-no-cell.component.tsx.html +0 -205
  92. package/coverage/src/stock-operations/stock-operations-forms/steps/stock-operation-item-cell.component.tsx.html +0 -232
  93. package/coverage/src/stock-operations/stock-operations-forms/steps/stock-operation-item-expiry-cell.component.tsx.html +0 -208
  94. package/coverage/src/stock-operations/stock-operations-forms/steps/stock-operation-items-form-step.component.tsx.html +0 -910
  95. package/coverage/src/stock-operations/stock-operations-forms/steps/stock-operation-submission-form-step.component.tsx.html +0 -850
  96. package/coverage/src/stock-operations/stock-operations-forms/stock-item-form/index.html +0 -116
  97. package/coverage/src/stock-operations/stock-operations-forms/stock-item-form/stock-item-form.workspace.tsx.html +0 -781
  98. package/coverage/src/stock-operations/stock-operations-forms/stock-operation-form.component.tsx.html +0 -973
  99. package/coverage/src/stock-operations/stock-operations-forms/stock-operation-stepper/index.html +0 -116
  100. package/coverage/src/stock-operations/stock-operations-forms/stock-operation-stepper/stock-operation-stepper.component.tsx.html +0 -238
  101. package/coverage/src/stock-operations/validation-schema.ts.html +0 -847
  102. package/coverage/src/stock-reports/report-list/index.html +0 -116
  103. package/coverage/src/stock-reports/report-list/stock-report-status.utils.ts.html +0 -130
  104. package/coverage/src/stock-sources/add-stock-source-button.component.tsx.html +0 -145
  105. package/coverage/src/stock-sources/add-stock-sources/add-stock-sources.workspace.tsx.html +0 -550
  106. package/coverage/src/stock-sources/add-stock-sources/index.html +0 -116
  107. package/coverage/src/stock-sources/edit-stock-source/edit-stock-source.component.tsx.html +0 -175
  108. package/coverage/src/stock-sources/edit-stock-source/index.html +0 -116
  109. package/coverage/src/stock-sources/index.html +0 -146
  110. package/coverage/src/stock-sources/stock-sources-delete/index.html +0 -116
  111. package/coverage/src/stock-sources/stock-sources-delete/stock-sources-delete.component.tsx.html +0 -277
  112. package/coverage/src/stock-sources/stock-sources-filter/index.html +0 -116
  113. package/coverage/src/stock-sources/stock-sources-filter/stock-sources-filter.component.tsx.html +0 -235
  114. package/coverage/src/stock-sources/stock-sources-items-table.component.tsx.html +0 -661
  115. package/coverage/src/stock-sources/stock-sources.resource.ts.html +0 -295
  116. package/coverage/src/stock-user-role-scopes/delete-stock-user-scope.modal.tsx.html +0 -214
  117. package/coverage/src/stock-user-role-scopes/index.html +0 -116
  118. package/coverage/src/utils.ts.html +0 -133
@@ -1,973 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/stock-operations/stock-operations-forms/stock-operation-form.component.tsx</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/stock-operations/stock-operations-forms</a> stock-operation-form.component.tsx</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">64.51% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>40/62</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">56.71% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>38/67</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">56.52% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>13/23</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">63.79% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>37/58</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-neutral">&nbsp;</span>
413
- <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-yes">3x</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-yes">48x</span>
420
- <span class="cline-any cline-yes">48x</span>
421
- <span class="cline-any cline-yes">48x</span>
422
- <span class="cline-any cline-yes">28x</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-yes">48x</span>
425
- <span class="cline-any cline-yes">48x</span>
426
- <span class="cline-any cline-yes">28x</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-yes">48x</span>
429
- <span class="cline-any cline-yes">28x</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">48x</span>
432
- <span class="cline-any cline-yes">28x</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-yes">48x</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-yes">48x</span>
442
- <span class="cline-any cline-yes">48x</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-yes">48x</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-no">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-yes">48x</span>
489
- <span class="cline-any cline-yes">48x</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-yes">48x</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-yes">1x</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-no">&nbsp;</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-no">&nbsp;</span>
500
- <span class="cline-any cline-no">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-no">&nbsp;</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-no">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-no">&nbsp;</span>
509
- <span class="cline-any cline-no">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-yes">1x</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-yes">48x</span>
521
- <span class="cline-any cline-yes">46x</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-yes">11x</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">6x</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-no">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-yes">48x</span>
581
- <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-yes">48x</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-yes">28x</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-yes">28x</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-neutral">&nbsp;</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-yes">28x</span>
604
- <span class="cline-any cline-yes">224x</span>
605
- <span class="cline-any cline-yes">56x</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-yes">48x</span>
614
- <span class="cline-any cline-yes">28x</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-yes">28x</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-yes">48x</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-yes">135x</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { CircleDash } from '@carbon/react/icons';
659
- import { zodResolver } from '@hookform/resolvers/zod';
660
- import {
661
- parseDate,
662
- showSnackbar,
663
- useConfig,
664
- useSession,
665
- Workspace2,
666
- type Workspace2DefinitionProps,
667
- } from '@openmrs/esm-framework';
668
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
669
- import { type FieldError, FormProvider, useForm } from 'react-hook-form';
670
- import { useTranslation } from 'react-i18next';
671
- import { type ConfigObject } from '../../config-schema';
672
- import { today } from '../../constants';
673
- import { type StockOperationDTO } from '../../core/api/types/stockOperation/StockOperationDTO';
674
- import {
675
- operationFromString,
676
- OperationType,
677
- type StockOperationType,
678
- StockOperationTypeIsStockIssue,
679
- } from '../../core/api/types/stockOperation/StockOperationType';
680
- import { type TabItem } from '../../core/components/tabs/types';
681
- import { otherUser, pick } from '../../core/utils/utils';
682
- import {
683
- type BaseStockOperationItemFormData,
684
- getStockOperationFormSchema,
685
- getStockOperationItemFormSchema,
686
- type StockOperationItemDtoSchema,
687
- } from '../validation-schema';
688
- import useOperationTypePermisions from './hooks/useOperationTypePermisions';
689
- import BaseOperationDetailsFormStep from './steps/base-operation-details-form-step';
690
- import ReceivedItems from './steps/received-items.component';
691
- import StockOperationItemsFormStep from './steps/stock-operation-items-form-step.component';
692
- import StockOperationSubmissionFormStep from './steps/stock-operation-submission-form-step.component';
693
- import StockItemForm, { type StockItemFormProps } from './stock-item-form/stock-item-form.workspace';
694
- import StockOperationStepper from './stock-operation-stepper/stock-operation-stepper.component';
695
- import { useStockOperationAndItems } from '../stock-operations.resource';
696
- &nbsp;
697
- /**
698
- * Props interface for the StockOperationForm component
699
- * @interface StockOperationFormProps
700
- * @property {StockOperationType} [stockOperationType] - The stock operation type being created or edited.
701
- * @property {StockOperationDTO} [stockOperation] - The stock operation data transfer object.
702
- * @property {string} [stockRequisitionUuid] - Requisition operation uuid used in stock issue stockOperation type
703
- * When undefined or null, the form will be in creation mode.
704
- */
705
- interface StockOperationFormProps {
706
- stockOperation?: StockOperationDTO;
707
- stockOperationType: StockOperationType;
708
- stockRequisitionUuid?: string;
709
- }
710
- &nbsp;
711
- const StockOperationForm: React.FC&lt;Workspace2DefinitionProps&lt;StockOperationFormProps&gt;&gt; = ({
712
- workspaceProps,
713
- closeWorkspace,
714
- }) =&gt; {
715
- const { stockOperation, stockOperationType, stockRequisitionUuid } = workspaceProps ?? <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
716
- const { t } = useTranslation();
717
- const operationType = useMemo(() =&gt; {
718
- return operationFromString(stockOperationType.operationType);
719
- }, [stockOperationType]);
720
- const operationTypePermision = useOperationTypePermisions(stockOperationType);
721
- const stockOperationItemFormSchema = useMemo(() =&gt; {
722
- return getStockOperationItemFormSchema(operationType);
723
- }, [operationType]);
724
- const formschema = useMemo(() =&gt; {
725
- return getStockOperationFormSchema(operationType);
726
- }, [operationType]);
727
- const showReceivedItems = useMemo(() =&gt; {
728
- return (
729
- (StockOperationTypeIsStockIssue(stockOperation?.operationType as OperationType) ||
730
- stockOperation?.permission?.canDisplayReceivedItems) &amp;&amp;
731
- (<span class="branch-2 cbranch-no" title="branch not covered" >stockOperation.status === 'DISPATCHED' || <span class="branch-3 cbranch-no" title="branch not covered" >s</span>tockOperation.status === 'COMPLETED')</span>
732
- );
733
- }, [stockOperation]);
734
- const {
735
- user: { uuid: defaultLoggedUserUuid },
736
- } = useSession();
737
- const { autoPopulateResponsiblePerson } = useConfig&lt;ConfigObject&gt;();
738
- const { error, items: _stockOperation, isLoading } = useStockOperationAndItems(stockRequisitionUuid);
739
- &nbsp;
740
- const form = useForm&lt;StockOperationItemDtoSchema&gt;({
741
- defaultValues: {
742
- responsiblePersonUuid:
743
- stockOperation?.responsiblePersonUuid ?? // if person uuid exist, make it default
744
- (stockOperation?.responsiblePersonOther ? otherUser.uuid : undefined) ?? // if other resp person exist, default other user uuid
745
- (autoPopulateResponsiblePerson ? defaultLoggedUserUuid : <span class="branch-1 cbranch-no" title="branch not covered" >undefined), //Else default login user if configured</span>
746
- operationDate: stockOperation?.<span class="branch-0 cbranch-no" title="branch not covered" >operationDate ? parseDate(String(stockOperation.operationDate)) </span>: today(),
747
- remarks: stockOperation?.remarks ?? '',
748
- &nbsp;
749
- operationTypeUuid: stockOperation?.operationTypeUuid ?? stockOperationType?.uuid,
750
- reasonUuid: stockOperation?.reasonUuid ?? '',
751
- responsiblePersonOther: stockOperation?.responsiblePersonOther ?? '',
752
- stockOperationItems:
753
- stockOperation?.stockOperationItems?.<span class="fstat-no" title="function not covered" >map((<span class="cstat-no" title="statement not covered" >i</span>tem) =&gt;</span>
754
- pick(
755
- { ...item, expiration: item.expiration ? parseDate(String(item.expiration)) : undefined },
756
- stockOperationItemFormSchema.keyof().options,
757
- ),
758
- ) ?? [],
759
- sourceUuid: stockOperation?.sourceUuid ?? '',
760
- destinationUuid: stockOperation?.destinationUuid ?? '',
761
- },
762
- mode: 'all',
763
- values: stockRequisitionUuid
764
- ? <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
765
- sourceUuid: _stockOperation?.destinationUuid,
766
- destinationUuid: _stockOperation?.sourceUuid,
767
- operationTypeUuid: stockOperationType?.uuid,
768
- stockOperationItems: (_stockOperation?.stockOperationItems &amp;&amp; _stockOperation.stockOperationItems.length &gt; 0
769
- ? _stockOperation.stockOperationItems.<span class="fstat-no" title="function not covered" >map((<span class="cstat-no" title="statement not covered" >i</span>tem) =&gt;</span>
770
- pick(
771
- { ...item, expiration: item?.expiration ? parseDate(String(item.expiration)) : undefined },
772
- stockOperationItemFormSchema.keyof().options,
773
- ),
774
- )
775
- : []) as [BaseStockOperationItemFormData, ...BaseStockOperationItemFormData[]],
776
- requisitionStockOperationUuid: stockRequisitionUuid,
777
- responsiblePersonUuid: _stockOperation?.responsiblePersonUuid,
778
- responsiblePersonOther: _stockOperation?.responsiblePersonOther,
779
- operationDate: _stockOperation?.operationDate ? parseDate(String(_stockOperation.operationDate)) : today(),
780
- }
781
- : undefined,
782
- resolver: zodResolver(formschema),
783
- });
784
- const [renderItemForm, setRenderItemForm] = useState(false);
785
- const [itemsFormProps, setItemFormProps] = useState&lt;StockItemFormProps&gt;();
786
- &nbsp;
787
- const handleLaunchStockItem = useCallback(
788
- (stockOperationItem?: BaseStockOperationItemFormData) =&gt; {
789
- setItemFormProps({
790
- stockOperationType,
791
- stockOperationItem,
792
- <span class="fstat-no" title="function not covered" > onSave: (d</span>ata) =&gt; {
793
- const items = (<span class="cstat-no" title="statement not covered" >form.getValues('stockOperationItems') ?? [])</span> as BaseStockOperationItemFormData[];
794
- const index = <span class="cstat-no" title="statement not covered" >items.<span class="fstat-no" title="function not covered" >findIndex((i</span>) =&gt; <span class="cstat-no" title="statement not covered" >i.uuid === data.uuid);</span></span>
795
- <span class="cstat-no" title="statement not covered" > if (index === -1) {</span>
796
- <span class="cstat-no" title="statement not covered" > items.push(data);</span>
797
- } else {
798
- <span class="cstat-no" title="statement not covered" > items[index] = data;</span>
799
- }
800
- <span class="cstat-no" title="statement not covered" > form.setValue(</span>
801
- 'stockOperationItems',
802
- items as [BaseStockOperationItemFormData, ...BaseStockOperationItemFormData[]],
803
- );
804
- <span class="cstat-no" title="statement not covered" > setRenderItemForm(false);</span>
805
- <span class="cstat-no" title="statement not covered" > setItemFormProps(undefined);</span>
806
- },
807
- <span class="fstat-no" title="function not covered" > onBack: () =&gt; {</span>
808
- <span class="cstat-no" title="statement not covered" > setRenderItemForm(false);</span>
809
- <span class="cstat-no" title="statement not covered" > setItemFormProps(undefined);</span>
810
- },
811
- });
812
- setRenderItemForm(true);
813
- },
814
- [stockOperationType, form, setItemFormProps, setRenderItemForm],
815
- );
816
- const steps: TabItem[] = useMemo(() =&gt; {
817
- return [
818
- {
819
- name: stockOperation ? <span class="branch-0 cbranch-no" title="branch not covered" >`${stockOperationType?.name} Details` : `</span>${stockOperationType?.name} Details`,
820
- component: (
821
- &lt;BaseOperationDetailsFormStep
822
- stockOperation={stockOperation}
823
- stockOperationType={stockOperationType}
824
- onNext={() =&gt; setSelectedIndex(1)}
825
- /&gt;
826
- ),
827
- disabled: !stockOperation,
828
- },
829
- {
830
- name: t('stockItems', 'Stock items'),
831
- component: (
832
- &lt;StockOperationItemsFormStep
833
- stockOperation={stockOperation}
834
- stockOperationType={stockOperationType}
835
- onNext={() =&gt; setSelectedIndex(2)}
836
- <span class="fstat-no" title="function not covered" > onPrevious={() =&gt; <span class="cstat-no" title="statement not covered" >s</span>etSelectedIndex(0)}</span>
837
- onLaunchItemsForm={handleLaunchStockItem}
838
- /&gt;
839
- ),
840
- disabled: !stockOperation,
841
- },
842
- {
843
- name: operationTypePermision?.requiresDispatchAcknowledgement ? 'Submit/Dispatch' : 'Submit/Complete',
844
- component: (
845
- &lt;StockOperationSubmissionFormStep
846
- stockOperation={stockOperation}
847
- stockOperationType={stockOperationType}
848
- <span class="fstat-no" title="function not covered" > onPrevious={() =&gt; <span class="cstat-no" title="statement not covered" >s</span>etSelectedIndex(1)}</span>
849
- onNext={<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >showReceivedItems ? () =&gt; <span class="cstat-no" title="statement not covered" >s</span>etSelectedIndex(3) </span></span>: undefined}
850
- dismissWorkspace={closeWorkspace}
851
- /&gt;
852
- ),
853
- disabled: !stockOperation,
854
- },
855
- ].concat(
856
- showReceivedItems
857
- ? <span class="branch-0 cbranch-no" title="branch not covered" >[</span>
858
- {
859
- name: t('receivedItems', 'Received Items'),
860
- component: &lt;ReceivedItems stockOperation={stockOperation} <span class="fstat-no" title="function not covered" >onPrevious={() =&gt; <span class="cstat-no" title="statement not covered" >s</span>etSelectedIndex(2)}</span> /&gt;,
861
- disabled: !stockOperation,
862
- },
863
- ]
864
- : [],
865
- ) as TabItem[];
866
- }, [
867
- stockOperation,
868
- stockOperationType,
869
- t,
870
- operationTypePermision,
871
- showReceivedItems,
872
- handleLaunchStockItem,
873
- closeWorkspace,
874
- ]);
875
- &nbsp;
876
- const [selectedIndex, setSelectedIndex] = useState(0);
877
- &nbsp;
878
- useEffect(() =&gt; {
879
- // Display fields errors for stock operation items and operation type uuid
880
- Object.entries(form.formState.errors ?? <span class="branch-1 cbranch-no" title="branch not covered" >{})</span>.<span class="fstat-no" title="function not covered" >forEach(([</span>key, val]) =&gt; {
881
- <span class="cstat-no" title="statement not covered" > if (['stockOperationItems', 'operationTypeUuid'].includes(key)) {</span>
882
- <span class="cstat-no" title="statement not covered" > showSnackbar({ kind: 'error', title: key, subtitle: (val as FieldError)?.message });</span>
883
- }
884
- });
885
- &nbsp;
886
- // Navigate to step where the error is
887
- const fieldSteps = [
888
- [
889
- 'responsiblePersonUuid',
890
- 'operationDate',
891
- 'remarks',
892
- 'sourceUuid',
893
- 'destinationUuid',
894
- 'reasonUuid',
895
- 'responsiblePersonOther',
896
- ],
897
- ['stockOperationItems'],
898
- ];
899
- for (let step = 0; step &lt; fieldSteps.length; step++) {
900
- const hasError = fieldSteps[step].some((field) =&gt; field in form.formState.errors);
901
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hasError) {
902
- <span class="cstat-no" title="statement not covered" > setSelectedIndex(step);</span>
903
- <span class="cstat-no" title="statement not covered" > break;</span>
904
- }
905
- }
906
- }, [form.formState.errors]);
907
- &nbsp;
908
- // Stock issue errors (while fetching related requisitio or if no supplied requisition)
909
- useEffect(() =&gt; {
910
- if (operationType === OperationType.STOCK_ISSUE_OPERATION_TYPE &amp;&amp; !stockRequisitionUuid)
911
- showSnackbar({
912
- kind: 'error',
913
- title: t('stockIssueError', 'StockIssue error'),
914
- subtitle: t('relatedStockRequisitionRequired', 'Related stock requisition Required'),
915
- });
916
- <span class="missing-if-branch" title="if path not taken" >I</span>if (error) {
917
- <span class="cstat-no" title="statement not covered" > showSnackbar({</span>
918
- kind: 'error',
919
- title: t('stockIssueError', 'StockIssue error'),
920
- subtitle: error?.message,
921
- });
922
- }
923
- }, [stockRequisitionUuid, error, t, operationType]);
924
- &nbsp;
925
- return (
926
- &lt;Workspace2
927
- title={
928
- stockOperation
929
- ? <span class="branch-0 cbranch-no" title="branch not covered" >t('editOperationTitle', 'Edit {{operationType}}', { operationType: stockOperation.operationTypeName })</span>
930
- : t('newOperationTitle', 'New: {{operationName}}', { operationName: stockOperationType?.name })
931
- }
932
- &gt;
933
- &lt;FormProvider {...form}&gt;
934
- {renderItemForm ? (
935
- &lt;StockItemForm {...itemsFormProps} /&gt;
936
- ) : (
937
- &lt;StockOperationStepper
938
- steps={steps.map((tab, index) =&gt; ({
939
- title: tab.name,
940
- component: tab.component,
941
- disabled: tab.disabled,
942
- icon: &lt;CircleDash /&gt;,
943
- }))}
944
- selectedIndex={selectedIndex}
945
- onChange={setSelectedIndex}
946
- /&gt;
947
- )}
948
- &lt;/FormProvider&gt;
949
- &lt;/Workspace2&gt;
950
- );
951
- };
952
- &nbsp;
953
- export default StockOperationForm;
954
- &nbsp;</pre></td></tr></table></pre>
955
-
956
- <div class='push'></div><!-- for sticky footer -->
957
- </div><!-- /wrapper -->
958
- <div class='footer quiet pad2 space-top1 center small'>
959
- Code coverage generated by
960
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
961
- at 2026-10-19T11:46:33.626Z
962
- </div>
963
- <script src="../../../prettify.js"></script>
964
- <script>
965
- window.onload = function () {
966
- prettyPrint();
967
- };
968
- </script>
969
- <script src="../../../sorter.js"></script>
970
- <script src="../../../block-navigation.js"></script>
971
- </body>
972
- </html>
973
-