Code Carriers

Rumman Ansari   2023-07-27   Developer   c programming language > Code Carriers   339 Share
<span class="pln">
</span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">it</span><span class="pun">.</span><span class="pln">more</span><span class="pun">())</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    container errorRow </span><span class="pun">=</span><span class="pln"> it</span><span class="pun">.</span><span class="kwd">value</span><span class="pun">();</span><span class="pln"> </span><span class="com">// Get the current element from the iterator</span><span class="pln">

    </span><span class="com">// Check if errorRow is valid and has enough elements</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">conLen</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">4</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        error</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"Insufficient columns in errorRow at index %1. Skipping."</span><span class="pun">,</span><span class="pln"> rowIdx</span><span class="pun">));</span><span class="pln">
        it</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span><span class="pln"> </span><span class="com">// Skip to the next iteration</span><span class="pln">
        </span><span class="kwd">continue</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Debug: Log the container values to check structure</span><span class="pln">
    </span><span class="typ">Debug</span><span class="pun">::</span><span class="pln">writeTrace</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"Row: %1, Brand: %2, ItemGroup: %3, Warehouse: %4, Error: %5"</span><span class="pun">,</span><span class="pln"> 
        rowIdx</span><span class="pun">,</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">),</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">)));</span><span class="pln">

    </span><span class="com">// Try accessing the cells safely</span><span class="pln">
    </span><span class="kwd">try</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Ensure we're within range</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIdx </span><span class="pun">&lt;=</span><span class="pln"> worksheet</span><span class="pun">.</span><span class="typ">Dimension</span><span class="pun">.</span><span class="typ">End</span><span class="pun">.</span><span class="typ">Row</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// Write values to Excel</span><span class="pln">
            worksheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Brand</span><span class="pln">
            worksheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Item Group</span><span class="pln">
            worksheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Warehouse ID</span><span class="pln">
            worksheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Error Message</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="kwd">else</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            error</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"Row index %1 exceeds the worksheet row count %2. Skipping."</span><span class="pun">,</span><span class="pln"> rowIdx</span><span class="pun">,</span><span class="pln"> worksheet</span><span class="pun">.</span><span class="typ">Dimension</span><span class="pun">.</span><span class="typ">End</span><span class="pun">.</span><span class="typ">Row</span><span class="pun">));</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Exception</span><span class="pun">::</span><span class="typ">Error</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        error</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"Error processing row %1: %2"</span><span class="pun">,</span><span class="pln"> rowIdx</span><span class="pun">,</span><span class="pln"> con2str</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">)));</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    it</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span><span class="pln"> </span><span class="com">// Move to the next element</span><span class="pln">
    rowIdx</span><span class="pun">++;</span><span class="pln"> </span><span class="com">// Move to the next row in Excel</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span>

<span class="pln">
</span><span class="kwd">void</span><span class="pln"> generateErrorFile</span><span class="pun">(</span><span class="typ">List</span><span class="pln"> errors</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="com">// Create a memory stream to store the Excel file</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">MemoryStream</span><span class="pln"> memStream </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">MemoryStream</span><span class="pun">();</span><span class="pln">

    </span><span class="com">// Use OfficeOpenXml to create an Excel file</span><span class="pln">
    </span><span class="kwd">using</span><span class="pln"> </span><span class="pun">(</span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pln"> errorPackage </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pun">(</span><span class="pln">memStream</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Create a worksheet named "Errors"</span><span class="pln">
        </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelWorksheet</span><span class="pln"> errorSheet </span><span class="pun">=</span><span class="pln"> errorPackage</span><span class="pun">.</span><span class="pln">get_Workbook</span><span class="pun">().</span><span class="pln">get_Worksheets</span><span class="pun">().</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Errors"</span><span class="pun">);</span><span class="pln">

        </span><span class="com">// Add column headers to the Excel file</span><span class="pln">
        </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelRange</span><span class="pln"> cells </span><span class="pun">=</span><span class="pln"> errorSheet</span><span class="pun">.</span><span class="pln">get_Cells</span><span class="pun">();</span><span class="pln">
        cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="str">"Brand"</span><span class="pun">);</span><span class="pln">
        cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="str">"Item Group"</span><span class="pun">);</span><span class="pln">
        cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="str">"Warehouse ID"</span><span class="pun">);</span><span class="pln">
        cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="str">"Error Message"</span><span class="pun">);</span><span class="pln">

        </span><span class="com">// Add rows with error details</span><span class="pln">
        </span><span class="kwd">int</span><span class="pln"> rowIdx </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Start adding data from the second row</span><span class="pln">
        </span><span class="typ">ListIterator</span><span class="pln"> it </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ListIterator</span><span class="pun">(</span><span class="pln">errors</span><span class="pun">);</span><span class="pln">

        </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">it</span><span class="pun">.</span><span class="pln">more</span><span class="pun">())</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            container errorRow </span><span class="pun">=</span><span class="pln"> it</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span><span class="pln">

            </span><span class="com">// Assign values to cells from the error container</span><span class="pln">
            cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">));</span><span class="pln"> </span><span class="com">// Brand</span><span class="pln">
            cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">));</span><span class="pln"> </span><span class="com">// Item Group</span><span class="pln">
            cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">));</span><span class="pln"> </span><span class="com">// Warehouse ID</span><span class="pln">
            cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">).</span><span class="pln">set_Value</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">));</span><span class="pln"> </span><span class="com">// Error Message</span><span class="pln">

            rowIdx</span><span class="pun">++;</span><span class="pln"> </span><span class="com">// Move to the next row</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">// Save the generated Excel file into the memory stream</span><span class="pln">
        errorPackage</span><span class="pun">.</span><span class="typ">Save</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Send the file to the user for download</span><span class="pln">
    str fileName </span><span class="pun">=</span><span class="pln"> </span><span class="str">"ImportErrors.xlsx"</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">File</span><span class="pun">::</span><span class="typ">SendFileToBrowser</span><span class="pun">(</span><span class="pln">fileName</span><span class="pun">,</span><span class="pln"> memStream</span><span class="pun">.</span><span class="typ">ToArray</span><span class="pun">());</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span>

<span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="typ">Microsoft</span><span class="pun">.</span><span class="typ">Dynamics</span><span class="pun">.</span><span class="typ">ApplicationFoundation</span><span class="pun">.</span><span class="pln">DIXF</span><span class="pun">.</span><span class="typ">Instrumentation</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="typ">OfficeOpenXml</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">USVPrductInclustionByWHSImportService</span><span class="pln"> </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">SysOperationServiceBase</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">USVPrductInclustionByWHSImportContract</span><span class="pln"> importContract</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">void</span><span class="pln"> processImport</span><span class="pun">(</span><span class="typ">USVPrductInclustionByWHSImportContract</span><span class="pln"> _contract</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">#File</span><span class="pln">
        </span><span class="kwd">int</span><span class="pln"> excelRowCount</span><span class="pun">,</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelWorksheet</span><span class="pln"> worksheet</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelRange</span><span class="pln"> range</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">List</span><span class="pln"> errors </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">List</span><span class="pun">(</span><span class="typ">Types</span><span class="pun">::</span><span class="typ">Record</span><span class="pun">);</span><span class="pln">
        container errorRow</span><span class="pun">;</span><span class="pln">
        str errorMessage</span><span class="pun">;</span><span class="pln">

        importContract </span><span class="pun">=</span><span class="pln"> _contract</span><span class="pun">;</span><span class="pln">

        </span><span class="typ">FileUploadTemporaryStorageResult</span><span class="pln"> fileUploadResult </span><span class="pun">=</span><span class="pln"> importContract</span><span class="pun">.</span><span class="pln">parmFileUploadResult</span><span class="pun">();</span><span class="pln">
        
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">fileUploadResult </span><span class="pun">&amp;&amp;</span><span class="pln"> fileUploadResult</span><span class="pun">.</span><span class="pln">getUploadStatus</span><span class="pun">())</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">Stream</span><span class="pln"> stream </span><span class="pun">=</span><span class="pln"> fileUploadResult</span><span class="pun">.</span><span class="pln">openResult</span><span class="pun">();</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">stream</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">using</span><span class="pln"> </span><span class="pun">(</span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pln"> </span><span class="kwd">package</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pun">(</span><span class="pln">stream</span><span class="pun">))</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="kwd">package</span><span class="pun">.</span><span class="typ">Load</span><span class="pun">(</span><span class="pln">stream</span><span class="pun">);</span><span class="pln">
                    worksheet </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">package</span><span class="pun">.</span><span class="pln">get_Workbook</span><span class="pun">().</span><span class="pln">get_Worksheets</span><span class="pun">().</span><span class="pln">get_Item</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
                    range </span><span class="pun">=</span><span class="pln"> worksheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">;</span><span class="pln">

                    excelRowCount </span><span class="pun">=</span><span class="pln"> worksheet</span><span class="pun">.</span><span class="typ">Dimension</span><span class="pun">.</span><span class="typ">End</span><span class="pun">.</span><span class="typ">Row</span><span class="pun">;</span><span class="pln">

                    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;=</span><span class="pln"> excelRowCount</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="com">// Start from the second row to skip headers</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        </span><span class="kwd">boolean</span><span class="pln"> hasError </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
                        errorMessage </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">

                        str brand </span><span class="pun">=</span><span class="pln"> range</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">).</span><span class="typ">Text</span><span class="pun">;</span><span class="pln">
                        str itemGroup </span><span class="pun">=</span><span class="pln"> range</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">).</span><span class="typ">Text</span><span class="pun">;</span><span class="pln">
                        str warehouseIds </span><span class="pun">=</span><span class="pln"> range</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">).</span><span class="typ">Text</span><span class="pun">;</span><span class="pln">

                        </span><span class="com">// Validation logic</span><span class="pln">
                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">brand </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pun">)</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            hasError </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                            errorMessage </span><span class="pun">+=</span><span class="pln"> </span><span class="str">"Brand is missing; "</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">
                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">itemGroup </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pun">)</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            hasError </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                            errorMessage </span><span class="pun">+=</span><span class="pln"> </span><span class="str">"Item Group is missing; "</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">
                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">warehouseIds </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pun">)</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            hasError </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                            errorMessage </span><span class="pun">+=</span><span class="pln"> </span><span class="str">"Warehouse ID is missing; "</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">

                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">hasError</span><span class="pun">)</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            </span><span class="com">// Add row with error message to the error list</span><span class="pln">
                            errorRow </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">brand</span><span class="pun">,</span><span class="pln"> itemGroup</span><span class="pun">,</span><span class="pln"> warehouseIds</span><span class="pun">,</span><span class="pln"> errorMessage</span><span class="pun">];</span><span class="pln">
                            errors</span><span class="pun">.</span><span class="pln">addEnd</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">);</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">
                        </span><span class="kwd">else</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            </span><span class="com">// Insert into staging if no errors</span><span class="pln">
                            ttsbegin</span><span class="pun">;</span><span class="pln">
                            </span><span class="typ">USVPrductInclustionByWHSStaging</span><span class="pln"> staging</span><span class="pun">;</span><span class="pln">
                            staging</span><span class="pun">.</span><span class="typ">Brand</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> brand</span><span class="pun">;</span><span class="pln">
                            staging</span><span class="pun">.</span><span class="typ">ItemGroup</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> itemGroup</span><span class="pun">;</span><span class="pln">
                            staging</span><span class="pun">.</span><span class="typ">WareHouseIds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> warehouseIds</span><span class="pun">;</span><span class="pln">
                            staging</span><span class="pun">.</span><span class="pln">insert</span><span class="pun">();</span><span class="pln">
                            ttscommit</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">

                    </span><span class="com">// If there are errors, generate error Excel file</span><span class="pln">
                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">errors</span><span class="pun">.</span><span class="pln">isEmpty</span><span class="pun">())</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">generateErrorFile</span><span class="pun">(</span><span class="pln">errors</span><span class="pun">);</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">void</span><span class="pln"> generateErrorFile</span><span class="pun">(</span><span class="typ">List</span><span class="pln"> errors</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Create new Excel file for errors</span><span class="pln">
        </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">MemoryStream</span><span class="pln"> memStream </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">MemoryStream</span><span class="pun">();</span><span class="pln">
        </span><span class="kwd">using</span><span class="pln"> </span><span class="pun">(</span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pln"> errorPackage </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pun">(</span><span class="pln">memStream</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelWorksheet</span><span class="pln"> errorSheet </span><span class="pun">=</span><span class="pln"> errorPackage</span><span class="pun">.</span><span class="typ">Workbook</span><span class="pun">.</span><span class="typ">Worksheets</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Errors"</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Add headers</span><span class="pln">
            errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Brand"</span><span class="pun">;</span><span class="pln">
            errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Item Group"</span><span class="pun">;</span><span class="pln">
            errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Warehouse ID"</span><span class="pun">;</span><span class="pln">
            errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Error Message"</span><span class="pun">;</span><span class="pln">

            </span><span class="com">// Add rows with errors</span><span class="pln">
            </span><span class="kwd">int</span><span class="pln"> rowIdx </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">ListIterator</span><span class="pln"> it </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ListIterator</span><span class="pun">(</span><span class="pln">errors</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">it</span><span class="pun">.</span><span class="pln">more</span><span class="pun">())</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                container errorRow </span><span class="pun">=</span><span class="pln"> it</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span><span class="pln">
                errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
                errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
                errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln">
                errorSheet</span><span class="pun">.</span><span class="typ">Cells</span><span class="pun">[</span><span class="pln">rowIdx</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">].</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">errorRow</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">);</span><span class="pln">
                rowIdx</span><span class="pun">++;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="com">// Save file to memory stream</span><span class="pln">
            errorPackage</span><span class="pun">.</span><span class="typ">Save</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">// Send the file for download</span><span class="pln">
        str fileName </span><span class="pun">=</span><span class="pln"> </span><span class="str">"ImportErrors.xlsx"</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">File</span><span class="pun">::</span><span class="typ">SendFileToBrowser</span><span class="pun">(</span><span class="pln">fileName</span><span class="pun">,</span><span class="pln"> memStream</span><span class="pun">.</span><span class="typ">ToArray</span><span class="pun">());</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span>


<span class="pln">
</span><span class="pun">[</span><span class="typ">Form</span><span class="pun">]</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">USVPrductInclustionByWHS</span><span class="pln"> </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">FormRun</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="pun">[</span><span class="typ">Control</span><span class="pun">(</span><span class="str">"String"</span><span class="pun">)]</span><span class="pln">
    </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">USVPrductInclustionByWHS_Brand</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Provides a custom lookup for the control.</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> lookup</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// Initialize SysTableLookup for the lookup functionality</span><span class="pln">
            </span><span class="typ">SysTableLookup</span><span class="pln"> sysTableLookup </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SysTableLookup</span><span class="pun">::</span><span class="pln">newParameters</span><span class="pun">(</span><span class="pln">tableNum</span><span class="pun">(</span><span class="typ">EcoResTextValue</span><span class="pun">),</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Retrieve the specific attribute type using RecId</span><span class="pln">
            </span><span class="typ">RecId</span><span class="pln"> recidAttributetype </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5637155087</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">EcoResAttributeType</span><span class="pln"> localEcoResAttributeType </span><span class="pun">=</span><span class="pln"> </span><span class="typ">EcoResAttributeType</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">recidAttributetype</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Define a query for the lookup</span><span class="pln">
            </span><span class="typ">Query</span><span class="pln"> query </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Query</span><span class="pun">();</span><span class="pln">
            </span><span class="typ">QueryBuildDataSource</span><span class="pln"> qbdsEnumValue </span><span class="pun">=</span><span class="pln"> query</span><span class="pun">.</span><span class="pln">addDataSource</span><span class="pun">(</span><span class="pln">tableNum</span><span class="pun">(</span><span class="typ">EcoResTextValue</span><span class="pun">));</span><span class="pln">
            </span><span class="typ">QueryBuildDataSource</span><span class="pln"> qbdsEnumAttrTypeValue </span><span class="pun">=</span><span class="pln"> qbdsEnumValue</span><span class="pun">.</span><span class="pln">addJoin</span><span class="pun">(</span><span class="pln">tableNum</span><span class="pun">(</span><span class="typ">EcoResEnumerationAttributeTypeValue</span><span class="pun">));</span><span class="pln">
            </span><span class="typ">QueryBuildDataSource</span><span class="pln"> qbdsEnumDomain </span><span class="pun">=</span><span class="pln"> qbdsEnumAttrTypeValue</span><span class="pun">.</span><span class="pln">addJoin</span><span class="pun">(</span><span class="pln">tableNum</span><span class="pun">(</span><span class="typ">EcoResAttributeType</span><span class="pun">));</span><span class="pln">
            </span><span class="typ">QueryBuildDataSource</span><span class="pln"> qbdsEcoResText </span><span class="pun">=</span><span class="pln"> qbdsEnumValue</span><span class="pun">.</span><span class="pln">addJoin</span><span class="pun">(</span><span class="pln">tableNum</span><span class="pun">(</span><span class="typ">EcoResTextValueTranslation</span><span class="pun">),</span><span class="pln"> </span><span class="typ">JoinMode</span><span class="pun">::</span><span class="typ">OuterJoin</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Set relationships between tables</span><span class="pln">
            qbdsEnumAttrTypeValue</span><span class="pun">.</span><span class="pln">addLink</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResTextValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RecId</span><span class="pun">),</span><span class="pln"> fieldNum</span><span class="pun">(</span><span class="typ">EcoResEnumerationAttributeTypeValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">));</span><span class="pln">
            qbdsEnumDomain</span><span class="pun">.</span><span class="pln">addLink</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResAttributeType</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RecId</span><span class="pun">),</span><span class="pln"> fieldNum</span><span class="pun">(</span><span class="typ">EcoResEnumerationAttributeTypeValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AttributeType</span><span class="pun">));</span><span class="pln">
            qbdsEcoResText</span><span class="pun">.</span><span class="pln">addLink</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResTextValueTranslation</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TextValueTable</span><span class="pun">),</span><span class="pln"> fieldNum</span><span class="pun">(</span><span class="typ">EcoResTextValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RecId</span><span class="pun">));</span><span class="pln">

            </span><span class="com">// Apply filters</span><span class="pln">
            qbdsEnumAttrTypeValue</span><span class="pun">.</span><span class="pln">addRange</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResEnumerationAttributeTypeValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AttributeType</span><span class="pun">))</span><span class="pln">
                </span><span class="pun">.</span><span class="kwd">value</span><span class="pun">(</span><span class="pln">queryValue</span><span class="pun">(</span><span class="pln">localEcoResAttributeType</span><span class="pun">.</span><span class="typ">RecId</span><span class="pun">));</span><span class="pln">
            qbdsEcoResText</span><span class="pun">.</span><span class="pln">addRange</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResTextValueTranslation</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Language</span><span class="pun">))</span><span class="pln">
                </span><span class="pun">.</span><span class="kwd">value</span><span class="pun">(</span><span class="pln">queryValue</span><span class="pun">(</span><span class="typ">SystemParameters</span><span class="pun">::</span><span class="pln">getSystemLanguageId</span><span class="pun">()));</span><span class="pln">

            </span><span class="com">// Apply sorting</span><span class="pln">
            qbdsEnumAttrTypeValue</span><span class="pun">.</span><span class="pln">addSortField</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResEnumerationAttributeTypeValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">OrdinalNumber</span><span class="pun">),</span><span class="pln"> </span><span class="typ">SortOrder</span><span class="pun">::</span><span class="typ">Ascending</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Set the query for the lookup</span><span class="pln">
            sysTableLookup</span><span class="pun">.</span><span class="pln">parmQuery</span><span class="pun">(</span><span class="pln">query</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Add fields to display in the lookup</span><span class="pln">
            sysTableLookup</span><span class="pun">.</span><span class="pln">addLookupfield</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResTextValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TextValue</span><span class="pun">));</span><span class="pln"> </span><span class="com">// Main display field</span><span class="pln">
            sysTableLookup</span><span class="pun">.</span><span class="pln">addLookupfield</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">EcoResTextValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RecId</span><span class="pun">));</span><span class="pln">    </span><span class="com">// Optionally include additional fields</span><span class="pln">

            </span><span class="com">// Execute the lookup</span><span class="pln">
            sysTableLookup</span><span class="pun">.</span><span class="pln">performFormLookup</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span>

Congratulations on passing the MB-500 exam! Here's a draft email you can send to your manager:


Subject: Successfully Passed MB-500: Microsoft Certified: Dynamics 365: Finance and Operations Apps Developer Associate

Dear [Manager's Name],

I am pleased to inform you that I have successfully completed and passed the MB-500: Microsoft Certified: Dynamics 365: Finance and Operations Apps Developer Associate exam. This certification has further enhanced my skills and knowledge in Dynamics 365 Finance and Operations, particularly in areas such as solution design, AOT development, code testing, data integration, and security optimization.

I look forward to applying these skills to our ongoing and future projects, and I am confident that this achievement will contribute positively to our team's objectives.

Thank you for your continued support.

Best regards,
[Your Name]

<span class="pln">
SELECT TOP </span><span class="lit">1</span><span class="pln"> </span><span class="typ">WorkId</span><span class="pun">,</span><span class="pln"> </span><span class="typ">WorkStatus</span><span class="pun">,</span><span class="pln"> </span><span class="typ">OrderNum</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ShipmentId</span><span class="pln">
FROM workTableSO
WHERE </span><span class="typ">OrderNum</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">@SalesId</span><span class="pln">
  AND </span><span class="typ">WorkTransType</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Sales'</span><span class="pln">
  AND EXISTS </span><span class="pun">(</span><span class="pln">
      SELECT </span><span class="lit">1</span><span class="pln">
      FROM workLineSOLine
      WHERE workTableSO</span><span class="pun">.</span><span class="typ">WorkId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> workLineSOLine</span><span class="pun">.</span><span class="typ">WorkId</span><span class="pln">
        AND workLineSOLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">@ItemId</span><span class="pln">
        AND workLineSOLine</span><span class="pun">.</span><span class="typ">InventTransId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">@InventTransId</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">
</span>
<span class="pln">
</span><span class="com">/// &lt;summary&gt;</span><span class="pln">
</span><span class="com">/// Creates load based on Excel file</span><span class="pln">
</span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
</span><span class="com">/// &lt;remarks&gt;</span><span class="pln">
</span><span class="com">/// Jan 30, 2019 - ansari. - Mod 018 Load creation import</span><span class="pln">
</span><span class="com">/// &lt;/remarks&gt;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="typ">DocumentFormat</span><span class="pun">.</span><span class="typ">OpenXml</span><span class="pun">.</span><span class="typ">Packaging</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="typ">DocumentFormat</span><span class="pun">.</span><span class="typ">OpenXml</span><span class="pun">.</span><span class="typ">Spreadsheet</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">ANSARILoadCreationService</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
    </span><span class="com">/// Creates load based on Excel file</span><span class="pln">
    </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
    </span><span class="com">/// &lt;param name = "_fileUrl"&gt;Location of Excel file&lt;/param&gt;</span><span class="pln">
    </span><span class="com">/// &lt;param name = "_siteId"&gt;Site to create load for&lt;/param&gt;</span><span class="pln">
    </span><span class="com">/// &lt;param name = "_locationId"&gt;Location to create load for&lt;/param&gt;</span><span class="pln">
    </span><span class="com">/// &lt;param name = "_loadTemplateId"&gt;Template for load&lt;/param&gt;</span><span class="pln">
    </span><span class="com">/// &lt;remarks&gt;</span><span class="pln">
    </span><span class="com">/// Jan 30, 2019 - ANSARI.</span><span class="pln">
    </span><span class="com">///     - Search for item based on ItemId or NameAlias</span><span class="pln">
    </span><span class="com">/// &lt;/remarks&gt;</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> process</span><span class="pun">(</span><span class="pln">
        str                 _fileUrl</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">InventSiteId</span><span class="pln">        _siteId</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">InventLocationId</span><span class="pln">    _locationId</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">WHSLoadTemplateId</span><span class="pln">   _loadTemplateId</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">ANSARIWHSASNLicensePlateId</span><span class="pln">    _licensePlateId</span><span class="pun">)</span><span class="pln"> </span><span class="com">//03/14/2024 -  - BUG 255602 - CR 303 - Add license plate field for manual load creation import</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        container           con</span><span class="pun">,</span><span class="pln"> errorList</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">int</span><span class="pln">                 i</span><span class="pun">,</span><span class="pln"> curLine</span><span class="pun">,</span><span class="pln"> purchLineNum</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">boolean</span><span class="pln">             hasError </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">Set</span><span class="pln">                 purchRecIdSet </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Set</span><span class="pun">(</span><span class="typ">Types</span><span class="pun">::</span><span class="typ">AnyType</span><span class="pun">);</span><span class="pln">
        </span><span class="typ">PurchId</span><span class="pln">             purchId</span><span class="pun">,</span><span class="pln"> nextPurchId</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">ItemId</span><span class="pln">              itemId</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">WHSLoadTable</span><span class="pln">        whsLoadTable</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">WHSLoadLine</span><span class="pln">         whsLoadLine</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">PurchLine</span><span class="pln">           purchLine</span><span class="pun">,</span><span class="pln"> validatePurchLine</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">PurchTable</span><span class="pln">          purchTable</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">WHSShipmentTable</span><span class="pln">    whsShipmentTable</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">WHSParameters</span><span class="pln">       whsParameters </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSParameters</span><span class="pun">::</span><span class="pln">find</span><span class="pun">();</span><span class="pln">
        </span><span class="typ">WHSUOMStructure</span><span class="pln">     whsUOMStructure</span><span class="pun">;</span><span class="pln"> </span><span class="com">//03/14/2024 -  - BUG 255602 - CR 303 - Add license plate field for manual load creation import</span><span class="pln">

        ttsbegin</span><span class="pun">;</span><span class="pln">
        </span><span class="com">// Build Header</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pln">             </span><span class="pun">=</span><span class="pln"> </span><span class="typ">NumberSeq</span><span class="pun">::</span><span class="pln">newGetNum</span><span class="pun">(</span><span class="typ">NumberSeqReference</span><span class="pun">::</span><span class="pln">findReference</span><span class="pun">(</span><span class="pln">extendedTypeNum</span><span class="pun">(</span><span class="typ">WHSLoadId</span><span class="pun">))).</span><span class="pln">num</span><span class="pun">();</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">InventSiteId</span><span class="pln">       </span><span class="pun">=</span><span class="pln"> _siteId</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">InventLocationId</span><span class="pln">   </span><span class="pun">=</span><span class="pln"> _locationId</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="pln">initFromloadTemplateId</span><span class="pun">(</span><span class="pln">_loadTemplateId</span><span class="pun">);</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">LoadDirection</span><span class="pln">      </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSLoadDirection</span><span class="pun">::</span><span class="typ">Inbound</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">LoadStatus</span><span class="pln">         </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSLoadStatus</span><span class="pun">::</span><span class="typ">Open</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="pln">loadTemplateId     </span><span class="pun">=</span><span class="pln"> _loadTemplateId</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">CarrierCode</span><span class="pln">        </span><span class="pun">=</span><span class="pln"> whsParameters</span><span class="pun">.</span><span class="typ">ANSARILoadCreationShippingCarrier</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">CarrierServiceCode</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> whsParameters</span><span class="pun">.</span><span class="typ">ANSARILoadCreationCarrierService</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">ModeCode</span><span class="pln">           </span><span class="pun">=</span><span class="pln"> whsParameters</span><span class="pun">.</span><span class="typ">ANSARILoadCreationMode</span><span class="pun">;</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="typ">ANSARIEDIASNLicensePlateId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _licensePlateId</span><span class="pun">;</span><span class="pln"> </span><span class="com">//04/12/2024 -  - BUG 255602 - CR 303 - Add license plate field for manual load creation import</span><span class="pln">
        whsLoadTable</span><span class="pun">.</span><span class="pln">insert</span><span class="pun">();</span><span class="pln">

        </span><span class="com">// Read excel file</span><span class="pln">
        </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Byte</span><span class="pun">[]</span><span class="pln">       byteArray</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">Stream</span><span class="pln">    stream</span><span class="pun">;</span><span class="pln">

        stream       </span><span class="pun">=</span><span class="pln"> </span><span class="typ">File</span><span class="pun">::</span><span class="typ">UseFileFromURL</span><span class="pun">(</span><span class="pln">_fileUrl</span><span class="pun">);</span><span class="pln">
        con          </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">readExcelData</span><span class="pun">(</span><span class="pln">stream</span><span class="pun">);</span><span class="pln">
        curLine      </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
        purchLineNum </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i</span><span class="pun">=</span><span class="lit">1</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;=</span><span class="pln"> conLen</span><span class="pun">(</span><span class="pln">con</span><span class="pun">);</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            purchId     </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">con</span><span class="pun">,</span><span class="pln"> curLine</span><span class="pun">),</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
            nextPurchId </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">con</span><span class="pun">,</span><span class="pln"> curLine </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
            itemId      </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">con</span><span class="pun">,</span><span class="pln"> curLine</span><span class="pun">),</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
            purchTable  </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PurchTable</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">purchId</span><span class="pun">);</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="typ">PurchTable</span><span class="pun">::</span><span class="pln">exist</span><span class="pun">(</span><span class="pln">purchId</span><span class="pun">))</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">purchId </span><span class="pun">!=</span><span class="pln"> nextPurchId</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="com">// Create ShipmentId</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">ShipmentId</span><span class="pln">            </span><span class="pun">=</span><span class="pln"> whsShipmentTable</span><span class="pun">.</span><span class="pln">getShipmentId</span><span class="pun">();</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pln">                </span><span class="pun">=</span><span class="pln"> whsLoadTable</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">WorkTransType</span><span class="pln">         </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSWorkTransType</span><span class="pun">::</span><span class="typ">Purch</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">OrderNum</span><span class="pln">              </span><span class="pun">=</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">AccountNum</span><span class="pln">            </span><span class="pun">=</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">OrderAccount</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">DeliveryName</span><span class="pln">          </span><span class="pun">=</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">DeliveryName</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">DeliveryPostalAddress</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">DeliveryPostalAddress</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">CountryRegionISOCode</span><span class="pln">  </span><span class="pun">=</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">CountyOrigDest</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">DlvTermId</span><span class="pln">             </span><span class="pun">=</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">DlvTerm</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">InventSiteId</span><span class="pln">          </span><span class="pun">=</span><span class="pln"> _siteId</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">InventLocationId</span><span class="pln">      </span><span class="pun">=</span><span class="pln"> _locationId</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">CarrierCode</span><span class="pln">           </span><span class="pun">=</span><span class="pln"> whsLoadTable</span><span class="pun">.</span><span class="typ">CarrierCode</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">CarrierServiceCode</span><span class="pln">    </span><span class="pun">=</span><span class="pln"> whsLoadTable</span><span class="pun">.</span><span class="typ">CarrierServiceCode</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">CarrierGroupCode</span><span class="pln">      </span><span class="pun">=</span><span class="pln"> whsLoadTable</span><span class="pun">.</span><span class="typ">CarrierGroupCode</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">LoadDirection</span><span class="pln">         </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSLoadDirection</span><span class="pun">::</span><span class="typ">Inbound</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="typ">CustomerRef</span><span class="pln">           </span><span class="pun">=</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">VendorRef</span><span class="pun">;</span><span class="pln">
                    whsShipmentTable</span><span class="pun">.</span><span class="pln">insert</span><span class="pun">();</span><span class="pln">
                    </span><span class="com">//03/14/2024 - - BUG 255602 - CR 303 - Add license plate field for manual load creation import - START</span><span class="pln">
                    whsUOMStructure</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
                    whsUOMStructure</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pln">                 </span><span class="pun">=</span><span class="pln"> whsShipmentTable</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pun">;</span><span class="pln">
                    whsUOMStructure</span><span class="pun">.</span><span class="typ">ShipmentId</span><span class="pln">             </span><span class="pun">=</span><span class="pln"> whsShipmentTable</span><span class="pun">.</span><span class="typ">ShipmentId</span><span class="pun">;</span><span class="pln">
                    whsUOMStructure</span><span class="pun">.</span><span class="typ">Module</span><span class="pln">                 </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSModule</span><span class="pun">::</span><span class="typ">Purch</span><span class="pun">;</span><span class="pln">
                    whsUOMStructure</span><span class="pun">.</span><span class="typ">LicensePlateId</span><span class="pln">         </span><span class="pun">=</span><span class="pln"> _licensePlateId</span><span class="pun">;</span><span class="pln">
                    whsUOMStructure</span><span class="pun">.</span><span class="pln">insert</span><span class="pun">();</span><span class="pln">
                    </span><span class="com">//03/14/2024 - - BUG 255602 - CR 303 - Add license plate field for manual load creation import - END</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">

                </span><span class="typ">InventTable</span><span class="pln"> inventTable</span><span class="pun">;</span><span class="pln">

                </span><span class="com">// Search for item based on ItemId or Search Name</span><span class="pln">
                </span><span class="kwd">select</span><span class="pln"> firstonly </span><span class="typ">ItemId</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> inventTable
                    </span><span class="kwd">where</span><span class="pln"> inventTable</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> itemId
                    exists </span><span class="kwd">join</span><span class="pln"> validatePurchLine
                        </span><span class="kwd">where</span><span class="pln"> validatePurchLine</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pln">
                        </span><span class="pun">&amp;&amp;</span><span class="pln">    validatePurchLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pln">  </span><span class="pun">==</span><span class="pln"> inventTable</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">;</span><span class="pln">

                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">inventTable</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="kwd">select</span><span class="pln"> firstonly </span><span class="typ">ItemId</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> inventTable
                        </span><span class="kwd">where</span><span class="pln"> inventTable</span><span class="pun">.</span><span class="typ">NameAlias</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> itemId
                        exists </span><span class="kwd">join</span><span class="pln"> validatePurchLine
                            </span><span class="kwd">where</span><span class="pln"> validatePurchLine</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> purchTable</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pln">
                            </span><span class="pun">&amp;&amp;</span><span class="pln">    validatePurchLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pln">  </span><span class="pun">==</span><span class="pln"> inventTable</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">;</span><span class="pln">

                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">inventTable</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">)</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        itemId </span><span class="pun">=</span><span class="pln"> inventTable</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">;</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                    </span><span class="kwd">else</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        errorList </span><span class="pun">+=</span><span class="pln"> strFmt</span><span class="pun">(</span><span class="str">"@ANSARI:LoadPOError"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">'\n'</span><span class="pun">,</span><span class="pln"> purchId</span><span class="pun">,</span><span class="pln"> itemId</span><span class="pun">);</span><span class="pln">
                        curLine</span><span class="pun">++;</span><span class="pln">
                        hasError </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                        </span><span class="kwd">continue</span><span class="pun">;</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">

                </span><span class="kwd">select</span><span class="pln"> firstonly purchLine
                    </span><span class="kwd">where</span><span class="pln"> purchLine</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> purchId
                    </span><span class="pun">&amp;&amp;</span><span class="pln">    purchLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pln">  </span><span class="pun">==</span><span class="pln"> itemId</span><span class="pun">;</span><span class="pln">
                
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">purchRecIdSet</span><span class="pun">.</span><span class="kwd">in</span><span class="pun">(</span><span class="pln">purchLine</span><span class="pun">.</span><span class="typ">RecId</span><span class="pun">))</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="com">// Build load lines</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="pln">initFromPurchLine</span><span class="pun">(</span><span class="pln">purchLine</span><span class="pun">);</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pln">          </span><span class="pun">=</span><span class="pln"> whsLoadTable</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pun">;</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">InventTransType</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">InventTransType</span><span class="pun">::</span><span class="typ">Purch</span><span class="pun">;</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">LoadDirection</span><span class="pln">   </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSLoadDirection</span><span class="pun">::</span><span class="typ">Inbound</span><span class="pun">;</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">OrderNum</span><span class="pln">        </span><span class="pun">=</span><span class="pln"> purchLine</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pun">;</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pln">          </span><span class="pun">=</span><span class="pln"> purchLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">;</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">Qty</span><span class="pln">             </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">con</span><span class="pun">,</span><span class="pln"> curLine</span><span class="pun">),</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="pln">UOM             </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">con</span><span class="pun">,</span><span class="pln"> curLine</span><span class="pun">),</span><span class="pln"> </span><span class="lit">4</span><span class="pun">);</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">PackingQty</span><span class="pln">      </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSInventTable</span><span class="pun">::</span><span class="pln">getDefaultPackingQty</span><span class="pun">(</span><span class="pln">whsLoadLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">,</span><span class="pln"> purchLine</span><span class="pun">.</span><span class="typ">InventDimId</span><span class="pun">);</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">ShipmentId</span><span class="pln">      </span><span class="pun">=</span><span class="pln"> whsShipmentTable</span><span class="pun">.</span><span class="typ">ShipmentId</span><span class="pun">;</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="pln">insert</span><span class="pun">();</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
                </span><span class="kwd">else</span><span class="pln"> 
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="com">// added by ext-ransari</span><span class="pln">
                    ttsbegin</span><span class="pun">;</span><span class="pln">
                    </span><span class="kwd">select</span><span class="pln"> forupdate whsLoadLine </span><span class="kwd">where</span><span class="pln"> 
                            whsLoadLine</span><span class="pun">.</span><span class="typ">OrderNum</span><span class="pln">  </span><span class="pun">==</span><span class="pln"> purchLine</span><span class="pun">.</span><span class="typ">PurchId</span><span class="pln">
                        </span><span class="pun">&amp;&amp;</span><span class="pln">  whsLoadLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pln">    </span><span class="pun">==</span><span class="pln"> purchLine</span><span class="pun">.</span><span class="typ">ItemId</span><span class="pun">;;</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="typ">Qty</span><span class="pln">             </span><span class="pun">+=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">conPeek</span><span class="pun">(</span><span class="pln">con</span><span class="pun">,</span><span class="pln"> curLine</span><span class="pun">),</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln">
                    whsLoadLine</span><span class="pun">.</span><span class="pln">update</span><span class="pun">();</span><span class="pln">
                    ttscommit</span><span class="pun">;</span><span class="pln">
                    </span><span class="com">// added by ext-ransari </span><span class="pln">
                </span><span class="pun">}</span><span class="pln">

                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">curLine </span><span class="pun">==</span><span class="pln"> i</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    curLine</span><span class="pun">++;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">

                purchRecIdSet</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="pln">purchLine</span><span class="pun">.</span><span class="typ">RecId</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">throw</span><span class="pln"> error</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"@ANSARI:LoadPOError"</span><span class="pun">,</span><span class="pln"> purchId</span><span class="pun">,</span><span class="pln"> itemId</span><span class="pun">));</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">hasError </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            container shipments </span><span class="pun">=</span><span class="pln"> whsLoadTable</span><span class="pun">.</span><span class="pln">getShipmentIds</span><span class="pun">();</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">shipments </span><span class="pun">!=</span><span class="pln"> conNull</span><span class="pun">())</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                info</span><span class="pun">(</span><span class="pln">con2Str</span><span class="pun">(</span><span class="pln">errorList</span><span class="pun">,</span><span class="pln"> </span><span class="str">'\n'</span><span class="pun">));</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="kwd">else</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">throw</span><span class="pln"> error</span><span class="pun">(</span><span class="pln">con2Str</span><span class="pun">(</span><span class="pln">errorList</span><span class="pun">,</span><span class="pln"> </span><span class="str">'\n'</span><span class="pun">));</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        info</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"@ANSARI:LoadCreated"</span><span class="pun">,</span><span class="pln"> whsLoadTable</span><span class="pun">.</span><span class="typ">LoadId</span><span class="pun">));</span><span class="pln">

        ttscommit</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
    </span><span class="com">/// Reads data from Excel sheet</span><span class="pln">
    </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
    </span><span class="com">/// &lt;param name = "_stream"&gt;Stream of Excel file&lt;/param&gt;</span><span class="pln">
    </span><span class="com">/// &lt;returns&gt;Two dimensional container hold Excel data&lt;/returns&gt;</span><span class="pln">
    </span><span class="com">/// &lt;remarks&gt;</span><span class="pln">
    </span><span class="com">/// Jan 30, 2019 - ANSARI - Mod 018 Load creation import</span><span class="pln">
    </span><span class="com">/// &lt;/remarks&gt;</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> container readExcelData</span><span class="pun">(</span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">Stream</span><span class="pln">     _stream</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelWorksheet</span><span class="pln"> worksheet</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pln">   </span><span class="kwd">package</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">OfficeOpenXml</span><span class="pun">.</span><span class="typ">ExcelPackage</span><span class="pun">(</span><span class="pln">_stream</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">int</span><span class="pln">                          iRowCount</span><span class="pun">,</span><span class="pln">iCellCount</span><span class="pun">;</span><span class="pln">
        anytype                      anyData</span><span class="pun">;</span><span class="pln">
        container                    conRow</span><span class="pun">,</span><span class="pln">ret</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">WHSParameters</span><span class="pln">                whsParameters </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSParameters</span><span class="pun">::</span><span class="pln">find</span><span class="pun">();</span><span class="pln">
       
        </span><span class="kwd">try</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">package</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                worksheet  </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">package</span><span class="pun">.</span><span class="pln">get_Workbook</span><span class="pun">().</span><span class="pln">get_Worksheets</span><span class="pun">().</span><span class="typ">Copy</span><span class="pun">(</span><span class="pln">whsParameters</span><span class="pun">.</span><span class="typ">ANSARILoadExcelSheet</span><span class="pun">,</span><span class="pln"> whsParameters</span><span class="pun">.</span><span class="typ">ANSARILoadExcelJournal</span><span class="pun">);</span><span class="pln">
                </span><span class="kwd">var</span><span class="pln"> cells  </span><span class="pun">=</span><span class="pln"> worksheet</span><span class="pun">.</span><span class="pln">get_Cells</span><span class="pun">();</span><span class="pln">
                iRowCount  </span><span class="pun">=</span><span class="pln"> worksheet</span><span class="pun">.</span><span class="pln">get_Dimension</span><span class="pun">().</span><span class="pln">get_End</span><span class="pun">().</span><span class="pln">get_Row</span><span class="pun">();</span><span class="pln">
                iCellCount </span><span class="pun">=</span><span class="pln"> worksheet</span><span class="pun">.</span><span class="pln">get_Dimension</span><span class="pun">().</span><span class="pln">get_End</span><span class="pun">().</span><span class="pln">get_Column</span><span class="pun">();</span><span class="pln">

                </span><span class="com">// Start at row 2 to allow for headers in Excel</span><span class="pln">
                </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">2</span><span class="pun">;</span><span class="pln">i</span><span class="pun">&lt;=</span><span class="pln">iRowCount</span><span class="pun">;</span><span class="pln">i</span><span class="pun">++)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    conRow </span><span class="pun">=</span><span class="pln"> conNull</span><span class="pun">();</span><span class="pln">

                    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> j</span><span class="pun">=</span><span class="lit">1</span><span class="pun">;</span><span class="pln">j</span><span class="pun">&lt;=</span><span class="pln">iCellCount</span><span class="pun">;</span><span class="pln">j</span><span class="pun">++)</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        anyData</span><span class="pun">=</span><span class="pln"> cells</span><span class="pun">.</span><span class="pln">get_Item</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln"> j</span><span class="pun">).</span><span class="pln">get_Value</span><span class="pun">();</span><span class="pln">

                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">anyData </span><span class="pun">&amp;&amp;</span><span class="pln"> j </span><span class="pun">==</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">

                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">anyData</span><span class="pun">)</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            conRow </span><span class="pun">+=</span><span class="pln"> anyData</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">

                        </span><span class="kwd">else</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            conRow </span><span class="pun">+=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">

                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">conRow</span><span class="pun">)</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        conRow </span><span class="pun">+=</span><span class="pln"> iRowCount</span><span class="pun">;</span><span class="pln">

                        ret </span><span class="pun">=</span><span class="pln"> conIns</span><span class="pun">(</span><span class="pln">ret</span><span class="pun">,</span><span class="pln">i</span><span class="pun">,</span><span class="pln">conRow</span><span class="pun">);</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Exception</span><span class="pun">::</span><span class="typ">CLRError</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">throw</span><span class="pln"> error</span><span class="pun">(</span><span class="str">"@SYS135884"</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">return</span><span class="pln"> ret</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span>

<span class="pln">
  
</span><span class="pun">[</span><span class="typ">Form</span><span class="pun">]</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">ANSARILoadCreationImport</span><span class="pln"> </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">FormRun</span><span class="pln"> 
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">WorkflowImportDialog</span><span class="pln">    workflowImportDialog</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">FilePath</span><span class="pln">                configurationFilePath</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">Stream</span><span class="pln">        fileOpen</span><span class="pun">;</span><span class="pln">
   
    
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> init</span><span class="pun">()</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">FileUpload</span><span class="pln">          uploadControl</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">WHSParameters</span><span class="pln">       whsParameters </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WHSParameters</span><span class="pun">::</span><span class="pln">find</span><span class="pun">();</span><span class="pln">

        </span><span class="kwd">super</span><span class="pun">();</span><span class="pln">

        </span><span class="typ">ANSARILoadTemplateId</span><span class="pun">.</span><span class="pln">text</span><span class="pun">(</span><span class="pln">whsParameters</span><span class="pun">.</span><span class="typ">ANSARIWHSLoadTemplateId</span><span class="pun">);</span><span class="pln">

        uploadControl </span><span class="pun">=</span><span class="pln"> fileuploadControl</span><span class="pun">;</span><span class="pln">
        uploadControl</span><span class="pun">.</span><span class="pln">notifyUploadCompleted </span><span class="pun">+=</span><span class="pln">  eventhandler</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="typ">UploadCompleted</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
    </span><span class="com">///</span><span class="pln">
    </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">UploadCompleted</span><span class="pun">()</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">FileUploadTemporaryStorageResult</span><span class="pln"> fileUploadResult </span><span class="pun">=</span><span class="pln"> </span><span class="typ">FileUploadControl</span><span class="pun">.</span><span class="pln">getFileUploadResult</span><span class="pun">();</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">fileUploadResult </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> fileUploadResult</span><span class="pun">.</span><span class="pln">getUploadStatus</span><span class="pun">())</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            configurationFilePath </span><span class="pun">=</span><span class="pln"> fileUploadResult</span><span class="pun">.</span><span class="pln">getDownloadUrl</span><span class="pun">();</span><span class="pln">
            fileOpen </span><span class="pun">=</span><span class="pln"> fileUploadResult</span><span class="pun">.</span><span class="pln">openResult</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">WorkflowImportDialog</span><span class="pln"> parmWorkflowImportDialog</span><span class="pun">(</span><span class="typ">WorkflowImportDialog</span><span class="pln"> _workflowImportDialog </span><span class="pun">=</span><span class="pln"> workflowImportDialog</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        workflowImportDialog </span><span class="pun">=</span><span class="pln"> _workflowImportDialog</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> workflowImportDialog</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">[</span><span class="typ">Control</span><span class="pun">(</span><span class="str">"String"</span><span class="pun">)]</span><span class="pln">
    </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">ANSARIWHSASNLicensePlateId</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;returns&gt;&lt;/returns&gt;</span><span class="pln">
        </span><span class="com">/// //04/12/2024 - - BUG 255602 - CR 303 - Add license plate field for manual load creation import</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> validate</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">var</span><span class="pln">     pattern </span><span class="pun">=</span><span class="pln"> </span><span class="pun">@</span><span class="str">"[A-Za-z]"</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">boolean</span><span class="pln"> ret</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">var</span><span class="pln"> result1 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Text</span><span class="pun">.</span><span class="typ">RegularExpressions</span><span class="pun">.</span><span class="typ">Regex</span><span class="pun">(</span><span class="pln">pattern</span><span class="pun">).</span><span class="typ">Match</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">valueStr</span><span class="pun">()).</span><span class="typ">Success</span><span class="pun">;</span><span class="pln">
            ret </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">super</span><span class="pun">();</span><span class="pln">
            </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">result1 </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                ret </span><span class="pun">=</span><span class="pln"> checkFailed</span><span class="pun">(</span><span class="str">"Invalid format"</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> ret</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="com">//04/12/2024 - - BUG 255602 - CR 303 - Add license plate field for manual load creation import</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">[</span><span class="typ">Control</span><span class="pun">(</span><span class="str">"CommandButton"</span><span class="pun">)]</span><span class="pln">
    </span><span class="kwd">class</span><span class="pln"> OK
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> clicked</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">ANSARILoadCreationService</span><span class="pln"> service </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ANSARILoadCreationService</span><span class="pun">();</span><span class="pln">
            
            </span><span class="kwd">if</span><span class="pun">(</span><span class="typ">ANSARIWHSASNLicensePlateId</span><span class="pun">.</span><span class="pln">valueStr</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pun">)</span><span class="pln"> </span><span class="com">//04/12/2024  - BUG 255602 - CR 303 - Add license plate field for manual load creation import</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">throw</span><span class="pln"> </span><span class="typ">Error</span><span class="pun">(</span><span class="str">"BOL/Container must be filled in"</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                service</span><span class="pun">.</span><span class="pln">process</span><span class="pun">(</span><span class="pln">configurationFilePath</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ANSARIInventSiteId</span><span class="pun">.</span><span class="pln">valueStr</span><span class="pun">(),</span><span class="pln"> </span><span class="typ">ANSARIInventLocationId</span><span class="pun">.</span><span class="pln">valueStr</span><span class="pun">(),</span><span class="pln"> </span><span class="typ">ANSARILoadTemplateId</span><span class="pun">.</span><span class="pln">valueStr</span><span class="pun">(),</span><span class="pln"> </span><span class="typ">ANSARIWHSASNLicensePlateId</span><span class="pun">.</span><span class="pln">valueStr</span><span class="pun">());</span><span class="pln"> </span><span class="com">//03/14/2024 -  - BUG 255602 - CR 303 - Add license plate field for manual load creation import</span><span class="pln">
                </span><span class="kwd">super</span><span class="pun">();</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">        
        </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span>

<span class="pln">
python3 </span><span class="pun">-</span><span class="pln">m pip install </span><span class="pun">-</span><span class="pln">r requirements</span><span class="pun">.</span><span class="pln">txt

python3 manage</span><span class="pun">.</span><span class="pln">py makemigrations

python3 manage</span><span class="pun">.</span><span class="pln">py migrate </span><span class="pun">--</span><span class="pln">run</span><span class="pun">-</span><span class="pln">syncdb

python3 manage</span><span class="pun">.</span><span class="pln">py runserver

ctrl </span><span class="pun">+</span><span class="pln">c

sh run</span><span class="pun">.</span><span class="pln">sh

ctrl </span><span class="pun">+</span><span class="pln">c

sh install</span><span class="pun">.</span><span class="pln">sh

sh test</span><span class="pun">.</span><span class="pln">sh</span>

Admin

<span class="pln">
</span><span class="kwd">from</span><span class="pln"> django</span><span class="pun">.</span><span class="pln">contrib </span><span class="kwd">import</span><span class="pln"> admin
</span><span class="kwd">from</span><span class="pln"> </span><span class="pun">.</span><span class="pln">models </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Item</span><span class="pln">

</span><span class="com"># Register your models here.</span><span class="pln">

admin</span><span class="pun">.</span><span class="pln">site</span><span class="pun">.</span><span class="kwd">register</span><span class="pun">(</span><span class="typ">Item</span><span class="pun">)</span><span class="pln">
</span>

urls

<span class="pln">
</span><span class="kwd">from</span><span class="pln"> django</span><span class="pun">.</span><span class="pln">urls </span><span class="kwd">import</span><span class="pln"> include</span><span class="pun">,</span><span class="pln"> path
</span><span class="kwd">from</span><span class="pln"> django</span><span class="pun">.</span><span class="pln">contrib </span><span class="kwd">import</span><span class="pln"> admin
</span><span class="kwd">from</span><span class="pln"> inventoryapp</span><span class="pun">.</span><span class="pln">views </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">InventoryItemView</span><span class="pun">,</span><span class="pln"> </span><span class="typ">SortItemsView</span><span class="pun">,</span><span class="pln"> </span><span class="typ">QueryItemsView</span><span class="pln">

</span><span class="com"># Add your URLS in respective place.</span><span class="pln">

urlpatterns </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
    path</span><span class="pun">(</span><span class="str">'admin/'</span><span class="pun">,</span><span class="pln"> admin</span><span class="pun">.</span><span class="pln">site</span><span class="pun">.</span><span class="pln">urls</span><span class="pun">),</span><span class="pln">
    path</span><span class="pun">(</span><span class="str">'inventory/items/'</span><span class="pun">,</span><span class="pln"> </span><span class="typ">InventoryItemView</span><span class="pun">.</span><span class="pln">as_view</span><span class="pun">(),</span><span class="pln"> name</span><span class="pun">=</span><span class="str">'inventory-item'</span><span class="pun">),</span><span class="pln">
    path</span><span class="pun">(</span><span class="str">'inventory/items/&lt;int:pk&gt;/'</span><span class="pun">,</span><span class="pln"> </span><span class="typ">InventoryItemView</span><span class="pun">.</span><span class="pln">as_view</span><span class="pun">(),</span><span class="pln"> name</span><span class="pun">=</span><span class="str">'inventory-detail'</span><span class="pun">),</span><span class="pln">
    path</span><span class="pun">(</span><span class="str">'items/sort/'</span><span class="pun">,</span><span class="pln"> </span><span class="typ">SortItemsView</span><span class="pun">.</span><span class="pln">as_view</span><span class="pun">(),</span><span class="pln"> name</span><span class="pun">=</span><span class="str">'sort-items'</span><span class="pun">),</span><span class="pln">
    path</span><span class="pun">(</span><span class="str">'items/query/&lt;str:category&gt;/'</span><span class="pun">,</span><span class="pln"> </span><span class="typ">QueryItemsView</span><span class="pun">.</span><span class="pln">as_view</span><span class="pun">(),</span><span class="pln"> name</span><span class="pun">=</span><span class="str">'query-items'</span><span class="pun">),</span><span class="pln">
</span><span class="pun">]</span>

View

<span class="pln">
</span><span class="kwd">from</span><span class="pln"> rest_framework </span><span class="kwd">import</span><span class="pln"> viewsets
</span><span class="kwd">from</span><span class="pln"> rest_framework</span><span class="pun">.</span><span class="pln">views </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">APIView</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> rest_framework</span><span class="pun">.</span><span class="pln">response </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Response</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> inventoryapp</span><span class="pun">.</span><span class="pln">serializers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">ItemSerializer</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> </span><span class="pun">.</span><span class="pln">models </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Item</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> rest_framework </span><span class="kwd">import</span><span class="pln"> status

</span><span class="com"># Create your views here</span><span class="pln">

</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">SortItemsView</span><span class="pun">(</span><span class="typ">APIView</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">def</span><span class="pln"> </span><span class="kwd">get</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> request</span><span class="pun">):</span><span class="pln">
        items </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Item</span><span class="pun">.</span><span class="pln">objects</span><span class="pun">.</span><span class="pln">all</span><span class="pun">().</span><span class="pln">order_by</span><span class="pun">(</span><span class="str">'price'</span><span class="pun">)</span><span class="pln">
        serializer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ItemSerializer</span><span class="pun">(</span><span class="pln">items</span><span class="pun">,</span><span class="pln"> many</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">(</span><span class="pln">serializer</span><span class="pun">.</span><span class="pln">data</span><span class="pun">)</span><span class="pln">

</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">QueryItemsView</span><span class="pun">(</span><span class="typ">APIView</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">def</span><span class="pln"> </span><span class="kwd">get</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> request</span><span class="pun">,</span><span class="pln"> category</span><span class="pun">):</span><span class="pln">
        items </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Item</span><span class="pun">.</span><span class="pln">objects</span><span class="pun">.</span><span class="pln">filter</span><span class="pun">(</span><span class="pln">category</span><span class="pun">=</span><span class="pln">category</span><span class="pun">)</span><span class="pln">
        serializer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ItemSerializer</span><span class="pun">(</span><span class="pln">items</span><span class="pun">,</span><span class="pln"> many</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">(</span><span class="pln">serializer</span><span class="pun">.</span><span class="pln">data</span><span class="pun">)</span><span class="pln">

</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">InventoryItemView</span><span class="pun">(</span><span class="typ">APIView</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">def</span><span class="pln"> </span><span class="kwd">get</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> request</span><span class="pun">):</span><span class="pln">
        items </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Item</span><span class="pun">.</span><span class="pln">objects</span><span class="pun">.</span><span class="pln">all</span><span class="pun">()</span><span class="pln">
        serializer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ItemSerializer</span><span class="pun">(</span><span class="pln">items</span><span class="pun">,</span><span class="pln"> many</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">(</span><span class="pln">serializer</span><span class="pun">.</span><span class="pln">data</span><span class="pun">)</span><span class="pln">

 </span><span class="kwd">def</span><span class="pln"> post</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> request</span><span class="pun">):</span><span class="pln">
    serializer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ItemSerializer</span><span class="pun">(</span><span class="pln">data</span><span class="pun">=</span><span class="pln">request</span><span class="pun">.</span><span class="pln">data</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> serializer</span><span class="pun">.</span><span class="pln">is_valid</span><span class="pun">():</span><span class="pln">
        barcode </span><span class="pun">=</span><span class="pln"> serializer</span><span class="pun">.</span><span class="pln">validated_data</span><span class="pun">[</span><span class="str">'barcode'</span><span class="pun">]</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">Item</span><span class="pun">.</span><span class="pln">objects</span><span class="pun">.</span><span class="pln">filter</span><span class="pun">(</span><span class="pln">barcode</span><span class="pun">=</span><span class="pln">barcode</span><span class="pun">).</span><span class="pln">exists</span><span class="pun">():</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">({</span><span class="str">'barcode'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">'item with this barcode already exists'</span><span class="pun">]},</span><span class="pln"> status</span><span class="pun">=</span><span class="pln">status</span><span class="pun">.</span><span class="pln">HTTP_400_BAD_REQUEST</span><span class="pun">)</span><span class="pln">
        serializer</span><span class="pun">.</span><span class="pln">save</span><span class="pun">()</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">(</span><span class="pln">serializer</span><span class="pun">.</span><span class="pln">data</span><span class="pun">,</span><span class="pln"> status</span><span class="pun">=</span><span class="pln">status</span><span class="pun">.</span><span class="pln">HTTP_201_CREATED</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">(</span><span class="pln">serializer</span><span class="pun">.</span><span class="pln">errors</span><span class="pun">,</span><span class="pln"> status</span><span class="pun">=</span><span class="pln">status</span><span class="pun">.</span><span class="pln">HTTP_400_BAD_REQUEST</span><span class="pun">)</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> </span><span class="kwd">delete</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> request</span><span class="pun">,</span><span class="pln"> pk</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">try</span><span class="pun">:</span><span class="pln">
        item </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Item</span><span class="pun">.</span><span class="pln">objects</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="pln">pk</span><span class="pun">=</span><span class="pln">pk</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">except</span><span class="pln"> </span><span class="typ">Item</span><span class="pun">.</span><span class="typ">DoesNotExist</span><span class="pun">:</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">(</span><span class="pln">status</span><span class="pun">=</span><span class="pln">status</span><span class="pun">.</span><span class="pln">HTTP_404_NOT_FOUND</span><span class="pun">)</span><span class="pln">
    item</span><span class="pun">.</span><span class="kwd">delete</span><span class="pun">()</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Response</span><span class="pun">(</span><span class="pln">status</span><span class="pun">=</span><span class="pln">status</span><span class="pun">.</span><span class="pln">HTTP_204_NO_CONTENT</span><span class="pun">)</span><span class="pln">

</span>

from django.contrib import admin from .models import Item # Register your models here. admin.site.register(Item)

<span class="pln">
</span><span class="kwd">from</span><span class="pln"> rest_framework </span><span class="kwd">import</span><span class="pln"> serializers
</span><span class="kwd">from</span><span class="pln"> </span><span class="pun">.</span><span class="pln">models </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Item</span><span class="pln">
</span><span class="com">#Create your serializers here.</span><span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">ItemSerializer</span><span class="pun">(</span><span class="pln">serializers</span><span class="pun">.</span><span class="typ">ModelSerializer</span><span class="pun">):</span><span class="pln">
	</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Meta</span><span class="pun">:</span><span class="pln">
	model</span><span class="pun">=</span><span class="typ">Item</span><span class="pln">
	fields</span><span class="pun">=</span><span class="pln"> </span><span class="str">'__all__'</span>
<span class="pln">
</span><span class="kwd">from</span><span class="pln"> django</span><span class="pun">.</span><span class="pln">db </span><span class="kwd">import</span><span class="pln"> models 
</span><span class="com"># Create your models here.</span><span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Item</span><span class="pun">(</span><span class="pln">models</span><span class="pun">.</span><span class="typ">Model</span><span class="pun">):</span><span class="pln">
	id </span><span class="pun">=</span><span class="pln">models</span><span class="pun">.</span><span class="typ">AutoField</span><span class="pun">()</span><span class="pln">
	name</span><span class="pun">=</span><span class="pln">models</span><span class="pun">.</span><span class="typ">CharField</span><span class="pun">(</span><span class="pln">max_length</span><span class="pun">=</span><span class="lit">250</span><span class="pun">)</span><span class="pln">
	category</span><span class="pun">=</span><span class="pln">models</span><span class="pun">.</span><span class="typ">CharField</span><span class="pun">(</span><span class="pln">max_length</span><span class="pun">=</span><span class="lit">250</span><span class="pun">)</span><span class="pln">
	price</span><span class="pun">=</span><span class="pln">models</span><span class="pun">.</span><span class="typ">IntegerField</span><span class="pun">()</span><span class="pln">
	quantity</span><span class="pun">=</span><span class="pln">models</span><span class="pun">.</span><span class="typ">IntegerField</span><span class="pun">()</span><span class="pln">
	barcode</span><span class="pun">=</span><span class="pln">models</span><span class="pun">.</span><span class="pln"> </span><span class="typ">IntegerField</span><span class="pln"> </span><span class="pun">(</span><span class="pln">unique</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span>
<span class="pln">
</span><span class="com">// salestable_extension</span><span class="pln">
</span><span class="com">// Add a tax exempt flag to customer account and Sales orders - Start</span><span class="pln">
    </span><span class="pun">[</span><span class="typ">SysClientCacheDataMethodAttribute</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">)]</span><span class="pln">
    display </span><span class="typ">NoYesId</span><span class="pln"> atnylaTaxExempt</span><span class="pun">()</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CustTable</span><span class="pln"> custTable</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">select</span><span class="pln"> firstonly </span><span class="typ">ATNYLATaxExempt</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> custTable
            </span><span class="kwd">where</span><span class="pln"> custTable</span><span class="pun">.</span><span class="typ">AccountNum</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="typ">CustAccount</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">return</span><span class="pln"> custTable</span><span class="pun">.</span><span class="typ">ATNYLATaxExempt</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="com">//  Add a tax exempt flag to customer account and Sales orders - Start</span><span class="pln">

</span>
<span class="pln">
</span><span class="com">/// &lt;summary&gt;</span><span class="pln">
    </span><span class="com">/// This method will sent email to sales invoice</span><span class="pln">
    </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> sentEmailToInvoicePrint</span><span class="pun">(</span><span class="typ">RecId</span><span class="pln"> _jourRecId</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">SalesInvoiceHeaderFooterTmp</span><span class="pln"> salesInvoiceHeaderTmpLoc</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">SalesInvoiceTmp</span><span class="pln"> salesInvoiceTmpLoc</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">CustInvoiceJour</span><span class="pln"> custInvoiceJourLoc1</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">SalesLine</span><span class="pln"> salesLineLoc</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">SalesId</span><span class="pln"> salesIdloc</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">int</span><span class="pln"> countSalesId</span><span class="pun">,</span><span class="pln">countInvoiceSalesId</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">CustInvoiceTrans</span><span class="pln"> custInvoiceTransLoc</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">SalesId</span><span class="pln"> salesIDMap</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">int</span><span class="pln">   countPrintInvoiceMap</span><span class="pun">;</span><span class="pln">
        </span><span class="typ">CustParameters</span><span class="pln"> custParameters</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">select</span><span class="pln"> firstonly custParameters</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">custParameters</span><span class="pun">.</span><span class="typ">ATNYLAInvoicePrintingNoYes</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">Yes</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> custParameters</span><span class="pun">.</span><span class="typ">ATNYLAPrintEmail</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">//retrieve from map</span><span class="pln">
            mapEnumerator </span><span class="pun">=</span><span class="pln"> map</span><span class="pun">.</span><span class="pln">getEnumerator</span><span class="pun">();</span><span class="pln">
            </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mapEnumerator</span><span class="pun">.</span><span class="pln">moveNext</span><span class="pun">())</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                salesIDMap       </span><span class="pun">=</span><span class="pln"> mapEnumerator</span><span class="pun">.</span><span class="pln">currentKey</span><span class="pun">();</span><span class="pln">
                countPrintInvoiceMap </span><span class="pun">=</span><span class="pln"> mapEnumerator</span><span class="pun">.</span><span class="pln">currentValue</span><span class="pun">();</span><span class="pln">
            
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">countPrintInvoiceMap </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> salesIDMap</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
           
                    </span><span class="kwd">select</span><span class="pln"> count</span><span class="pun">(</span><span class="typ">RecId</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> custInvoiceTransLoc
                    </span><span class="kwd">join</span><span class="pln"> custInvoiceJourLoc1
                        </span><span class="kwd">where</span><span class="pln"> custInvoiceJourLoc1</span><span class="pun">.</span><span class="pln">salesid </span><span class="pun">==</span><span class="pln"> salesIDMap
                        </span><span class="pun">&amp;&amp;</span><span class="pln"> custInvoiceJourLoc1</span><span class="pun">.</span><span class="typ">InvoiceId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> custInvoiceTransLoc</span><span class="pun">.</span><span class="typ">InvoiceId</span><span class="pln">
                        </span><span class="pun">&amp;&amp;</span><span class="pln"> custInvoiceJourLoc1</span><span class="pun">.</span><span class="typ">InvoiceDate</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> custInvoiceTransLoc</span><span class="pun">.</span><span class="typ">InvoiceDate</span><span class="pun">;</span><span class="pln">
                    
                    countSalesId </span><span class="pun">=</span><span class="pln"> custInvoiceTransLoc</span><span class="pun">.</span><span class="typ">RecId</span><span class="pun">;</span><span class="pln">
               
                    </span><span class="kwd">select</span><span class="pln"> firstonly custInvoiceTransLoc
                    </span><span class="kwd">join</span><span class="pln"> custInvoiceJourLoc1
                        </span><span class="kwd">where</span><span class="pln"> custInvoiceJourLoc1</span><span class="pun">.</span><span class="pln">salesid </span><span class="pun">==</span><span class="pln"> salesIDMap
                        </span><span class="pun">&amp;&amp;</span><span class="pln"> custInvoiceJourLoc1</span><span class="pun">.</span><span class="typ">InvoiceId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> custInvoiceTransLoc</span><span class="pun">.</span><span class="typ">InvoiceId</span><span class="pln">
                        </span><span class="pun">&amp;&amp;</span><span class="pln"> custInvoiceJourLoc1</span><span class="pun">.</span><span class="typ">InvoiceDate</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> custInvoiceTransLoc</span><span class="pun">.</span><span class="typ">InvoiceDate</span><span class="pun">;</span><span class="pln">
                    
                    salesIdloc </span><span class="pun">=</span><span class="pln"> custInvoiceTransLoc</span><span class="pun">.</span><span class="typ">SalesId</span><span class="pun">;</span><span class="pln">

                    
                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">countSalesId </span><span class="pun">!=</span><span class="pln"> countPrintInvoiceMap </span><span class="pun">&amp;&amp;</span><span class="pln"> salesIdloc</span><span class="pun">)</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        </span><span class="typ">ATNYLAEmailer</span><span class="pun">::</span><span class="pln">sendSMTPEmail</span><span class="pun">(</span><span class="pln">custParameters</span><span class="pun">.</span><span class="typ">ATNYLAPrintEmail</span><span class="pun">,</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">'@ATNYLA:MissInvLine'</span><span class="pun">,</span><span class="pln">salesIdloc</span><span class="pun">),</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">'@ATNYLA:SOMissingPrint'</span><span class="pun">,</span><span class="pln">salesIdloc</span><span class="pun">));</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">
</span>
<span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pln">  </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">RunBaseBatch</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">DialogRunbase</span><span class="pln">                               dialog</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">DialogField</span><span class="pln">                                 dialogDefinitionGroupUpdate</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">DMFDefinitionGroupName</span><span class="pln">                      definitionGroupUpdate</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">Filename</span><span class="pln">                                    filename</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="pln">IO</span><span class="pun">.</span><span class="typ">Stream</span><span class="pln">                            fileStream</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">SharedServiceUnitFileID</span><span class="pln">                     fileID</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">DMFDefinitionGroupName</span><span class="pln">                      definitionGroupName</span><span class="pun">;</span><span class="pln">

    </span><span class="com">#define</span><span class="pun">.</span><span class="pln">definitionGroupName</span><span class="pun">(</span><span class="str">"Program products import"</span><span class="pun">)</span><span class="pln">
    </span><span class="com">#define</span><span class="pun">.</span><span class="typ">CurrentVersion</span><span class="pun">(</span><span class="lit">3</span><span class="pun">)</span><span class="pln">
    </span><span class="com">#localmacro.CurrentList</span><span class="pln">
        definitionGroupUpdate</span><span class="pun">,</span><span class="pln">
        filename</span><span class="pun">,</span><span class="pln"> fileID
    </span><span class="com">#endmacro</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">const</span><span class="pln"> str </span><span class="typ">OkButtonName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'OkButton'</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">const</span><span class="pln"> str </span><span class="typ">FileUploadName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'FileUpload'</span><span class="pun">;</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> canGoBatch</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> canGoBatchJournal</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///    Returns a class that contains the methods that are described by the &lt;c&gt;RunBaseDialogable&lt;/c&gt;</span><span class="pln">
        </span><span class="com">///    interface.</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;returns&gt;</span><span class="pln">
        </span><span class="com">///    A class that contains the methods that are described by the &lt;c&gt;RunBaseDialogable&lt;/c&gt; interface.</span><span class="pln">
        </span><span class="com">/// &lt;/returns&gt;</span><span class="pln">
        </span><span class="com">/// &lt;remarks&gt;</span><span class="pln">
        </span><span class="com">///    A dialog can be either built by using the &lt;c&gt;Dialog&lt;/c&gt; class or by using a class that is created</span><span class="pln">
        </span><span class="com">///    in the Application Object Tree (AOT).</span><span class="pln">
        </span><span class="com">/// &lt;/remarks&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">Object</span><span class="pln"> dialog</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">DialogGroup</span><span class="pln">      dialogGroup</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">FormBuildControl</span><span class="pln"> formBuildControl</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">FileUploadBuild</span><span class="pln">  dialogFileUpload</span><span class="pun">;</span><span class="pln">
       

            dialog </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DialogRunbase</span><span class="pun">(</span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">::</span><span class="pln">description</span><span class="pun">(),</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">);</span><span class="pln">

            dialogDefinitionGroupUpdate </span><span class="pun">=</span><span class="pln"> dialog</span><span class="pun">.</span><span class="pln">addFieldValue</span><span class="pun">(</span><span class="pln">extendedTypeStr</span><span class="pun">(</span><span class="typ">DMFDefinitionGroupName</span><span class="pun">),</span><span class="pln"> definitionGroupUpdate</span><span class="pun">);</span><span class="pln">
            dialogDefinitionGroupUpdate</span><span class="pun">.</span><span class="pln">registerOverrideMethod</span><span class="pun">(</span><span class="pln">methodStr</span><span class="pun">(</span><span class="typ">FormStringControl</span><span class="pun">,</span><span class="pln"> lookup</span><span class="pun">),</span><span class="pln"> methodStr</span><span class="pun">(</span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">,</span><span class="pln"> lookUpDefinitionGroup</span><span class="pun">),</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">);</span><span class="pln">
            dialogDefinitionGroupUpdate</span><span class="pun">.</span><span class="kwd">value</span><span class="pun">(#</span><span class="pln">definitionGroupName</span><span class="pun">);</span><span class="pln">

            dialogGroup </span><span class="pun">=</span><span class="pln"> dialog</span><span class="pun">.</span><span class="pln">addGroup</span><span class="pun">(</span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">::</span><span class="pln">description</span><span class="pun">());</span><span class="pln">
            formBuildControl </span><span class="pun">=</span><span class="pln"> dialog</span><span class="pun">.</span><span class="pln">formBuildDesign</span><span class="pun">().</span><span class="pln">control</span><span class="pun">(</span><span class="pln">dialogGroup</span><span class="pun">.</span><span class="pln">name</span><span class="pun">());</span><span class="pln">

            dialogFileUpload </span><span class="pun">=</span><span class="pln"> formBuildControl</span><span class="pun">.</span><span class="pln">addControlEx</span><span class="pun">(</span><span class="pln">classstr</span><span class="pun">(</span><span class="typ">FileUpload</span><span class="pun">),</span><span class="pln"> </span><span class="typ">FileUploadName</span><span class="pun">);</span><span class="pln">
            dialogFileUpload</span><span class="pun">.</span><span class="pln">style</span><span class="pun">(</span><span class="typ">FileUploadStyle</span><span class="pun">::</span><span class="typ">MinimalWithFilename</span><span class="pun">);</span><span class="pln">
            dialogFileUpload</span><span class="pun">.</span><span class="pln">fileTypesAccepted</span><span class="pun">(</span><span class="str">'.xlsx,.xls,.xlsm'</span><span class="pun">);</span><span class="pln">
            dialogFileUpload</span><span class="pun">.</span><span class="pln">baseFileUploadStrategyClassName</span><span class="pun">(</span><span class="pln">classstr</span><span class="pun">(</span><span class="typ">FileUploadTemporaryStorageStrategy</span><span class="pun">));</span><span class="pln">
            dialogFileUpload</span><span class="pun">.</span><span class="pln">fileNameLabel</span><span class="pun">(</span><span class="str">"@SYS308842"</span><span class="pun">);</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> dialog</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///  Looks up the definition group name.</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;param name="_control"&gt;</span><span class="pln">
        </span><span class="com">///     The look up control.</span><span class="pln">
        </span><span class="com">/// &lt;/param&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> lookUpDefinitionGroup</span><span class="pun">(</span><span class="typ">FormStringControl</span><span class="pln"> _control</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">Query</span><span class="pln">                   query</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">QueryBuildDataSource</span><span class="pln">    qbds</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">SysTableLookup</span><span class="pln">          lookup</span><span class="pun">;</span><span class="pln">
            container                   con</span><span class="pun">;</span><span class="pln">
            str                     rangeValue</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroupEntity</span><span class="pln">    definitionGroupEntity</span><span class="pun">;</span><span class="pln">
            </span><span class="com">#define</span><span class="pun">.</span><span class="typ">Import</span><span class="pun">(</span><span class="str">'Program products'</span><span class="pun">)</span><span class="pln">
        
            </span><span class="kwd">while</span><span class="pln"> </span><span class="kwd">select</span><span class="pln"> </span><span class="typ">DefinitionGroup</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> definitionGroupEntity
            </span><span class="kwd">where</span><span class="pln"> definitionGroupEntity</span><span class="pun">.</span><span class="typ">Entity</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="com">#Import</span><span class="pln">
            </span><span class="pun">&amp;&amp;</span><span class="pln">  definitionGroupEntity</span><span class="pun">.</span><span class="typ">DefinitionGroup</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="com">#definitionGroupName</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                con </span><span class="pun">+=</span><span class="pln"> definitionGroupEntity</span><span class="pun">.</span><span class="typ">DefinitionGroup</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            rangeValue </span><span class="pun">=</span><span class="pln"> con2Str</span><span class="pun">(</span><span class="pln">con</span><span class="pun">,</span><span class="pln"> </span><span class="str">','</span><span class="pun">);</span><span class="pln">

            query </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Query</span><span class="pun">();</span><span class="pln">
            qbds </span><span class="pun">=</span><span class="pln"> query</span><span class="pun">.</span><span class="pln">addDataSource</span><span class="pun">(</span><span class="pln">tableNum</span><span class="pun">(</span><span class="typ">DMFDefinitionGroup</span><span class="pun">));</span><span class="pln">
            qbds</span><span class="pun">.</span><span class="pln">addRange</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">DMFDefinitionGroup</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DefinitionGroupName</span><span class="pun">)).</span><span class="kwd">value</span><span class="pun">(</span><span class="pln">rangeValue</span><span class="pun">);</span><span class="pln">

            lookup </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SysTableLookup</span><span class="pun">::</span><span class="pln">newParameters</span><span class="pun">(</span><span class="pln">tableNum</span><span class="pun">(</span><span class="typ">DMFDefinitionGroup</span><span class="pun">),</span><span class="pln"> _control</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
            lookup</span><span class="pun">.</span><span class="pln">parmQuery</span><span class="pun">(</span><span class="pln">query</span><span class="pun">);</span><span class="pln">
            lookup</span><span class="pun">.</span><span class="pln">addLookupField</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">DMFDefinitionGroup</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DefinitionGroupName</span><span class="pun">),</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
            lookup</span><span class="pun">.</span><span class="pln">addLookupField</span><span class="pun">(</span><span class="pln">fieldNum</span><span class="pun">(</span><span class="typ">DMFDefinitionGroup</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Description</span><span class="pun">));</span><span class="pln">
            lookup</span><span class="pun">.</span><span class="pln">performFormLookup</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Disables the dialog Ok button until the file upload is complete.</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;param name="_dialog"&gt;The &lt;c&gt;Runbase&lt;/c&gt; dialog object.&lt;/param&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> dialogPostRun</span><span class="pun">(</span><span class="typ">DialogRunbase</span><span class="pln"> _dialog</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">FileUpload</span><span class="pln"> fileUpload </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">getFormControl</span><span class="pun">(</span><span class="pln">_dialog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FileUploadName</span><span class="pun">);</span><span class="pln">
            fileUpload</span><span class="pun">.</span><span class="pln">notifyUploadCompleted </span><span class="pun">+=</span><span class="pln"> eventhandler</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">uploadCompleted</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">setDialogOkButtonEnabled</span><span class="pun">(</span><span class="pln">_dialog</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Displays the summary of the execution</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> executionStatus</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroupExecution</span><span class="pln">     definitionGroupExecution</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFExecutionSummaryStatus</span><span class="pln">       summaryStatus</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFExecution</span><span class="pln">                    execution</span><span class="pun">;</span><span class="pln">
               
            </span><span class="kwd">select</span><span class="pln"> firstonly </span><span class="typ">ExecutionId</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NoOfRecords</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NumOfTargetNew</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NumOfTargetUpdated</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> definitionGroupExecution
            order </span><span class="kwd">by</span><span class="pln"> </span><span class="typ">CreatedDateTime</span><span class="pln"> desc
            </span><span class="kwd">where</span><span class="pln"> definitionGroupExecution</span><span class="pun">.</span><span class="typ">DefinitionGroup</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="com">#definitionGroupName;</span><span class="pln">
                
            execution </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFExecution</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">definitionGroupExecution</span><span class="pun">.</span><span class="typ">ExecutionId</span><span class="pun">);</span><span class="pln">
        
            summaryStatus </span><span class="pun">=</span><span class="pln"> execution</span><span class="pun">.</span><span class="typ">GetExecutionSummaryStatus</span><span class="pun">();</span><span class="pln">
        
            info</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"@SYS90632"</span><span class="pun">,</span><span class="typ">DateTimeUtil</span><span class="pun">::</span><span class="pln">applyTimeZoneOffset</span><span class="pun">(</span><span class="typ">DateTimeUtil</span><span class="pun">::</span><span class="pln">utcNow</span><span class="pun">(),</span><span class="pln"> </span><span class="typ">DateTimeUtil</span><span class="pun">::</span><span class="pln">getUserPreferredTimeZone</span><span class="pun">())));</span><span class="pln">
            info</span><span class="pun">(</span><span class="pln">strfmt</span><span class="pun">(</span><span class="str">"@ATNYLA:FileReadFrom"</span><span class="pun">,</span><span class="pln"> filename</span><span class="pun">));</span><span class="pln">
            info</span><span class="pun">(</span><span class="pln">strfmt</span><span class="pun">(</span><span class="str">"@ATNYLA:RowsInserted"</span><span class="pun">,</span><span class="pln"> definitionGroupExecution</span><span class="pun">.</span><span class="typ">NumOfTargetNew</span><span class="pun">));</span><span class="pln">
            info</span><span class="pun">(</span><span class="pln">strfmt</span><span class="pun">(</span><span class="str">"@ATNYLA:RecordsUpdated"</span><span class="pun">,</span><span class="pln"> definitionGroupExecution</span><span class="pun">.</span><span class="typ">NumOfTargetUpdated</span><span class="pun">));</span><span class="pln">
            info</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"@ATNYLA:ImportStatus"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DMFExecutionStatusHelper</span><span class="pun">::</span><span class="typ">GetExecutionSummaryStatusText</span><span class="pun">(</span><span class="pln">summaryStatus</span><span class="pun">)));</span><span class="pln">
            info</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"@ATNYLA:ExecutionId"</span><span class="pun">,</span><span class="pln"> definitionGroupExecution</span><span class="pun">.</span><span class="typ">ExecutionId</span><span class="pun">));</span><span class="pln">
            info</span><span class="pun">(</span><span class="str">"@ATNYLA:Importcompleted"</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// After the file has been uploaded, the Ok button is enabled.</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> uploadCompleted</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">FileUpload</span><span class="pln"> fileUpload </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">getFormControl</span><span class="pun">(</span><span class="pln">dialog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FileUploadName</span><span class="pun">);</span><span class="pln">
            fileUpload</span><span class="pun">.</span><span class="pln">notifyUploadCompleted </span><span class="pun">-=</span><span class="pln"> eventhandler</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="typ">UploadCompleted</span><span class="pun">);</span><span class="pln">

            filename </span><span class="pun">=</span><span class="pln"> fileUpload</span><span class="pun">.</span><span class="pln">fileName</span><span class="pun">();</span><span class="pln">

            </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">setDialogOkButtonEnabled</span><span class="pun">(</span><span class="pln">dialog</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Enables or disables the dialog Ok button.</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;param name = "_dialog"&gt;The &lt;c&gt;Runbase&lt;/c&gt; dialog object.&lt;/param&gt;</span><span class="pln">
        </span><span class="com">/// &lt;param name = "_isEnabled"&gt;Indicates to enable or disable the Ok button.&lt;/param&gt;</span><span class="pln">
        </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> setDialogOkButtonEnabled</span><span class="pun">(</span><span class="typ">DialogRunbase</span><span class="pln"> _dialog</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> _isEnabled</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">FormControl</span><span class="pln"> okButtonControl </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">getFormControl</span><span class="pun">(</span><span class="pln">_dialog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">OkButtonName</span><span class="pun">);</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">okButtonControl</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                okButtonControl</span><span class="pun">.</span><span class="pln">enabled</span><span class="pun">(</span><span class="pln">_isEnabled</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Gets the form control</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;Returns&gt; Returns the form control &lt;/Returns&gt;</span><span class="pln">
        </span><span class="kwd">protected</span><span class="pln"> </span><span class="typ">FormControl</span><span class="pln"> getFormControl</span><span class="pun">(</span><span class="typ">DialogRunbase</span><span class="pln"> _dialog</span><span class="pun">,</span><span class="pln"> str _controlName</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> _dialog</span><span class="pun">.</span><span class="pln">formRun</span><span class="pun">().</span><span class="pln">control</span><span class="pun">(</span><span class="pln">_dialog</span><span class="pun">.</span><span class="pln">formRun</span><span class="pun">().</span><span class="pln">controlId</span><span class="pun">(</span><span class="pln"> _controlName</span><span class="pun">));</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Gets the user input values from dialog</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">///  /// &lt;Returns&gt; Returns True/False &lt;/Returns&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> getFromDialog</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">boolean</span><span class="pln"> ret</span><span class="pun">;</span><span class="pln">
            ret </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">super</span><span class="pun">();</span><span class="pln">

            definitionGroupUpdate </span><span class="pun">=</span><span class="pln"> dialogDefinitionGroupUpdate</span><span class="pun">.</span><span class="kwd">value</span><span class="pun">();</span><span class="pln">

            </span><span class="typ">FileUpload</span><span class="pln"> fileUploadControl </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">getFormControl</span><span class="pun">(</span><span class="pln">dialog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FileUploadName</span><span class="pun">);</span><span class="pln">

            </span><span class="typ">FileUploadTemporaryStorageResult</span><span class="pln"> fileUploadResult </span><span class="pun">=</span><span class="pln"> fileUploadControl</span><span class="pun">.</span><span class="pln">getFileUploadResult</span><span class="pun">();</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">fileUploadResult </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> fileUploadResult</span><span class="pun">.</span><span class="pln">getUploadStatus</span><span class="pun">())</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                fileID </span><span class="pun">=</span><span class="pln"> fileUploadResult</span><span class="pun">.</span><span class="pln">getFileId</span><span class="pun">();</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        
            </span><span class="kwd">return</span><span class="pln"> ret</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///    Contains the code that does the actual job of the class.</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> run</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">DMFExecutionId</span><span class="pln">              executionId</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroup</span><span class="pln">          definitionGroup</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroupEntity</span><span class="pln">    definitionGroupEntity</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">boolean</span><span class="pln">                     executeTargetDuringInitialImport</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroupExecution</span><span class="pln"> definitionGroupExecution</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFExecutionSummaryStatus</span><span class="pln">   summaryStatus</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFExecution</span><span class="pln">                execution</span><span class="pun">;</span><span class="pln">
        
            </span><span class="kwd">try</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                definitionGroup </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">::</span><span class="pln">findDMFDefinitionGroup</span><span class="pun">(</span><span class="pln">definitionGroupUpdate</span><span class="pun">);</span><span class="pln">
                </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">::</span><span class="pln">applyTransforms</span><span class="pun">(</span><span class="pln">fileID</span><span class="pun">,</span><span class="pln"> definitionGroup</span><span class="pun">);</span><span class="pln">

                definitionGroupEntity </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">::</span><span class="pln">findDMFDefinitionGroupEntity</span><span class="pun">(</span><span class="pln">definitionGroup</span><span class="pun">);</span><span class="pln">
                executionId </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFUtil</span><span class="pun">::</span><span class="pln">setupNewExecution</span><span class="pun">(</span><span class="pln">definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pun">);</span><span class="pln">

                </span><span class="com">// Determine if source to target should happen on initial import based on if we are in batch or not.</span><span class="pln">
                executeTargetDuringInitialImport </span><span class="pun">=</span><span class="pln"> </span><span class="pun">!</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">parmInBatch</span><span class="pun">();</span><span class="pln">

                </span><span class="com">//  Find execution</span><span class="pln">
                definitionGroupExecution </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFDefinitionGroupExecution</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pun">,</span><span class="pln">
                                                                                 definitionGroupEntity</span><span class="pun">.</span><span class="typ">Entity</span><span class="pun">,</span><span class="pln"> executionId</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">

                summaryStatus </span><span class="pun">=</span><span class="pln"> definitionGroupExecution</span><span class="pun">.</span><span class="typ">GetExecutionSummaryStatus</span><span class="pun">();</span><span class="pln">

                execution </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFExecution</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">definitionGroupExecution</span><span class="pun">.</span><span class="typ">ExecutionId</span><span class="pun">);</span><span class="pln">
                </span><span class="com">//To showing info related to count</span><span class="pln">
                definitionGroupExecution</span><span class="pun">.</span><span class="typ">FilePath</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> fileID</span><span class="pun">;</span><span class="pln">
                definitionGroupExecution</span><span class="pun">.</span><span class="typ">IsTransformed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">Yes</span><span class="pun">;</span><span class="pln">
                definitionGroupExecution</span><span class="pun">.</span><span class="typ">ExecuteTargetStep</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> executeTargetDuringInitialImport</span><span class="pun">;</span><span class="pln">
                definitionGroupExecution</span><span class="pun">.</span><span class="pln">update</span><span class="pun">();</span><span class="pln">

                </span><span class="typ">DMFQuickImportExport</span><span class="pun">::</span><span class="pln">doPGImport</span><span class="pun">(</span><span class="pln">definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pun">,</span><span class="pln"> executionId</span><span class="pun">,</span><span class="pln"> executeTargetDuringInitialImport</span><span class="pun">);</span><span class="pln">

                </span><span class="com">// If we still need to move from source to target, kick off that process now.</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">executeTargetDuringInitialImport</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="typ">DMFDefinitionGroupExecution</span><span class="pln"> executionSourceToTarget</span><span class="pun">;</span><span class="pln">

                    update_recordset executionSourceToTarget
                    setting </span><span class="typ">IsSelected</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">Yes</span><span class="pln">
                    </span><span class="kwd">where</span><span class="pln"> executionSourceToTarget</span><span class="pun">.</span><span class="typ">ExecutionId</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> executionId</span><span class="pun">;</span><span class="pln">

                    </span><span class="typ">DMFWriteExecutionParameters</span><span class="pln"> executionParameters </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFWriteExecutionParameters</span><span class="pun">::</span><span class="pln">construct</span><span class="pun">();</span><span class="pln">
                    executionParameters</span><span class="pun">.</span><span class="pln">parmDefinitionGroup</span><span class="pun">(</span><span class="pln">definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pun">);</span><span class="pln">
                    executionParameters</span><span class="pun">.</span><span class="pln">parmsourceTarget</span><span class="pun">(</span><span class="typ">DMFSourceTarget</span><span class="pun">::</span><span class="typ">Source</span><span class="pun">);</span><span class="pln">
                    executionParameters</span><span class="pun">.</span><span class="pln">parmSelectedData</span><span class="pun">(</span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">No</span><span class="pun">);</span><span class="pln">
                    executionParameters</span><span class="pun">.</span><span class="pln">parmErrorStatus</span><span class="pun">(</span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">No</span><span class="pun">);</span><span class="pln">
                    executionParameters</span><span class="pun">.</span><span class="pln">parmSkipFormNavigation</span><span class="pun">(</span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">Yes</span><span class="pun">);</span><span class="pln">

                    </span><span class="typ">DMFExecution</span><span class="pln"> dmfExecution </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFExecution</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">executionId</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
                    </span><span class="typ">Args</span><span class="pln"> args </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Args</span><span class="pun">();</span><span class="pln">
                    args</span><span class="pun">.</span><span class="pln">record</span><span class="pun">(</span><span class="pln">dmfExecution</span><span class="pun">);</span><span class="pln">
                    args</span><span class="pun">.</span><span class="pln">parmObject</span><span class="pun">(</span><span class="pln">executionParameters</span><span class="pun">);</span><span class="pln">
                    args</span><span class="pun">.</span><span class="pln">parmEnum</span><span class="pun">(</span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">No</span><span class="pun">);</span><span class="pln">

                    </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">MenuFunction</span><span class="pun">(</span><span class="pln">menuItemActionStr</span><span class="pun">(</span><span class="typ">DMFEntityWriterBatch</span><span class="pun">),</span><span class="pln"> </span><span class="typ">MenuItemType</span><span class="pun">::</span><span class="typ">Action</span><span class="pun">).</span><span class="pln">run</span><span class="pun">(</span><span class="pln">args</span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
                </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">executionStatus</span><span class="pun">();</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">catch</span><span class="pun">(</span><span class="typ">Exception</span><span class="pun">::</span><span class="typ">Error</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                info</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"%1"</span><span class="pun">,</span><span class="typ">Exception</span><span class="pun">::</span><span class="typ">Error</span><span class="pun">));</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> runsImpersonated</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///    Packs the state of the object</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;returns&gt;</span><span class="pln">
        </span><span class="com">///    Returns the packed container</span><span class="pln">
        </span><span class="com">/// &lt;/returns&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> container pack</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">[#</span><span class="typ">CurrentVersion</span><span class="pun">,</span><span class="pln"> </span><span class="com">#CurrentList];</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///   Unpacks the received contaienr object</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;parameter&gt; Container with the packed status&lt;/parameter&gt;</span><span class="pln">
        </span><span class="com">/// &lt;returns&gt;</span><span class="pln">
        </span><span class="com">///    Returns the packed container</span><span class="pln">
        </span><span class="com">/// &lt;/returns&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> unpack</span><span class="pun">(</span><span class="pln">container _packedClass</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">Integer</span><span class="pln"> version </span><span class="pun">=</span><span class="pln"> conPeek</span><span class="pun">(</span><span class="pln">_packedClass</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">

            </span><span class="kwd">switch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">version</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">case</span><span class="pln"> </span><span class="com">#CurrentVersion:</span><span class="pln">
                    </span><span class="pun">[</span><span class="pln">version</span><span class="pun">,</span><span class="pln"> </span><span class="com">#CurrentList] = _packedClass;</span><span class="pln">
                    </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">default</span><span class="pun">:</span><span class="pln">
                    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///  Validates the user input information</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;parm = _calledFrom&gt;The caller object&lt;/parm&gt;</span><span class="pln">
        </span><span class="com">/// &lt;returns&gt;</span><span class="pln">
        </span><span class="com">///  Returns True/False</span><span class="pln">
        </span><span class="com">/// &lt;/returns&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> validate</span><span class="pun">(</span><span class="typ">Object</span><span class="pln"> _calledFrom </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">boolean</span><span class="pln"> ret </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">definitionGroupUpdate</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                ret </span><span class="pun">=</span><span class="pln"> checkFailed</span><span class="pun">(</span><span class="str">"@DMF1432"</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">filename</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                ret </span><span class="pun">=</span><span class="pln"> checkFailed</span><span class="pun">(</span><span class="str">"@SYS18624"</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> ret</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Constructs the ATNYLAProductUOMConversionsImport object</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;returns&gt;Returns the ATNYLAProductUOMConversionsImport object&lt;/returns&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pln"> construct</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Provides caption for the dialog</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;returns&gt;Reutrns the caption of the dialog&lt;/returns&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">ClassDescription</span><span class="pln"> description</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="str">"Program products import"</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">/// Provides the entry point for the ATNYLAPurchaseOrdersImportInsertDialog dialog class</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="com">/// &lt;param name = "args"&gt;&lt;/param&gt;</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">Args</span><span class="pln"> args</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pln">   programProductsTableImport</span><span class="pun">;</span><span class="pln">
            programProductsTableImport </span><span class="pun">=</span><span class="pln">    </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">::</span><span class="pln">construct</span><span class="pun">();</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">programProductsTableImport</span><span class="pun">.</span><span class="pln">prompt</span><span class="pun">())</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                programProductsTableImport</span><span class="pun">.</span><span class="pln">runOperation</span><span class="pun">();</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> canRunInNewSession</span><span class="pun">()</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">DMFLocalFilePath</span><span class="pln"> applyTransforms</span><span class="pun">(</span><span class="typ">SharedServiceUnitFileID</span><span class="pln"> _uploadedStatement</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DMFDefinitionGroup</span><span class="pln"> definitionGroup</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroupEntity</span><span class="pln">    definitionGroupEntity </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ATNYLAProgramProductsTableImport</span><span class="pun">::</span><span class="pln">findDMFDefinitionGroupEntity</span><span class="pun">(</span><span class="pln">definitionGroup</span><span class="pun">);</span><span class="pln">
            </span><span class="typ">DMFExecutionId</span><span class="pln">              executionId </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFUtil</span><span class="pun">::</span><span class="pln">setupNewExecution</span><span class="pun">(</span><span class="pln">definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pun">);</span><span class="pln">

            </span><span class="typ">DMFDefinitionGroupExecution</span><span class="pln"> execution </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFDefinitionGroupExecution</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">
            definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pun">,</span><span class="pln">
            definitionGroupEntity</span><span class="pun">.</span><span class="typ">Entity</span><span class="pun">,</span><span class="pln">
            executionId</span><span class="pun">,</span><span class="pln">
            </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">

            execution</span><span class="pun">.</span><span class="typ">IsTransformed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">NoYes</span><span class="pun">::</span><span class="typ">No</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFLocalFilePath</span><span class="pln"> filePath </span><span class="pun">=</span><span class="pln"> execution</span><span class="pun">.</span><span class="pln">applyTransforms</span><span class="pun">(</span><span class="pln">_uploadedStatement</span><span class="pun">);</span><span class="pln">

            </span><span class="typ">DMFExecution</span><span class="pln"> e </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DMFExecution</span><span class="pun">::</span><span class="pln">find</span><span class="pun">(</span><span class="pln">executionId</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
            e</span><span class="pun">.</span><span class="kwd">delete</span><span class="pun">();</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> filePath</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">DMFDefinitionGroupEntity</span><span class="pln"> findDMFDefinitionGroupEntity</span><span class="pun">(</span><span class="typ">DMFDefinitionGroup</span><span class="pln"> _definitionGroup</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroupEntity</span><span class="pln"> definitionGroupEntity</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">DMFEntity</span><span class="pln"> dmfEntity</span><span class="pun">;</span><span class="pln">

            </span><span class="kwd">select</span><span class="pln"> firstonly </span><span class="typ">RecId</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Entity</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> definitionGroupEntity exists </span><span class="kwd">join</span><span class="pln"> dmfEntity
            </span><span class="kwd">where</span><span class="pln"> definitionGroupEntity</span><span class="pun">.</span><span class="typ">DefinitionGroup</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> _definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pln">
                </span><span class="pun">&amp;&amp;</span><span class="pln"> dmfEntity</span><span class="pun">.</span><span class="typ">EntityName</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> definitionGroupEntity</span><span class="pun">.</span><span class="typ">Entity</span><span class="pln">
                </span><span class="pun">&amp;&amp;</span><span class="pln"> dmfEntity</span><span class="pun">.</span><span class="typ">TargetEntity</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> dataentityviewstr</span><span class="pun">(</span><span class="typ">ATNYLAProgramProductsTableEntity</span><span class="pun">);</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">definitionGroupEntity</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">throw</span><span class="pln"> error</span><span class="pun">(</span><span class="pln">strFmt</span><span class="pun">(</span><span class="str">"@DMF:DMFNoEntityExists"</span><span class="pun">,</span><span class="pln"> _definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pun">));</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> definitionGroupEntity</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="com">/// &lt;summary&gt;</span><span class="pln">
        </span><span class="com">///</span><span class="pln">
        </span><span class="com">/// &lt;/summary&gt;</span><span class="pln">
        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">DMFDefinitionGroup</span><span class="pln"> findDMFDefinitionGroup</span><span class="pun">(</span><span class="typ">DMFDefinitionGroupName</span><span class="pln">     definitionGroupName</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">DMFDefinitionGroup</span><span class="pln"> definitionGroup</span><span class="pun">;</span><span class="pln">
        
            </span><span class="kwd">select</span><span class="pln"> firstonly definitionGroup
            </span><span class="kwd">where</span><span class="pln"> definitionGroup</span><span class="pun">.</span><span class="typ">DefinitionGroupName</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> definitionGroupName</span><span class="pun">;</span><span class="pln"> </span><span class="com">//PurchParameters::find().ATNYLAProcessingGroupDisplayUpdate;//DMF import data project</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> definitionGroup</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span>