Files
ware_house/docs/_build/html/api_reference.html
2026-03-31 19:15:33 +02:00

801 lines
64 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Riferimento API &#8212; warehouse 0.0.1 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=5ecbeea2" />
<link rel="stylesheet" type="text/css" href="_static/basic.css?v=b08954a9" />
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=27fed22d" />
<script src="_static/documentation_options.js?v=d45e8c67"></script>
<script src="_static/doctools.js?v=fd6eb6e6"></script>
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Flow Diagrams" href="flows/index.html" />
<link rel="prev" title="Architettura Complessiva" href="architecture.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="riferimento-api">
<h1>Riferimento API<a class="headerlink" href="#riferimento-api" title="Link to this heading"></a></h1>
<p>La sezione seguente usa <code class="docutils literal notranslate"><span class="pre">autodoc</span></code> per estrarre docstring direttamente dai
moduli Python principali del progetto.</p>
<section id="module-main">
<span id="main-py"></span><h2>main.py<a class="headerlink" href="#module-main" title="Link to this heading"></a></h2>
<p>Application entry point for the warehouse desktop tool.</p>
<p>This module wires together the shared async database client, the global
background event loop and the different Tk/CustomTkinter windows exposed by the
project.</p>
<dl class="py function">
<dt class="sig sig-object py" id="main.open_pickinglist_window">
<span class="sig-prename descclassname"><span class="pre">main.</span></span><span class="sig-name descname"><span class="pre">open_pickinglist_window</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_client</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#main.open_pickinglist_window" title="Link to this definition"></a></dt>
<dd><p>Open the picking list window while minimizing initial flicker.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>parent</strong> (<em>Misc</em>)</p></li>
<li><p><strong>db_client</strong> (<a class="reference internal" href="#async_msssql_query.AsyncMSSQLClient" title="async_msssql_query.AsyncMSSQLClient"><em>AsyncMSSQLClient</em></a>)</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="main.Launcher">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">main.</span></span><span class="sig-name descname"><span class="pre">Launcher</span></span><a class="headerlink" href="#main.Launcher" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CTk</span></code></p>
<p>Main launcher window that exposes the available warehouse tools.</p>
</dd></dl>
</section>
<section id="module-async_msssql_query">
<span id="async-msssql-query-py"></span><h2>async_msssql_query.py<a class="headerlink" href="#module-async_msssql_query" title="Link to this heading"></a></h2>
<p>Async SQL Server access layer used by the warehouse application.</p>
<p>The module centralizes DSN creation and exposes <a class="reference internal" href="#async_msssql_query.AsyncMSSQLClient" title="async_msssql_query.AsyncMSSQLClient"><code class="xref py py-class docutils literal notranslate"><span class="pre">AsyncMSSQLClient</span></code></a>,
which lazily binds a SQLAlchemy async engine to the running event loop. The
implementation intentionally avoids pooling because the GUI schedules work on a
single shared background loop and pooled connections were a source of
cross-loop errors.</p>
<dl class="py function">
<dt class="sig sig-object py" id="async_msssql_query.make_mssql_dsn">
<span class="sig-prename descclassname"><span class="pre">async_msssql_query.</span></span><span class="sig-name descname"><span class="pre">make_mssql_dsn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">server</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">database</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">driver</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'ODBC</span> <span class="pre">Driver</span> <span class="pre">17</span> <span class="pre">for</span> <span class="pre">SQL</span> <span class="pre">Server'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trust_server_certificate</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encrypt</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extra_odbc_kv</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#async_msssql_query.make_mssql_dsn" title="Link to this definition"></a></dt>
<dd><p>Build a SQLAlchemy <code class="docutils literal notranslate"><span class="pre">mssql+aioodbc</span></code> DSN from SQL Server parameters.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>server</strong> (<em>str</em>)</p></li>
<li><p><strong>database</strong> (<em>str</em>)</p></li>
<li><p><strong>user</strong> (<em>str</em><em> | </em><em>None</em>)</p></li>
<li><p><strong>password</strong> (<em>str</em><em> | </em><em>None</em>)</p></li>
<li><p><strong>driver</strong> (<em>str</em>)</p></li>
<li><p><strong>trust_server_certificate</strong> (<em>bool</em>)</p></li>
<li><p><strong>encrypt</strong> (<em>str</em><em> | </em><em>None</em>)</p></li>
<li><p><strong>extra_odbc_kv</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>str</em><em>] </em><em>| </em><em>None</em>)</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>str</p>
</dd>
</dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="async_msssql_query.AsyncMSSQLClient">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">async_msssql_query.</span></span><span class="sig-name descname"><span class="pre">AsyncMSSQLClient</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dsn</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">echo</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#async_msssql_query.AsyncMSSQLClient" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Thin async query client for SQL Server.</p>
<p>The engine is created lazily on the currently running event loop and uses
<code class="xref py py-class docutils literal notranslate"><span class="pre">sqlalchemy.pool.NullPool</span></code> to avoid recycling connections across
loops or threads.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>dsn</strong> (<em>str</em>)</p></li>
<li><p><strong>echo</strong> (<em>bool</em>)</p></li>
<li><p><strong>log</strong> (<em>bool</em>)</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="async_msssql_query.AsyncMSSQLClient.dispose">
<span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">dispose</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#async_msssql_query.AsyncMSSQLClient.dispose" title="Link to this definition"></a></dt>
<dd><p>Dispose the engine on the loop where it was created.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="async_msssql_query.AsyncMSSQLClient.query_json">
<span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">query_json</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sql</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">as_dict_rows</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#async_msssql_query.AsyncMSSQLClient.query_json" title="Link to this definition"></a></dt>
<dd><p>Execute a query and return a JSON-friendly payload.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sql</strong> (<em>str</em>) SQL statement to execute.</p></li>
<li><p><strong>params</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>] </em><em>| </em><em>None</em>) Optional named parameters bound to the statement.</p></li>
<li><p><strong>as_dict_rows</strong> (<em>bool</em>) When <code class="docutils literal notranslate"><span class="pre">True</span></code> returns rows as dictionaries keyed by
column name; otherwise rows are returned as lists.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>A dictionary containing column names, rows and elapsed execution
time in milliseconds.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>Dict</em>[str, <em>Any</em>]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="async_msssql_query.AsyncMSSQLClient.exec">
<span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">exec</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sql</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">commit</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#async_msssql_query.AsyncMSSQLClient.exec" title="Link to this definition"></a></dt>
<dd><p>Execute a DML statement and return its row count.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sql</strong> (<em>str</em>)</p></li>
<li><p><strong>params</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>] </em><em>| </em><em>None</em>)</p></li>
<li><p><strong>commit</strong> (<em>bool</em>)</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>int</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
<section id="module-gestione_aree_frame_async">
<span id="gestione-aree-frame-async-py"></span><h2>gestione_aree_frame_async.py<a class="headerlink" href="#module-gestione_aree_frame_async" title="Link to this heading"></a></h2>
<p>Shared Tk/async helpers used by multiple warehouse windows.</p>
<p>The module bundles three concerns used throughout the GUI:</p>
<ul class="simple">
<li><p>lifecycle of the shared background asyncio loop;</p></li>
<li><p>a modal-like busy overlay shown during long-running tasks;</p></li>
<li><p>an <code class="docutils literal notranslate"><span class="pre">AsyncRunner</span></code> that schedules coroutines and re-enters Tk safely.</p></li>
</ul>
<dl class="py function">
<dt class="sig sig-object py" id="gestione_aree_frame_async.get_global_loop">
<span class="sig-prename descclassname"><span class="pre">gestione_aree_frame_async.</span></span><span class="sig-name descname"><span class="pre">get_global_loop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.get_global_loop" title="Link to this definition"></a></dt>
<dd><p>Return the shared background event loop, creating it if needed.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>AbstractEventLoop</em></p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="gestione_aree_frame_async.stop_global_loop">
<span class="sig-prename descclassname"><span class="pre">gestione_aree_frame_async.</span></span><span class="sig-name descname"><span class="pre">stop_global_loop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.stop_global_loop" title="Link to this definition"></a></dt>
<dd><p>Stop the shared event loop and release thread references.</p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="gestione_aree_frame_async.BusyOverlay">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">gestione_aree_frame_async.</span></span><span class="sig-name descname"><span class="pre">BusyOverlay</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.BusyOverlay" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Semi-transparent overlay used to block interaction during async tasks.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>parent</strong> (<em>tk.Misc</em>)</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_aree_frame_async.BusyOverlay.show">
<span class="sig-name descname"><span class="pre">show</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'Attendere...'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.BusyOverlay.show" title="Link to this definition"></a></dt>
<dd><p>Display the overlay or just update its message if already visible.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_aree_frame_async.BusyOverlay.hide">
<span class="sig-name descname"><span class="pre">hide</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.BusyOverlay.hide" title="Link to this definition"></a></dt>
<dd><p>Dismiss the overlay and unregister resize bindings.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="gestione_aree_frame_async.AsyncRunner">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">gestione_aree_frame_async.</span></span><span class="sig-name descname"><span class="pre">AsyncRunner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">widget</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.AsyncRunner" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Run awaitables on the shared loop and callback on Tks main thread.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>widget</strong> (<em>tk.Misc</em>)</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_aree_frame_async.AsyncRunner.run">
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">awaitable</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">on_success</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">on_error</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">busy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'Operazione</span> <span class="pre">in</span> <span class="pre">corso...'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.AsyncRunner.run" title="Link to this definition"></a></dt>
<dd><p>Schedule <code class="docutils literal notranslate"><span class="pre">awaitable</span></code> and dispatch completion callbacks in Tk.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>on_success</strong> (<em>Callable</em><em>[</em><em>[</em><em>Any</em><em>]</em><em>, </em><em>None</em><em>]</em>)</p></li>
<li><p><strong>on_error</strong> (<em>Callable</em><em>[</em><em>[</em><em>BaseException</em><em>]</em><em>, </em><em>None</em><em>] </em><em>| </em><em>None</em>)</p></li>
<li><p><strong>busy</strong> (<a class="reference internal" href="#gestione_aree_frame_async.BusyOverlay" title="gestione_aree_frame_async.BusyOverlay"><em>BusyOverlay</em></a><em> | </em><em>None</em>)</p></li>
<li><p><strong>message</strong> (<em>str</em>)</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_aree_frame_async.AsyncRunner.close">
<span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_aree_frame_async.AsyncRunner.close" title="Link to this definition"></a></dt>
<dd><p>No-op kept for API compatibility with older callers.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-layout_window">
<span id="layout-window-py"></span><h2>layout_window.py<a class="headerlink" href="#module-layout_window" title="Link to this heading"></a></h2>
<p>Graphical aisle layout viewer for warehouse cells and pallet occupancy.</p>
<dl class="py function">
<dt class="sig sig-object py" id="layout_window.pct_text">
<span class="sig-prename descclassname"><span class="pre">layout_window.</span></span><span class="sig-name descname"><span class="pre">pct_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">p_full</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">p_double</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#layout_window.pct_text" title="Link to this definition"></a></dt>
<dd><p>Format occupancy percentages for the progress-bar labels.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>p_full</strong> (<em>float</em>)</p></li>
<li><p><strong>p_double</strong> (<em>float</em><em> | </em><em>None</em>)</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>str</p>
</dd>
</dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="layout_window.LayoutWindow">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">layout_window.</span></span><span class="sig-name descname"><span class="pre">LayoutWindow</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_app</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#layout_window.LayoutWindow" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CTkToplevel</span></code></p>
<p>Visualizzazione layout corsie con matrice di celle.
- Ogni cella è un pulsante colorato (vuota/piena/doppia)
- Etichetta su DUE righe:</p>
<blockquote>
<div><ol class="arabic simple">
<li><p>“Corsia.Colonna.Fila” (una sola riga, senza andare a capo)</p></li>
<li><p>barcode UDC (primo, se presente)</p></li>
</ol>
</div></blockquote>
<ul class="simple">
<li><p>Ricerca per barcode UDC con cambio automatico corsia + highlight cella</p></li>
<li><p>Statistiche: globale e corsia selezionata</p></li>
<li><p>Export XLSX</p></li>
</ul>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>parent</strong> (<em>tk.Widget</em>)</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="layout_window.LayoutWindow.destroy">
<span class="sig-name descname"><span class="pre">destroy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#layout_window.LayoutWindow.destroy" title="Link to this definition"></a></dt>
<dd><p>Mark the window as closed and release dynamic widgets safely.</p>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="layout_window.open_layout_window">
<span class="sig-prename descclassname"><span class="pre">layout_window.</span></span><span class="sig-name descname"><span class="pre">open_layout_window</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_app</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#layout_window.open_layout_window" title="Link to this definition"></a></dt>
<dd><p>Open the layout window as a singleton-like child of <code class="docutils literal notranslate"><span class="pre">parent</span></code>.</p>
</dd></dl>
</section>
<section id="module-reset_corsie">
<span id="reset-corsie-py"></span><h2>reset_corsie.py<a class="headerlink" href="#module-reset_corsie" title="Link to this heading"></a></h2>
<p>Window used to inspect and empty an entire warehouse aisle.</p>
<p>The module exposes a destructive maintenance tool: it summarizes the occupancy
state of a selected aisle and, after explicit confirmation, deletes matching
rows from <code class="docutils literal notranslate"><span class="pre">MagazziniPallet</span></code>.</p>
<dl class="py class">
<dt class="sig sig-object py" id="reset_corsie.ResetCorsieWindow">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">reset_corsie.</span></span><span class="sig-name descname"><span class="pre">ResetCorsieWindow</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_client</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#reset_corsie.ResetCorsieWindow" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CTkToplevel</span></code></p>
<p>Toplevel used to inspect and clear the pallets assigned to an aisle.</p>
<dl class="py method">
<dt class="sig sig-object py" id="reset_corsie.ResetCorsieWindow.refresh">
<span class="sig-name descname"><span class="pre">refresh</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#reset_corsie.ResetCorsieWindow.refresh" title="Link to this definition"></a></dt>
<dd><p>Refresh both the summary counters and the occupied-cell list.</p>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="reset_corsie.open_reset_corsie_window">
<span class="sig-prename descclassname"><span class="pre">reset_corsie.</span></span><span class="sig-name descname"><span class="pre">open_reset_corsie_window</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_app</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#reset_corsie.open_reset_corsie_window" title="Link to this definition"></a></dt>
<dd><p>Create, focus and return the aisle reset window.</p>
</dd></dl>
</section>
<section id="module-view_celle_multiple">
<span id="view-celle-multiple-py"></span><h2>view_celle_multiple.py<a class="headerlink" href="#module-view_celle_multiple" title="Link to this heading"></a></h2>
<p>Exploration window for cells containing more than one pallet.</p>
<dl class="py class">
<dt class="sig sig-object py" id="view_celle_multiple.CelleMultipleWindow">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">view_celle_multiple.</span></span><span class="sig-name descname"><span class="pre">CelleMultipleWindow</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">root</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_client</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">runner</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#view_celle_multiple.CelleMultipleWindow" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CTkToplevel</span></code></p>
<p>Tree-based explorer for duplicated pallet allocations.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>runner</strong> (<a class="reference internal" href="#gestione_aree_frame_async.AsyncRunner" title="gestione_aree_frame_async.AsyncRunner"><em>AsyncRunner</em></a><em> | </em><em>None</em>)</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="view_celle_multiple.CelleMultipleWindow.refresh_all">
<span class="sig-name descname"><span class="pre">refresh_all</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#view_celle_multiple.CelleMultipleWindow.refresh_all" title="Link to this definition"></a></dt>
<dd><p>Reload both the duplication tree and the summary percentage table.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="view_celle_multiple.CelleMultipleWindow.expand_all">
<span class="sig-name descname"><span class="pre">expand_all</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#view_celle_multiple.CelleMultipleWindow.expand_all" title="Link to this definition"></a></dt>
<dd><p>Expand all aisle roots and trigger lazy loading where needed.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="view_celle_multiple.CelleMultipleWindow.collapse_all">
<span class="sig-name descname"><span class="pre">collapse_all</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#view_celle_multiple.CelleMultipleWindow.collapse_all" title="Link to this definition"></a></dt>
<dd><p>Collapse all root nodes in the duplication tree.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="view_celle_multiple.CelleMultipleWindow.export_to_xlsx">
<span class="sig-name descname"><span class="pre">export_to_xlsx</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#view_celle_multiple.CelleMultipleWindow.export_to_xlsx" title="Link to this definition"></a></dt>
<dd><p>Export both the detailed tree and the summary table to Excel.</p>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="view_celle_multiple.open_celle_multiple_window">
<span class="sig-prename descclassname"><span class="pre">view_celle_multiple.</span></span><span class="sig-name descname"><span class="pre">open_celle_multiple_window</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">root</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_client</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">runner</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#view_celle_multiple.open_celle_multiple_window" title="Link to this definition"></a></dt>
<dd><p>Create, focus and return the duplicated-cells explorer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>root</strong> (<em>Tk</em>)</p></li>
<li><p><strong>runner</strong> (<a class="reference internal" href="#gestione_aree_frame_async.AsyncRunner" title="gestione_aree_frame_async.AsyncRunner"><em>AsyncRunner</em></a><em> | </em><em>None</em>)</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</section>
<section id="module-search_pallets">
<span id="search-pallets-py"></span><h2>search_pallets.py<a class="headerlink" href="#module-search_pallets" title="Link to this heading"></a></h2>
<p>Search window for pallets, lots and product codes across the warehouse.</p>
<dl class="py class">
<dt class="sig sig-object py" id="search_pallets.SearchWindow">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">search_pallets.</span></span><span class="sig-name descname"><span class="pre">SearchWindow</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_app</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#search_pallets.SearchWindow" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CTkToplevel</span></code></p>
<p>Window that searches pallets by barcode, lot or product code.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>parent</strong> (<em>tk.Widget</em>)</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="search_pallets.open_search_window">
<span class="sig-prename descclassname"><span class="pre">search_pallets.</span></span><span class="sig-name descname"><span class="pre">open_search_window</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_app</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#search_pallets.open_search_window" title="Link to this definition"></a></dt>
<dd><p>Open a singleton-like search window tied to the launcher instance.</p>
</dd></dl>
</section>
<section id="module-gestione_pickinglist">
<span id="gestione-pickinglist-py"></span><h2>gestione_pickinglist.py<a class="headerlink" href="#module-gestione_pickinglist" title="Link to this heading"></a></h2>
<p>Picking list management window.</p>
<p>The module presents a master/detail UI for packing lists, supports reservation
and unreservation through an async stored-procedure port and keeps rendering
smooth by relying on deferred updates and lightweight progress indicators.</p>
<dl class="py class">
<dt class="sig sig-object py" id="gestione_pickinglist.ColSpec">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">gestione_pickinglist.</span></span><span class="sig-name descname"><span class="pre">ColSpec</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">title</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">anchor</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ColSpec" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Describe one logical column rendered in a <code class="docutils literal notranslate"><span class="pre">ScrollTable</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>title</strong> (<em>str</em>)</p></li>
<li><p><strong>key</strong> (<em>str</em>)</p></li>
<li><p><strong>width</strong> (<em>int</em>)</p></li>
<li><p><strong>anchor</strong> (<em>str</em>)</p></li>
</ul>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ColSpec.title">
<span class="sig-name descname"><span class="pre">title</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#gestione_pickinglist.ColSpec.title" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ColSpec.key">
<span class="sig-name descname"><span class="pre">key</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#gestione_pickinglist.ColSpec.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ColSpec.width">
<span class="sig-name descname"><span class="pre">width</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></span><a class="headerlink" href="#gestione_pickinglist.ColSpec.width" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ColSpec.anchor">
<span class="sig-name descname"><span class="pre">anchor</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#gestione_pickinglist.ColSpec.anchor" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="gestione_pickinglist.ToolbarSpinner">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">gestione_pickinglist.</span></span><span class="sig-name descname"><span class="pre">ToolbarSpinner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ToolbarSpinner" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Micro-animazione leggerissima per indicare attività:
mostra una label con frame: ◐ ◓ ◑ ◒ … finché è attivo.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>parent</strong> (<em>tk.Widget</em>)</p>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ToolbarSpinner.FRAMES">
<span class="sig-name descname"><span class="pre">FRAMES</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('◐',</span> <span class="pre">'◓',</span> <span class="pre">'◑',</span> <span class="pre">'◒')</span></span><a class="headerlink" href="#gestione_pickinglist.ToolbarSpinner.FRAMES" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.ToolbarSpinner.widget">
<span class="sig-name descname"><span class="pre">widget</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ToolbarSpinner.widget" title="Link to this definition"></a></dt>
<dd><p>Return the label widget hosting the spinner animation.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>CTkLabel</em></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.ToolbarSpinner.start">
<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ToolbarSpinner.start" title="Link to this definition"></a></dt>
<dd><p>Start the animation and optionally show a short status message.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>text</strong> (<em>str</em>)</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.ToolbarSpinner.stop">
<span class="sig-name descname"><span class="pre">stop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ToolbarSpinner.stop" title="Link to this definition"></a></dt>
<dd><p>Stop the animation and clear the label text.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="gestione_pickinglist.ScrollTable">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">gestione_pickinglist.</span></span><span class="sig-name descname"><span class="pre">ScrollTable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">master</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">columns</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ScrollTable" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CTkFrame</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>columns</strong> (<em>List</em><em>[</em><a class="reference internal" href="#gestione_pickinglist.ColSpec" title="gestione_pickinglist.ColSpec"><em>ColSpec</em></a><em>]</em>)</p>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ScrollTable.GRID_COLOR">
<span class="sig-name descname"><span class="pre">GRID_COLOR</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'#D0D5DD'</span></span><a class="headerlink" href="#gestione_pickinglist.ScrollTable.GRID_COLOR" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ScrollTable.PADX_L">
<span class="sig-name descname"><span class="pre">PADX_L</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">8</span></span><a class="headerlink" href="#gestione_pickinglist.ScrollTable.PADX_L" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ScrollTable.PADX_R">
<span class="sig-name descname"><span class="pre">PADX_R</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">8</span></span><a class="headerlink" href="#gestione_pickinglist.ScrollTable.PADX_R" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.ScrollTable.PADY">
<span class="sig-name descname"><span class="pre">PADY</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">2</span></span><a class="headerlink" href="#gestione_pickinglist.ScrollTable.PADY" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.ScrollTable.clear_rows">
<span class="sig-name descname"><span class="pre">clear_rows</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ScrollTable.clear_rows" title="Link to this definition"></a></dt>
<dd><p>Remove all rendered body rows.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.ScrollTable.add_row">
<span class="sig-name descname"><span class="pre">add_row</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">row_index</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">anchors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">checkbox_builder</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.ScrollTable.add_row" title="Link to this definition"></a></dt>
<dd><p>Append one row to the table body.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>values</strong> (<em>List</em><em>[</em><em>str</em><em>]</em>)</p></li>
<li><p><strong>row_index</strong> (<em>int</em>)</p></li>
<li><p><strong>anchors</strong> (<em>List</em><em>[</em><em>str</em><em>] </em><em>| </em><em>None</em>)</p></li>
<li><p><strong>checkbox_builder</strong> (<em>Callable</em><em>[</em><em>[</em><em>Widget</em><em>]</em><em>, </em><em>CTkCheckBox</em><em>] </em><em>| </em><em>None</em>)</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="gestione_pickinglist.PLRow">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">gestione_pickinglist.</span></span><span class="sig-name descname"><span class="pre">PLRow</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pl</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">on_check</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.PLRow" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>State holder for one picking list row and its selection checkbox.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>pl</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>]</em>)</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.PLRow.is_checked">
<span class="sig-name descname"><span class="pre">is_checked</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.PLRow.is_checked" title="Link to this definition"></a></dt>
<dd><p>Return whether the row is currently selected.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.PLRow.set_checked">
<span class="sig-name descname"><span class="pre">set_checked</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">val</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.PLRow.set_checked" title="Link to this definition"></a></dt>
<dd><p>Programmatically update the checkbox state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>val</strong> (<em>bool</em>)</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.PLRow.build_checkbox">
<span class="sig-name descname"><span class="pre">build_checkbox</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.PLRow.build_checkbox" title="Link to this definition"></a></dt>
<dd><p>Create the checkbox widget bound to this row model.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>CTkCheckBox</em></p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="gestione_pickinglist.GestionePickingListFrame">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">gestione_pickinglist.</span></span><span class="sig-name descname"><span class="pre">GestionePickingListFrame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">master</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_client</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">conn_str</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.GestionePickingListFrame" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">CTkFrame</span></code></p>
<dl class="py attribute">
<dt class="sig sig-object py" id="gestione_pickinglist.GestionePickingListFrame.rows_models">
<span class="sig-name descname"><span class="pre">rows_models</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#gestione_pickinglist.PLRow" title="gestione_pickinglist.PLRow"><span class="pre">PLRow</span></a><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#gestione_pickinglist.GestionePickingListFrame.rows_models" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.GestionePickingListFrame.on_row_checked">
<span class="sig-name descname"><span class="pre">on_row_checked</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_checked</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.GestionePickingListFrame.on_row_checked" title="Link to this definition"></a></dt>
<dd><p>Handle row selection changes and refresh the detail section.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>model</strong> (<a class="reference internal" href="#gestione_pickinglist.PLRow" title="gestione_pickinglist.PLRow"><em>PLRow</em></a>)</p></li>
<li><p><strong>is_checked</strong> (<em>bool</em>)</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.GestionePickingListFrame.reload_from_db">
<span class="sig-name descname"><span class="pre">reload_from_db</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">first</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.GestionePickingListFrame.reload_from_db" title="Link to this definition"></a></dt>
<dd><p>Load or reload the picking list summary table from the database.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>first</strong> (<em>bool</em>)</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.GestionePickingListFrame.on_prenota">
<span class="sig-name descname"><span class="pre">on_prenota</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.GestionePickingListFrame.on_prenota" title="Link to this definition"></a></dt>
<dd><p>Reserve the selected picking list.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.GestionePickingListFrame.on_sprenota">
<span class="sig-name descname"><span class="pre">on_sprenota</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.GestionePickingListFrame.on_sprenota" title="Link to this definition"></a></dt>
<dd><p>Unreserve the selected picking list.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="gestione_pickinglist.GestionePickingListFrame.on_export">
<span class="sig-name descname"><span class="pre">on_export</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.GestionePickingListFrame.on_export" title="Link to this definition"></a></dt>
<dd><p>Placeholder for a future export implementation.</p>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="gestione_pickinglist.create_frame">
<span class="sig-prename descclassname"><span class="pre">gestione_pickinglist.</span></span><span class="sig-name descname"><span class="pre">create_frame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">parent</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_client</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">conn_str</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gestione_pickinglist.create_frame" title="Link to this definition"></a></dt>
<dd><p>Factory used by the launcher to build the picking list frame.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#gestione_pickinglist.GestionePickingListFrame" title="gestione_pickinglist.GestionePickingListFrame"><em>GestionePickingListFrame</em></a></p>
</dd>
</dl>
</dd></dl>
</section>
<section id="module-prenota_sprenota_sql">
<span id="prenota-sprenota-sql-py"></span><h2>prenota_sprenota_sql.py<a class="headerlink" href="#module-prenota_sprenota_sql" title="Link to this heading"></a></h2>
<p>Async port of the packing list reservation stored procedure.</p>
<dl class="py class">
<dt class="sig sig-object py" id="prenota_sprenota_sql.SPResult">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">prenota_sprenota_sql.</span></span><span class="sig-name descname"><span class="pre">SPResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rc</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">id_result</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#prenota_sprenota_sql.SPResult" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Container returned by the async stored-procedure port.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>rc</strong> (<em>int</em>)</p></li>
<li><p><strong>message</strong> (<em>str</em><em> | </em><em>None</em>)</p></li>
<li><p><strong>id_result</strong> (<em>int</em><em> | </em><em>None</em>)</p></li>
</ul>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="prenota_sprenota_sql.SPResult.rc">
<span class="sig-name descname"><span class="pre">rc</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></span><a class="headerlink" href="#prenota_sprenota_sql.SPResult.rc" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="prenota_sprenota_sql.SPResult.message">
<span class="sig-name descname"><span class="pre">message</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></span><a class="headerlink" href="#prenota_sprenota_sql.SPResult.message" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="prenota_sprenota_sql.SPResult.id_result">
<span class="sig-name descname"><span class="pre">id_result</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#prenota_sprenota_sql.SPResult.id_result" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="prenota_sprenota_sql.sp_xExePackingListPallet_async">
<span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">prenota_sprenota_sql.</span></span><span class="sig-name descname"><span class="pre">sp_xExePackingListPallet_async</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">IDOperatore</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Documento</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#prenota_sprenota_sql.sp_xExePackingListPallet_async" title="Link to this definition"></a></dt>
<dd><p>Toggle the reservation state of all cells belonging to a packing list.</p>
<p>The implementation mirrors the original SQL stored procedure while using
the shared async DB client already managed by the application.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>IDOperatore</strong> (<em>int</em>)</p></li>
<li><p><strong>Documento</strong> (<em>str</em>)</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#prenota_sprenota_sql.SPResult" title="prenota_sprenota_sql.SPResult"><em>SPResult</em></a></p>
</dd>
</dl>
</dd></dl>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">warehouse</a></h1>
<search id="searchbox" style="display: none" role="search">
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
<p class="caption" role="heading"><span class="caption-text">Contenuti</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="architecture.html">Architettura Complessiva</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Riferimento API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#module-main">main.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-async_msssql_query">async_msssql_query.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-gestione_aree_frame_async">gestione_aree_frame_async.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-layout_window">layout_window.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-reset_corsie">reset_corsie.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-view_celle_multiple">view_celle_multiple.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-search_pallets">search_pallets.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-gestione_pickinglist">gestione_pickinglist.py</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-prenota_sprenota_sql">prenota_sprenota_sql.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="flows/index.html">Flow Diagrams</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="architecture.html" title="previous chapter">Architettura Complessiva</a></li>
<li>Next: <a href="flows/index.html" title="next chapter">Flow Diagrams</a></li>
</ul></li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&#169;.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 9.1.0</a>
&amp; <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
<a href="_sources/api_reference.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>