2
0
mirror of https://github.com/inventree/inventree-website.git synced 2025-05-02 07:26:49 +00:00

deploy: 7a9a696007c2b05edf82baf15444a3b9ac0c422d

This commit is contained in:
SchrodingersGat 2024-04-24 21:49:11 +00:00
parent 12e8882f9a
commit d04b74c788
29 changed files with 791 additions and 168 deletions

View File

@ -30,11 +30,11 @@
<meta property="og:url" content="/LavissaWoW" /> <meta property="og:url" content="/LavissaWoW" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Lavissawow" /> <meta property="twitter:title" content="Lavissawow" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Yes, WoW is for World of Warcraft","headline":"Lavissawow","mainEntityOfPage":{"@type":"WebPage","@id":"/LavissaWoW"},"url":"/LavissaWoW"}</script> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Yes, WoW is for World of Warcraft","headline":"Lavissawow","mainEntityOfPage":{"@type":"WebPage","@id":"/LavissaWoW"},"url":"/LavissaWoW"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/LavissaWoW/inventree-ipn-generator" /> <meta property="og:url" content="/LavissaWoW/inventree-ipn-generator" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Ipn Generator" /> <meta property="twitter:title" content="Inventree Ipn Generator" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"LavissaWoW"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Introduction Installing this plugin enables the automatic generation if Internal Part Numbers (IPN) for parts.","headline":"Inventree Ipn Generator","mainEntityOfPage":{"@type":"WebPage","@id":"/LavissaWoW/inventree-ipn-generator"},"url":"/LavissaWoW/inventree-ipn-generator"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"LavissaWoW"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Introduction Installing this plugin enables the automatic generation if Internal Part Numbers (IPN) for parts.","headline":"Inventree Ipn Generator","mainEntityOfPage":{"@type":"WebPage","@id":"/LavissaWoW/inventree-ipn-generator"},"url":"/LavissaWoW/inventree-ipn-generator"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> LavissaWoW</p> <p> LavissaWoW</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/SchrodingersGat/inventree-brother-plugin" /> <meta property="og:url" content="/SchrodingersGat/inventree-brother-plugin" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Brother Plugin" /> <meta property="twitter:title" content="Inventree Brother Plugin" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Brother label printer plugin for InvenTree","headline":"Inventree Brother Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-brother-plugin"},"url":"/SchrodingersGat/inventree-brother-plugin"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Brother label printer plugin for InvenTree","headline":"Inventree Brother Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-brother-plugin"},"url":"/SchrodingersGat/inventree-brother-plugin"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> SchrodingersGat</p> <p> SchrodingersGat</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/SchrodingersGat/inventree-wireviz" /> <meta property="og:url" content="/SchrodingersGat/inventree-wireviz" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Wireviz" /> <meta property="twitter:title" content="Inventree Wireviz" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Wireviz Extension for InvenTree","headline":"Inventree Wireviz","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-wireviz"},"url":"/SchrodingersGat/inventree-wireviz"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Wireviz Extension for InvenTree","headline":"Inventree Wireviz","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-wireviz"},"url":"/SchrodingersGat/inventree-wireviz"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> SchrodingersGat</p> <p> SchrodingersGat</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -30,11 +30,11 @@
<meta property="og:url" content="/SergeoLacruz" /> <meta property="og:url" content="/SergeoLacruz" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Sergeolacruz" /> <meta property="twitter:title" content="Sergeolacruz" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Hardware engineer in Germany and vintage fan.","headline":"Sergeolacruz","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz"},"url":"/SergeoLacruz"}</script> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Hardware engineer in Germany and vintage fan.","headline":"Sergeolacruz","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz"},"url":"/SergeoLacruz"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>

View File

@ -25,17 +25,17 @@
<meta property="og:title" content="Inventree Supplier Panel" /> <meta property="og:title" content="Inventree Supplier Panel" />
<meta name="author" content="SergeoLacruz" /> <meta name="author" content="SergeoLacruz" />
<meta property="og:locale" content="en_US" /> <meta property="og:locale" content="en_US" />
<meta name="description" content="Create Mouser shopping cart from purchase order" /> <meta name="description" content="The InvenTree-supplier-panel" />
<meta property="og:description" content="Create Mouser shopping cart from purchase order" /> <meta property="og:description" content="The InvenTree-supplier-panel" />
<link rel="canonical" href="/SergeoLacruz/inventree-supplier-panel" /> <link rel="canonical" href="/SergeoLacruz/inventree-supplier-panel" />
<meta property="og:url" content="/SergeoLacruz/inventree-supplier-panel" /> <meta property="og:url" content="/SergeoLacruz/inventree-supplier-panel" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Supplier Panel" /> <meta property="twitter:title" content="Inventree Supplier Panel" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Create Mouser shopping cart from purchase order","headline":"Inventree Supplier Panel","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz/inventree-supplier-panel"},"url":"/SergeoLacruz/inventree-supplier-panel"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"The InvenTree-supplier-panel","headline":"Inventree Supplier Panel","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz/inventree-supplier-panel"},"url":"/SergeoLacruz/inventree-supplier-panel"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,110 +69,268 @@
<p> SergeoLacruz</p> <p> SergeoLacruz</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">
<div class="w-full md:w-auto md:mr-4"> <div class="w-full md:w-auto md:mr-4">
<p>Create Mouser shopping cart from purchase order</p> <h1 id="the-inventree-supplier-panel">The InvenTree-supplier-panel</h1>
<p>This is a plugin for <a href="https://inventree.org">InvenTree</a>, which translates a purchase order <p>This is a plugin for <a href="https://inventree.org">InvenTree</a>, which uploads a purchase order
into a Mouser shopping cart. After using this plugin you can directly order the shopping to a supplier WEB page. After using this plugin you can directly order the parts on
cart on the Mouser WEB page. You need to have a Mouser account and a Mouser API key. supplier WEB page. You need to have a supplier account and a different kinds of API keys
The shopping cart will be created in your Mouser account.</p> depending on the supplier.
The data will be created in your supplier account. Each time you transfer your PO
<h2 id="prerequisites">Prerequisites</h2> a new data set cart will be created. So make sure that you delete them from time to time in
the supplier WEB interface.
<p>For this plugin to work you need to have Mouser as as supplier in your InvenTree data. The plugin also helps to create supplierparts based on the supplier part number..
Suppliers parts must be added to all the parts that you like to buy at Mouser. All Mouser supplier Actually the plugin supports two suppliers: Mouser and Digikey.</p>
parts need to have the proper SKU. It needs to match the Mouser part number exactly.</p>
<p>For access to the Mouser API you need a Mouser account and a shopping cart API key.
You can get this on the Mouser WEB page. Do not mess up with the Mouser search API
key. This is different. If the key is properly set up you can find it on the Mouser
WEB page here:</p>
<p><img src="/assets/plugins/mouser_api.png" alt="Mouser WEB"></p>
<h2 id="installation">Installation</h2> <h2 id="installation">Installation</h2>
<p>The plugin is on pypi. You can install it by just calling:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pip install git+https://github.com/SergeoLacruz/inventree-supplier-panel <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pip install inventree-supplier-panel
</code></pre></div></div> </code></pre></div></div>
<h2 id="configuration">Configuration</h2> <h2 id="configuration">Configuration</h2>
<h3 id="mouser-supplier-id">Mouser Supplier ID</h3> <h3 id="mouser-supplier-id">Mouser Supplier ID</h3>
<p>Place here the primary key of the supplier Mouser in your system. You can select from a list of <p>Place here the primary key of the supplier Mouser in your system. You can select from a list of
your suppliers.</p> your suppliers. If this is not set the panel will not be displayed and a error is raised.</p>
<h3 id="supplier-api-key">Supplier API key</h3> <h3 id="digikey-supplier-id">Digikey Supplier ID</h3>
<p>Place here you Mouser key for manipulating shopping carts.</p> <p>Place here the primary key of the supplier Digikey in your system. You can select from a list of
your suppliers. If this is not set the panel will not be displayed and a error is raised.</p>
<h3 id="supplier-shopping-cart-key">Supplier shopping cart key</h3> <h3 id="mouser-api-key">Mouser API key</h3>
<p>Each shopping cart on the Mouser page has a designated key. You can have several shopping carts <p>Place here your Mouser key for manipulating shopping carts. You find it in your Mouser account.</p>
in our account. Each cart has a separate key. The plugin puts your PO into the cart with this key.
If you do not have a shopping cart key, leave the field empty. The plugin will create a cart
and save the key in the field.</p>
<h3 id="proxies">Proxies</h3> <h3 id="digikey-id-and-digikey-secret">Digikey ID and Digikey Secret</h3>
<p>This is the client ID and the client secret that has been generated in the Digkey API admin WEB portal.
Copy it from there to the InvenTree settings.</p>
<h3 id="digikey-token-and-digikey-refresh-token">Digikey token and Digikey refresh token</h3>
<p>These fields are filled automatically. The Digikey API requires two tokens with different life times.
Please refer to the Digikey section for more information.</p>
<h3 id="proxy-con">Proxy CON</h3>
<p>Protocol to proxy server e.g. https</p>
<h3 id="proxy-url">Proxy URL</h3>
<p>In case you need to authorise a proxy server between your InvenTree server and the internet <p>In case you need to authorise a proxy server between your InvenTree server and the internet
put the required setting here. The argument for the request is {Proxy CON : Proxy URL} for put the required setting here. Example:</p>
example:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{ 'https' : 'https://user:password@ipaddress:port' } <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://user:password@ipaddress:port
</code></pre></div></div> </code></pre></div></div>
<p>If you do not need this just leave Proxy CON empty.</p> <p>If you do not need this just leave the fields empty.
A proxy can also be set using the environment variables PROXY_CON and PROXY_URL. The
values in the environment variables overwrite InvenTree settings.</p>
<h2 id="what-it-does">What it does</h2> <h3 id="base-url">Base URL</h3>
<p>The base URL for server instance is in the Server Settings category of InvenTree. The plugin
uses this setting to build the OAuth callback for Digikey. Put the correct URL here.</p>
<p>The plugin creates a new panel which is visible on the purchase order details view. <h2 id="what-the-plugin-does">What the plugin does</h2>
This is called Mouser actions. On the panel there are three things:</p>
<p>The plugin creates a new panel which is visible on the purchase order details view.
This is called either Mouser actions or Digikey actions depending on the supplier of the
active PO. On the panel there are three things:</p>
<ul> <ul>
<li>a button that starts the transfer of your PO to Mouser</li> <li>a button that starts the transfer of your PO to the supplier</li>
<li>a status bar that shows error messages</li> <li>a status bar that shows error messages</li>
<li>a table that contains the created Mouser shopping cart.</li> <li>a table that contains the created Mouser shopping cart.</li>
<li>in case of Digikey a button that initiates the token generation.</li>
</ul> </ul>
<p><img src="/assets/plugins/mouser_panel.png" alt="Mouser Panel"></p> <p><img src="/assets/plugins/mouser_panel.png" alt="Mouser Panel"></p>
<p>The button initiates the transfer. It takes each element of your PO, takes the SKU of <p>The button “Transfer PO” initiates the transfer. It takes each element of your PO using the SKU of
the Mouser supplier part and adds it into your shopping cart. When finished it downloads the supplier part and transfers it to the suppliers WEB shop. When finished it downloads
the shopping cart from the Mouser WEB page and puts the data into the table. Here you see the data from the WEB page and puts the data into the table. Here you see
the actual stock at mouser and an OK bubble when the stock is large enough for you order. the actual stock at the supplier and an OK bubble when the stock is large enough for you order.
You also find the actual price as well as the total amount of your order.</p> You also find the actual price as well as the total amount of your order. If the supplier
detects an error with the part it is displayed in the very right column.</p>
<p>All items that have been in the cart before get deleted. The cart always contains only the parts <p>The plugin also transfers your IPNs (internal part numbers). Most suppliers reserve a field
in your PO. SergelLacruz</p>
<p>The plugin also transfers your IPNs (internal part numbers). Mouser reserves a field
for such numbers. They show up in your shopping cart as well as on the invoice and even for such numbers. They show up in your shopping cart as well as on the invoice and even
on the labels that they put onto the bags and reels.</p> on the labels that they put onto the bags and reels.</p>
<p>Finally the prices that come with the Mouser shopping cart will be copied back into your <p>Finally the actual prices are copied back into your
InvenTree purchase order line items. So you can always see what you payed for the part when InvenTree purchase order line items. So you can always see what you payed for the part when
you ordered it. This does not modify the price breaks of the supplier part. These are stored you ordered it. This does not modify the price breaks of the supplier part. These are stored
with the supplier part. Here we just modify the purchase order.</p> with the supplier part. Here we just modify the purchase order.</p>
<p>The panel is only displayed when the supplier of the current purchase order is Mouser. <h2 id="working-with-mouser">Working with Mouser</h2>
In addition the current user must have change, add or delete access to purchase orders.</p>
<h3 id="set-up">Set up</h3>
<p>For this plugin to work you need to have Mouser as a supplier in your InvenTree database.
Supplierparts must be added to all the parts that you like to buy at Mouser. All Mouser supplier
parts need to have the proper SKU. It needs to match the Mouser part number exactly.</p>
<p>For access to the Mouser API you need a Mouser account and a shopping cart API key.
You can get this in your Mouser WEB account. Do not mess up with the Mouser search API
key. This is a different one. If the key is properly set up you can find it on the Mouser
WEB page here:
<img src="/assets/plugins/mouser_api.png" alt="Mouser WEB"></p>
<h3 id="usage">Usage</h3>
<p>Using Mouser is easy. Only the Mouser shopping cart key is required for authentication. Its lifetime
is endless. Mouser has an API for the shopping cart. On pressing the button a shopping
cart is crated and all items are put into this shopping cart. When you login to the
Mouser WEB shop you can use this shopping cart for your order.</p>
<p>Please be aware that the plugin creates a new cart with a new ID each time the button is pressed.
If you afterwards create a order in the WEB UI, be careful selecting the right one
and delete all unused carts.</p>
<h4 id="currency-support">Currency support</h4>
<p>Mouser needs a country code for currency support. The plugin selects a proper country based on
the InvenTree currency setting and transfers this to Mouser. Mouser sends back the sopping cart
in the correct currency. The currency name is shown in last line of the table.</p>
<h2 id="working-with-digikey">Working with Digikey</h2>
<h3 id="set-up-1">Set up</h3>
<p>You need a registration on the <a href="https://developer.digikey.com">Digikey API products WEB page</a>.
This is not your normal Digikey account for shopping. You have to apply separately. After
registration create an organisation and inside the organization a production app.
The most important thing to set is the OAuth Callback. This is an URL on your local server
that is called by Digikey for key generation. The plugin sets up an URL for this.
Just add your local IP. The entry should look somehow like:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://192.168.1.40:8123/plugin/suppliercart/digikeytoken/
</code></pre></div></div>
<p>In this example 192.168.1.40:8123 is the local IP address and port where my
InvenTree development server runs. Place here the appropriate address.
In Production products section make sure that Product information and MyLists is activated.</p>
<p>In the View tab of your app you find the Client-ID and the Client-Secret. Place those in
the plugin settings.</p>
<p>Digikey Supplierparts have to by in your InvenTree Database as described already in
the Mouser section.</p>
<h3 id="usage-1">Usage</h3>
<p>Using Digikey is more complex. The authorisation system is token based and they do not
have a shopping cart API.</p>
<h4 id="authorization">Authorization</h4>
<p>The Digikey Client ID and the Client secret are the first things you need. With those
you call an API endpoint. You HAVE to go through an interactive browser window and
enter your credentials. Afterwards Digikey opens a callback URL on your local machine
and transfers a key. With this key the plugin calls another API endpoint to create
a token and a refresh token. The key gets bad after 60 seconds.</p>
<p>The token is used for each call to a Digikey API. It is good for 30 minutes. It has to
be refreshed using the refresh token. This one is valid for 90 days.</p>
<p>The plugin has a button in the panel that initiates the first step. It opens a browser
where you enter your credentials. When the OAuth callback is properly set the URL
…plugin/suppliercart/digikeytoken/ is called. This triggers a call to
https://api.digikey.com/v1/oauth2/token from where the plugin get the tokens. The tokens
are stored in the plugin setting area. Do not change them manually.</p>
<p>Each time you transfer a PO the refresh token is called independently from the
tokens live time. This also refreshes the refresh token. So you are save when
you use the plugin ate least once in 90 days. In case the token gets bad you need to
create a fresh set using the token button again.</p>
<p>If you are confused now read the documentation on the Digikey WEB page for more details.</p>
<h4 id="mylists">MyLists</h4>
<p>Digikey does not have such a simple shopping cart API. The plugin uses the MyLists API.
It creates a list on the WEB shop that can easily be transferred to a shopping
cart. When creating a list a list name has to be provided. The plugin creates a name
based on the PO name and adding a -xx that counts upwards each time you push the button.
The reason is that each name is allowed only once. Even when the list is deleted, the
name stays blocked forever. If you are done with your order delete the lists from your
Digikey WEB account.</p>
<h4 id="currency-support-1">Currency support</h4>
<p>Digikey requires a country code and a currency code. The plugin uses the same translation
as mentioned in the Mouser section and transfers both to Digikey. Digikey sends back the
list in the correct currency. Unfortunately the currency code is not sent back. The only
thing Digikey sends is a currency symbol but no info if $ is USD, AUD or whatever kind of Dollar.
The plugin shows the symbol in the table for control.</p>
<h2 id="automatically-add-supplierparts">Automatically add supplierparts</h2>
<p>The plugin can add supplierparts based on the supplier part number. For users with
edit part permission a panel called “Automatic Supplier parts” is shown. Here
you can select the supplier and add the exact supplier part number. The plugin
will create a corresponding supplierpart. I can fill the following part fields automatically:</p>
<ul>
<li>Supplier part number</li>
<li>URL</li>
<li>Package when available</li>
<li>Lifecycle status</li>
<li>Minimum order</li>
<li>Description</li>
</ul>
<p>If the supplier does not provide information for a field it it left empty.</p>
<h2 id="how-it-works">How it works</h2>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>def get_custom_panels(self, view, request)
</code></pre></div></div>
<p>This defines the panel. The function must return a panels list. Here it returns just one
panel. The panel is returned under three conditions: The view must be PurchaseOrderDetail,
the supplier must be Mouser or Digikey and the user must have edit permissions to purchase orders.
The content_template is an html file that defines how the panel content looks.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>re_path(r'transfercart/(?P&lt;pk&gt;\d+)/', self.TransferCart, name='transfer-cart'),
</code></pre></div></div>
<p>Here we define the url that controls the panel. Lets look at the details here:</p>
<ul>
<li>
<p><code class="language-plaintext highlighter-rouge">name='transfer-cart'</code>: This is the name under which the url is called from the html file. We will
come to that later when we discuss the template.</p>
</li>
<li>
<p><code class="language-plaintext highlighter-rouge">self.TransferCart</code> is the function that is called. It is defined later in this plugin</p>
</li>
<li>
<p><code class="language-plaintext highlighter-rouge">transfercart/(?P&lt;pk&gt;\d+)/</code> The string that looks a bit like white noise defines the url. transfercart
is the url which can be chosen freely. The ? is well known for parameters. In this case we get just one
parameter, the orders primary key. \d+ is a regular expression that limits the parameters to a digital
number with n digits.</p>
</li>
</ul>
<p>May be it is worth to leave a few more words on this. We define the url of the plugin. This is called by the Javascript
function when we push the button. Lets have a look on the names and how they belong together:</p>
<p><img src="/assets/plugins/plugin_dataflow.svg" alt="Dataflow"></p>
<p>In the picture you see the relevant lines in the python and java code. The names in the coloured boxes need to match.
In case something does not fit the panel will not render and you will get an error message.</p>
<h2 id="issues">Issues</h2> <h2 id="issues">Issues</h2>
<h3 id="mouser-messed-up">Mouser messed up</h3>
<p>It can happen that the Mouser shopping cart API gets messed up and no item are added into
your cart. Just delete the cart in that case and delete the key in the plugin setting.
A new key will be created and usually works.</p>
<h3 id="api-keys-are-global">API keys are global</h3> <h3 id="api-keys-are-global">API keys are global</h3>
<p>The API keys and especially the proxy password are user specific and shall not be given to <p>The API keys and especially the proxy password are user specific and shall not be given to
others. Up to now there are no user specific settings in InvenTree. So these keys are global others. Up to now there are no user specific settings in InvenTree. So these keys are global
and visible to, at least every admin. All users who use the plugin will have the same and visible to, at least every admin. All users who use the plugin will have the same
keys. We use a team key to solve this.</p> keys. We use a team key to solve this.</p>
<h3 id="other-suppliers">Other suppliers</h3> <h3 id="missing-digikey-features">Missing DigiKey features</h3>
<p>Actually this works only for Mouser. Other suppliers like Digikey, Farnell or Buerklin <p>Digikey allows more features like customer ID and list owners. These are not implemented so far.
might follow.</p> The plugin supports just a single Digikey organization and user. Some APIs require a createdBy
value to be set. xxxx works fine so far.</p>
<h3 id="https-callback">https Callback</h3>
<p>The OAuto callback setting in your Digikey WEB account allows only https. http is not allowed.
This is usually not a problem in production environments. However the development server
usually runs http. But InvenTree has the required stuff for https on board. I just changed
the runserver to runsslserver in tasks.py.</p>
</div> </div>
@ -202,7 +360,7 @@ might follow.</p>
</small> </small>
</div> </div>
</div> </div>
Package on PyPI:<pre class="my-0">inventree-supplier-panel</pre>
@ -245,6 +403,8 @@ might follow.</p>
<a href="/plugins/tags/#mouser"><span class="plugin_tag">mouser</span></a> <a href="/plugins/tags/#mouser"><span class="plugin_tag">mouser</span></a>
<a href="/plugins/tags/#digikey"><span class="plugin_tag">digikey</span></a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/SergeoLacruz/inventree-zebra-plugin" /> <meta property="og:url" content="/SergeoLacruz/inventree-zebra-plugin" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Zebra Plugin" /> <meta property="twitter:title" content="Inventree Zebra Plugin" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Zebra Label Printer Plugin for Inventree","headline":"Inventree Zebra Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz/inventree-zebra-plugin"},"url":"/SergeoLacruz/inventree-zebra-plugin"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Zebra Label Printer Plugin for Inventree","headline":"Inventree Zebra Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz/inventree-zebra-plugin"},"url":"/SergeoLacruz/inventree-zebra-plugin"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,19 +69,21 @@
<p> SergeoLacruz</p> <p> SergeoLacruz</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">
<div class="w-full md:w-auto md:mr-4"> <div class="w-full md:w-auto md:mr-4">
<p>Zebra Label Printer Plugin for Inventree</p> <p>Zebra Label Printer Plugin for Inventree</p>
<p>This is a label printing plugin for <a href="https://inventree.org">InvenTree</a>, which provides support for Zebra Label printers . <p>This is a label printing plugin for <a href="https://inventree.org">InvenTree</a>, which provides
It was only tested with GK420T but should work for other ZPL printers too. It uses the ZPL library to support for Zebra Label printers. It was only tested with GK420T but should work for
convert the png data provided by InvenTree to Zebras bitmap format.</p> other ZPL printers too. It uses the ZPL library to convert the png data provided by
InvenTree to Zebras bitmap format.</p>
<p>It can output the print data either to a local printer connected to the computer via USB or to a network printer <p>It can output the print data either to a local printer connected to the computer via
with an IP address. The output can be configured in the InvenTree plugin user interface.</p> USB or to a network printer with an IP address. The output can be configured in the
InvenTree plugin user interface.</p>
<p>Error handling is very basic.</p> <p>Error handling is very basic.</p>
@ -107,12 +109,12 @@ with an IP address. The output can be configured in the InvenTree plugin user in
device /dev/usb/lp0. No printer spooler is involved so far.</p> device /dev/usb/lp0. No printer spooler is involved so far.</p>
<h3 id="threshold">Threshold</h3> <h3 id="threshold">Threshold</h3>
<p>The image from pillow comes in greyscale. The plugin converts it ti pure BW because this gives a much <p>The image from pillow comes in greyscale. The plugin converts it ti pure BW because this gives a much
better print result. The threshold between black and white can be adjusted here.</p> better print result. The threshold between black and white can be adjusted here.</p>
<h3 id="darkness">Darkness</h3> <h3 id="darkness">Darkness</h3>
<p>This is a value that influences the darkness of the print. Allowed values are 0 (white) to 30 (black). <p>This is a value that influences the darkness of the print. Allowed values are 0 (white) to 30 (black).
It is directly converted to a SD command in ZPL. If your black areas tend to blur out reduce the It is directly converted to a SD command in ZPL. If your black areas tend to blur out reduce the
darkness.</p> darkness.</p>
<h3 id="dots-per-mm">Dots per mm</h3> <h3 id="dots-per-mm">Dots per mm</h3>
@ -132,8 +134,8 @@ is passed directly to the printer without any checks. So be careful when editing
here.</p> here.</p>
<h2 id="label-template">Label Template</h2> <h2 id="label-template">Label Template</h2>
<p>The label needs a template described in html and css. The template should start with a page definition <p>The label needs a template described in html and css. The template should
that defines the label size as shown below:</p> start with a page definition that defines the label size as shown below:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> @page { <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> @page {
{% localize off %} {% localize off %}
@ -146,13 +148,32 @@ that defines the label size as shown below:</p>
} }
</code></pre></div></div> </code></pre></div></div>
<p>The height and width parameters are defined in the InvenTree admin panel in the label section. These values <p>The height and width parameters are defined in the InvenTree admin panel
have to fit the label size that is in the printer. See the example templates for details on template definition.</p> in the label section. These values have to fit the label size that is in
the printer. See the example templates for details on template definition.</p>
<h2 id="multi-printer-hack">Multi printer hack</h2>
<p>We have the requirement to print labels in different sizes. As we do not
want to change the reel for each print we set up a second printer loaded
with a different label size. InvenTree is not yet able to handle different
printers. So I added a multi printer hack. You can define a key with an IP
address in the label meta data:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{"ip_address":"xxx.yyy.zzz.eee"}
{"darkness":xx}
</code></pre></div></div>
<p>If the printer driver finds that key, the IP address from the printer settings
is overwritten with the address from the meta data. So the print will end up
in another printer.</p>
<p>Only the IP address and darkness can be overwritten so far. All other settings remain.</p>
<h2 id="how-it-works">How it works</h2> <h2 id="how-it-works">How it works</h2>
<p>First import all the stuff you need. Here we use the translation mechanism from Django for multi language support. <p>First import all the stuff you need. Here we use the translation mechanism from
The import the InvenTree libs and everything you need for plugin. Here we have ZPL for the Zebra bitmaps and socket Django for multi language support. The import the InvenTree libs and everything
for the IP connection to the printer.</p> you need for plugin. Here we have ZPL for the Zebra bitmaps and socket for the
IP connection to the printer.</p>
<p>The next part is this:</p> <p>The next part is this:</p>
@ -167,7 +188,7 @@ for the IP connection to the printer.</p>
</code></pre></div></div> </code></pre></div></div>
<p>The name of the class can be freely chosen. You reference to it in the entry_points section of the setup.py file. <p>The name of the class can be freely chosen. You reference to it in the entry_points section of the setup.py file.
The parameters need to be like in the example. Then there is the description block. The keywords are fixed and The parameters need to be like in the example. Then there is the description block. The keywords are fixed and
need to be like that. The values are found in the UI as shown in the pictures below.</p> need to be like that. The values are found in the UI as shown in the pictures below.</p>
<p><img src="/assets/plugins/plugin_admin.png" alt="Admin"> <p><img src="/assets/plugins/plugin_admin.png" alt="Admin">
@ -191,9 +212,9 @@ need to be like that. The values are found in the UI as shown in the pictures be
</code></pre></div></div> </code></pre></div></div>
<p>We need to define a dict with the name SETTINGS. Please be aware the keys need to be in all CAPITAL letters like CONNECTION. <p>We need to define a dict with the name SETTINGS. Please be aware the keys need to be in all CAPITAL letters like CONNECTION.
Simple parameters are just text strings like the port. We can set a default. The name and description shows up in the UI. Simple parameters are just text strings like the port. We can set a default. The name and description shows up in the UI.
Instead of a simple text we can also use choices. The first string like “local” it the key you use in the code. The second Instead of a simple text we can also use choices. The first string like “local” it the key you use in the code. The second
one is the description in the UI. one is the description in the UI.
After that we need to define a function:</p> After that we need to define a function:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">print_label</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">){</span> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">print_label</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">){</span>
@ -212,27 +233,27 @@ After that we need to define a function:</p>
<li>png_file</li> <li>png_file</li>
</ul> </ul>
<p>The item_instance is the part to be printed. This allows direct access to all part data. The arguments width and height <p>The item_instance is the part to be printed. This allows direct access to all part data. The arguments width and height
come from the settings of the label in the admin interface. NOT from the html template. come from the settings of the label in the admin interface. NOT from the html template.
For the Zebra printer we use the png_file. This is a PIL (python Pillow) object with the graphic of the label in PNG format. For the Zebra printer we use the png_file. This is a PIL (python Pillow) object with the graphic of the label in PNG format.
The PIL object is a greyscale image. Because the printer can just print pure BW we convert this to a BW picture.</p> The PIL object is a greyscale image. Because the printer can just print pure BW we convert this to a BW picture.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fn</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span> <span class="mi">255</span> <span class="k">if</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="n">Threshold</span> <span class="k">else</span> <span class="mi">0</span> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fn</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span> <span class="mi">255</span> <span class="k">if</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="n">Threshold</span> <span class="k">else</span> <span class="mi">0</span>
<span class="n">label_image</span> <span class="o">=</span> <span class="n">label_image</span><span class="p">.</span><span class="nf">convert</span><span class="p">(</span><span class="sh">'</span><span class="s">L</span><span class="sh">'</span><span class="p">).</span><span class="nf">point</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="sh">'</span><span class="s">1</span><span class="sh">'</span><span class="p">)</span> <span class="n">label_image</span> <span class="o">=</span> <span class="n">label_image</span><span class="p">.</span><span class="nf">convert</span><span class="p">(</span><span class="sh">'</span><span class="s">L</span><span class="sh">'</span><span class="p">).</span><span class="nf">point</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="sh">'</span><span class="s">1</span><span class="sh">'</span><span class="p">)</span>
</code></pre></div></div> </code></pre></div></div>
<p>The threshold can by modified by a plugin parameter. 200 is a good starting value. This trick gives much better prints. <p>The threshold can by modified by a plugin parameter. 200 is a good starting value. This trick gives much better prints.
We can put the result of this directly into the ZPL library.</p> We can put the result of this directly into the ZPL library.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">l</span> <span class="o">=</span> <span class="n">zpl</span><span class="p">.</span><span class="nc">Label</span><span class="p">(</span><span class="n">Height</span><span class="p">,</span> <span class="n">Width</span><span class="p">,</span> <span class="n">dpmm</span><span class="p">)</span> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">l</span> <span class="o">=</span> <span class="n">zpl</span><span class="p">.</span><span class="nc">Label</span><span class="p">(</span><span class="n">Height</span><span class="p">,</span> <span class="n">Width</span><span class="p">,</span> <span class="n">dpmm</span><span class="p">)</span>
<span class="n">l</span><span class="p">.</span><span class="nf">origin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="n">li</span><span class="p">.</span><span class="nf">set_darkness</span><span class="p">(</span><span class="n">darkness</span><span class="p">)</span>
<span class="bp">...</span> <span class="bp">...</span>
<span class="n">l</span><span class="p">.</span><span class="nf">write_graphic</span><span class="p">(</span><span class="n">label_image</span><span class="p">,</span> <span class="n">Width</span><span class="p">)</span> <span class="n">l</span><span class="p">.</span><span class="nf">write_graphic</span><span class="p">(</span><span class="n">label_image</span><span class="p">,</span> <span class="n">Width</span><span class="p">)</span>
<span class="n">l</span><span class="p">.</span><span class="nf">endorigin</span><span class="p">()</span> <span class="n">l</span><span class="p">.</span><span class="nf">endorigin</span><span class="p">()</span>
</code></pre></div></div> </code></pre></div></div>
<p>Width and Height define is the size of the label in millimeters as described above. <p>Width and Height define is the size of the label in millimeters as described above.
The third parameter is the resolution of the printer in dots per mm. The third parameter is the resolution of the printer in dots per mm.
write_graphic converts the pillow data to ZPL.</p> write_graphic converts the pillow data to ZPL.</p>
<p>The plugin was tested with a labels of various sizes defined using css and html. The DPI scaling <p>The plugin was tested with a labels of various sizes defined using css and html. The DPI scaling
@ -248,11 +269,11 @@ Lets have a look at the following printout:</p>
<p><img src="/assets/plugins/qr.png" alt="QRCodes"></p> <p><img src="/assets/plugins/qr.png" alt="QRCodes"></p>
<p>Both codes have been printed with the same printer on the same reel. The left one is <p>Both codes have been printed with the same printer on the same reel. The left one is
hardly readable using my mobile. The right one reads easily even as it is smaller.</p> hardly readable using my mobile. The right one reads easily even as it is smaller.</p>
<h3 id="secret-1-scale">Secret 1, Scale</h3> <h3 id="secret-1-scale">Secret 1, Scale</h3>
<p>The printer resolution is 8 dots per mm resulting in a dot size of 0.125mm. The QR code pixel <p>The printer resolution is 8 dots per mm resulting in a dot size of 0.125mm. The QR code pixel
and the printer pixel size should be integrally divisible. The code in the picture has 21 and the printer pixel size should be integrally divisible. The code in the picture has 21
pixels plus one in the frame, so 23 pixel. The frame is set in the HTML description.</p> pixels plus one in the frame, so 23 pixel. The frame is set in the HTML description.</p>
@ -260,7 +281,7 @@ pixels plus one in the frame, so 23 pixel. The frame is set in the HTML descript
</code></pre></div></div> </code></pre></div></div>
<p>I selected two dots per pixel. So 23 * 2 * 0.125 = 6.125mm. If the size is something different <p>I selected two dots per pixel. So 23 * 2 * 0.125 = 6.125mm. If the size is something different
scaling takes place and the result might be worse. If you like a larger printout select more scaling takes place and the result might be worse. If you like a larger printout select more
dots per pixel. From a certain size upwards the value does not matter any more because the code dots per pixel. From a certain size upwards the value does not matter any more because the code
gets large enough to be readable in any quality.</p> gets large enough to be readable in any quality.</p>
@ -273,9 +294,9 @@ media type and printer age. The printer head tends to wear out and the darkness
need an adjustment from time to time.</p> need an adjustment from time to time.</p>
<h3 id="alternative">Alternative</h3> <h3 id="alternative">Alternative</h3>
<p>You can also bypass the InvenTree template and printing system and directly create ZPL from <p>You can also bypass the InvenTree template and printing system and directly create ZPL from
the parts data. The printer knows best how to render the label and the print quality is best. the parts data. The printer knows best how to render the label and the print quality is best.
If you are interested in this way have a look at the <a href="https://github.com/yellowcrescent/inventree-zpl-plugin">inventree-zpl-plugin</a> If you are interested in this way have a look at the <a href="https://github.com/yellowcrescent/inventree-zpl-plugin">inventree-zpl-plugin</a>
that does exactly that.</p> that does exactly that.</p>
</div> </div>

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/afkiwers/inventree-kicad" /> <meta property="og:url" content="/afkiwers/inventree-kicad" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Kicad" /> <meta property="twitter:title" content="Inventree Kicad" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"afkiwers"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"KiCad Integration for InvenTree","headline":"Inventree Kicad","mainEntityOfPage":{"@type":"WebPage","@id":"/afkiwers/inventree-kicad"},"url":"/afkiwers/inventree-kicad"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"afkiwers"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"KiCad Integration for InvenTree","headline":"Inventree Kicad","mainEntityOfPage":{"@type":"WebPage","@id":"/afkiwers/inventree-kicad"},"url":"/afkiwers/inventree-kicad"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> afkiwers</p> <p> afkiwers</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -30,11 +30,11 @@
<meta property="og:url" content="/afwkiers" /> <meta property="og:url" content="/afwkiers" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Afwkiers" /> <meta property="twitter:title" content="Afwkiers" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.","headline":"Afwkiers","mainEntityOfPage":{"@type":"WebPage","@id":"/afwkiers"},"url":"/afwkiers"}</script> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.","headline":"Afwkiers","mainEntityOfPage":{"@type":"WebPage","@id":"/afwkiers"},"url":"/afwkiers"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>

View File

@ -0,0 +1,330 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="645.68176"
height="364.82404"
viewBox="0 0 170.83664 96.52636"
version="1.1"
id="svg8"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
sodipodi:docname="plugin_dataflow.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker5167"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5165" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker4285"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path4283"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker4237"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path4235" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker1903"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path1901"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1867"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1865" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="366.68537"
inkscape:cy="162.63456"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:snap-global="false"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-55.356916,-137.03246)">
<rect
style="opacity:1;fill:#00fc00;fill-opacity:0.271186;stroke:none;stroke-width:0.386441;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6345"
width="29.621031"
height="6.430881"
x="83.372101"
y="147.95529" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333333px;line-height:1.25;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.385833"
x="68.770256"
y="183.03281"
id="text817"><tspan
sodipodi:role="line"
id="tspan815"
x="68.770256"
y="183.03281"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.385833;font-size:4.23333333px">def TransferCart(self,request,pk):</tspan><tspan
sodipodi:role="line"
x="68.770256"
y="188.17725"
id="tspan819"
style="stroke-width:0.385833;-inkscape-font-specification:Arial;font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:4.23333333px" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333333px;line-height:1.25;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.385833"
x="68.803177"
y="167.63768"
id="text823"><tspan
sodipodi:role="line"
id="tspan821"
x="68.803177"
y="167.63768"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.385833;font-size:4.23333333px">re_path(r'transfercart/(?P&lt;pk&gt;\d+)/', self.TransferCart, name='transfer-cart'),</tspan><tspan
sodipodi:role="line"
x="68.803177"
y="172.78212"
id="tspan825"
style="stroke-width:0.385833;-inkscape-font-specification:Arial;font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:4.23333333px" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333333px;line-height:1.25;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.385833"
x="68.95134"
y="215.77185"
id="text829"><tspan
sodipodi:role="line"
id="tspan827"
x="68.95134"
y="215.77185"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.385833;font-size:4.23333333px">response = await fetch( &quot;{% url 'plugin:suppliercart:transfer-cart' order.pk %}&quot;);</tspan><tspan
sodipodi:role="line"
x="68.95134"
y="220.91629"
id="tspan831"
style="stroke-width:0.385833;-inkscape-font-specification:Arial;font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:4.23333333px" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333333px;line-height:1.25;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.385833"
x="68.95134"
y="152.43741"
id="text835"><tspan
sodipodi:role="line"
id="tspan833"
x="68.95134"
y="152.43741"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.385833;font-size:4.23333333px">SLUG = &quot;suppliercart&quot;</tspan><tspan
sodipodi:role="line"
x="68.95134"
y="157.58185"
id="tspan837"
style="stroke-width:0.385833;-inkscape-font-specification:Arial;font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:4.23333333px" /></text>
<flowRoot
xml:space="preserve"
id="flowRoot839"
style="font-style:normal;font-weight:normal;font-size:10.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion841"><rect
id="rect843"
width="628.81995"
height="259.60919"
x="226.77925"
y="227.5103" /></flowRegion><flowPara
id="flowPara845" /></flowRoot>
<text
id="text851"
y="140.16028"
x="68.95134"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.385833"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.385833"
y="140.16028"
x="68.95134"
id="tspan847"
sodipodi:role="line"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'"
id="tspan508">Python</tspan>:</tspan><tspan
id="tspan849"
y="145.45195"
x="68.95134"
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.385833" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333333px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.385833"
x="68.95134"
y="207.00249"
id="text857"><tspan
sodipodi:role="line"
id="tspan853"
x="68.95134"
y="207.00249"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:0.385833;font-size:4.23333333px">Javascript:</tspan><tspan
sodipodi:role="line"
x="68.95134"
y="212.14693"
id="tspan855"
style="stroke-width:0.385833;-inkscape-font-specification:'Arial Bold';font-family:Arial;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:4.23333333px" /></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.385833px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1867)"
d="m 200.68696,170.75568 -21.82601,39.3648"
id="path1857"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.385833px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1903)"
d="m 205.94859,213.8231 c 0,0 25.18708,-30.34967 19.09778,-46.96492 -6.08931,-16.61525 -74.12998,-12.01197 -81.6527,-11.69252 -7.52274,0.31945 -13.64127,8.37964 -13.64127,8.37964"
id="path1893"
inkscape:connector-curvature="0"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.385833px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4237)"
d="m 128.19339,169.78131 -1.75387,8.96427"
id="path4227"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.385833px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4285)"
d="m 159.17856,169.39156 c 0,0 -0.75265,17.80781 -13.25151,27.08765 -12.49887,9.27983 -28.52853,8.82481 -37.61092,-0.19487 -9.082401,-9.01969 -11.49764,-11.30276 -11.49764,-11.30276"
id="path4275"
inkscape:connector-curvature="0"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.385833px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5167)"
d="m 95.259485,154.38618 c -9.916792,8.89186 -32.64802,-0.23951 -36.44166,11.6925 -3.79364,11.93202 -6.518614,38.04326 5.066754,54.75993 11.585367,16.71667 49.333961,12.29554 62.944691,11.10787 13.61074,-1.18767 27.08767,-13.44637 27.08767,-13.44637"
id="path5157"
inkscape:connector-curvature="0"
sodipodi:nodetypes="czzzc" />
<rect
y="211.09485"
x="140.51495"
height="6.430881"
width="22.995275"
id="rect6347"
style="opacity:1;fill:#00fc00;fill-opacity:0.271186;stroke:none;stroke-width:0.340488;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
style="opacity:1;fill:#00fc9d;fill-opacity:0.271186;stroke:none;stroke-width:0.325615;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6349"
width="22.967285"
height="6.430881"
x="184.13921"
y="162.93837" />
<rect
y="211.14491"
x="188.47086"
height="6.430881"
width="16.564394"
id="rect6351"
style="opacity:1;fill:#00fc9d;fill-opacity:0.271186;stroke:none;stroke-width:0.276527;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="162.96066"
x="125.46516"
height="6.430881"
width="5.6513834"
id="rect6353"
style="opacity:1;fill:#001d9d;fill-opacity:0.271186;stroke:none;stroke-width:0.386441;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
style="opacity:1;fill:#001d9d;fill-opacity:0.271186;stroke:none;stroke-width:0.386441;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6355"
width="5.6513834"
height="6.430881"
x="124.49078"
y="178.55069" />
<rect
y="163.23907"
x="144.82449"
height="6.430881"
width="24.164528"
id="rect6357"
style="opacity:1;fill:#e7fc9d;fill-opacity:0.271186;stroke:none;stroke-width:0.345643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7fc9d;fill-opacity:0.271186;stroke:none;stroke-width:0.348694;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6359"
width="24.592999"
height="6.430881"
x="75.181656"
y="178.07739" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="/blog/feed.atom" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2024-04-22T00:55:04+00:00</updated><id>/blog/feed.atom</id><title type="html">InvenTree</title><subtitle>InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.</subtitle><entry><title type="html">Docker Setup Guide</title><link href="/blog/2024/03/13/docker" rel="alternate" type="text/html" title="Docker Setup Guide" /><published>2024-03-13T00:00:00+00:00</published><updated>2024-03-13T00:00:00+00:00</updated><id>/blog/2024/03/13/docker</id><content type="html" xml:base="/blog/2024/03/13/docker"><![CDATA[<p>In this post, we will run though a tutorial for setting up InvenTree in a Docker container. We are installing a <em>stable</em> version of InvenTree, which (at the time of posting) is version 0.14.2.</p> <?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="/blog/feed.atom" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2024-04-24T21:49:01+00:00</updated><id>/blog/feed.atom</id><title type="html">InvenTree</title><subtitle>InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.</subtitle><entry><title type="html">Docker Setup Guide</title><link href="/blog/2024/03/13/docker" rel="alternate" type="text/html" title="Docker Setup Guide" /><published>2024-03-13T00:00:00+00:00</published><updated>2024-03-13T00:00:00+00:00</updated><id>/blog/2024/03/13/docker</id><content type="html" xml:base="/blog/2024/03/13/docker"><![CDATA[<p>In this post, we will run though a tutorial for setting up InvenTree in a Docker container. We are installing a <em>stable</em> version of InvenTree, which (at the time of posting) is version 0.14.2.</p>
<h2 id="digital-ocean">Digital Ocean</h2> <h2 id="digital-ocean">Digital Ocean</h2>

View File

@ -317,6 +317,8 @@

View File

@ -226,6 +226,8 @@

File diff suppressed because one or more lines are too long

View File

@ -30,11 +30,11 @@
<meta property="og:url" content="/lippoliv" /> <meta property="og:url" content="/lippoliv" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Lippoliv" /> <meta property="twitter:title" content="Lippoliv" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"With over 15 years of experience and big big passion I learned to take care about the details. They build up to the big picture we have in mind. Im planning ahead &amp; act early to prevent a big bang.","headline":"Lippoliv","mainEntityOfPage":{"@type":"WebPage","@id":"/lippoliv"},"url":"/lippoliv"}</script> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"With over 15 years of experience and big big passion I learned to take care about the details. They build up to the big picture we have in mind. Im planning ahead &amp; act early to prevent a big bang.","headline":"Lippoliv","mainEntityOfPage":{"@type":"WebPage","@id":"/lippoliv"},"url":"/lippoliv"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/lippoliv/inventree-default-salesorder-items" /> <meta property="og:url" content="/lippoliv/inventree-default-salesorder-items" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Default Salesorder Items" /> <meta property="twitter:title" content="Inventree Default Salesorder Items" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"lippoliv"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Add default parts (configurable) to every newly created sales order automatically.","headline":"Inventree Default Salesorder Items","mainEntityOfPage":{"@type":"WebPage","@id":"/lippoliv/inventree-default-salesorder-items"},"url":"/lippoliv/inventree-default-salesorder-items"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"lippoliv"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Add default parts (configurable) to every newly created sales order automatically.","headline":"Inventree Default Salesorder Items","mainEntityOfPage":{"@type":"WebPage","@id":"/lippoliv/inventree-default-salesorder-items"},"url":"/lippoliv/inventree-default-salesorder-items"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> lippoliv</p> <p> lippoliv</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -30,11 +30,11 @@
<meta property="og:url" content="/matmair" /> <meta property="og:url" content="/matmair" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Matmair" /> <meta property="twitter:title" content="Matmair" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"I try to build an ecosystem of reusable plugins and integrations for InvenTree. Code once and KISS!","headline":"Matmair","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair"},"url":"/matmair"}</script> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"I try to build an ecosystem of reusable plugins and integrations for InvenTree. Code once and KISS!","headline":"Matmair","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair"},"url":"/matmair"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/matmair/inventree-apprise" /> <meta property="og:url" content="/matmair/inventree-apprise" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Apprise" /> <meta property="twitter:title" content="Inventree Apprise" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Send notifications from InvenTree via Apprise","headline":"Inventree Apprise","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-apprise"},"url":"/matmair/inventree-apprise"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Send notifications from InvenTree via Apprise","headline":"Inventree Apprise","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-apprise"},"url":"/matmair/inventree-apprise"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> matmair</p> <p> matmair</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/matmair/inventree-rapidoc" /> <meta property="og:url" content="/matmair/inventree-rapidoc" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Rapidoc" /> <meta property="twitter:title" content="Inventree Rapidoc" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Use RapiDoc for Inventree API docs.","headline":"Inventree Rapidoc","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-rapidoc"},"url":"/matmair/inventree-rapidoc"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Use RapiDoc for Inventree API docs.","headline":"Inventree Rapidoc","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-rapidoc"},"url":"/matmair/inventree-rapidoc"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> matmair</p> <p> matmair</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/matmair/inventree-zapier" /> <meta property="og:url" content="/matmair/inventree-zapier" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Zapier" /> <meta property="twitter:title" content="Inventree Zapier" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Integrate Zapier into InvenTree","headline":"Inventree Zapier","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-zapier"},"url":"/matmair/inventree-zapier"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Integrate Zapier into InvenTree","headline":"Inventree Zapier","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-zapier"},"url":"/matmair/inventree-zapier"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> matmair</p> <p> matmair</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="/news/feed.atom" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2024-04-22T00:55:04+00:00</updated><id>/news/feed.atom</id><title type="html">InvenTree | News</title><subtitle>InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.</subtitle><entry><title type="html">0.14.2 Release</title><link href="/news/2024/03/13/0.14.2" rel="alternate" type="text/html" title="0.14.2 Release" /><published>2024-03-13T00:00:00+00:00</published><updated>2024-03-13T00:00:00+00:00</updated><id>/news/2024/03/13/0.14.2</id><content type="html" xml:base="/news/2024/03/13/0.14.2"><![CDATA[<h3 id="0142-release">0.14.2 Release</h3> <?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="/news/feed.atom" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2024-04-24T21:49:01+00:00</updated><id>/news/feed.atom</id><title type="html">InvenTree | News</title><subtitle>InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.</subtitle><entry><title type="html">0.14.2 Release</title><link href="/news/2024/03/13/0.14.2" rel="alternate" type="text/html" title="0.14.2 Release" /><published>2024-03-13T00:00:00+00:00</published><updated>2024-03-13T00:00:00+00:00</updated><id>/news/2024/03/13/0.14.2</id><content type="html" xml:base="/news/2024/03/13/0.14.2"><![CDATA[<h3 id="0142-release">0.14.2 Release</h3>
<p>We are pleased to announce the 0.14.2 bug fix release, which represents a number of small bug fixes and stability improvements to the software</p> <p>We are pleased to announce the 0.14.2 bug fix release, which represents a number of small bug fixes and stability improvements to the software</p>

View File

@ -366,6 +366,8 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
<span class="plugin_tag">mouser</span> <span class="plugin_tag">mouser</span>
<span class="plugin_tag">digikey</span>
</div> </div>
<h3 class="my-0">inventree-supplier-panel</h3> <h3 class="my-0">inventree-supplier-panel</h3>
<div class="mb-1 text-muted"> <div class="mb-1 text-muted">
@ -378,8 +380,9 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
</span> </span>
</a> </a>
</div> </div>
<p class="my-0">Create Mouser shopping cart from purchase order <p class="my-0"></p>
</p> <h1 id="the-inventree-supplier-panel">The InvenTree-supplier-panel</h1>
</div> </div>
</div> </div>
</a> </a>

View File

@ -1035,6 +1035,8 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
<span class="plugin_tag">mouser</span> <span class="plugin_tag">mouser</span>
<span class="plugin_tag">digikey</span>
</div> </div>
<h3 class="my-0">inventree-supplier-panel</h3> <h3 class="my-0">inventree-supplier-panel</h3>
<div class="mb-1 text-muted"> <div class="mb-1 text-muted">
@ -1047,8 +1049,9 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
</span> </span>
</a> </a>
</div> </div>
<p class="my-0">Create Mouser shopping cart from purchase order <p class="my-0"></p>
</p> <h1 id="the-inventree-supplier-panel">The InvenTree-supplier-panel</h1>
</div> </div>
</div> </div>
</a></div> </a></div>

View File

@ -245,6 +245,12 @@
<a class="label" href="/plugins/tags/#digikey">
<span class="badge">digikey</span>
</a>
<a class="label" href="/plugins/tags/#kicad"> <a class="label" href="/plugins/tags/#kicad">
<span class="badge">kicad</span> <span class="badge">kicad</span>
</a> </a>
@ -3148,6 +3154,96 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
</div>
<div id="digikey" class="anchor"></div>
<h2 class="text-lg sm:text-xl cm-gray-1 font-medium title-font mb-2">digikey</h2>
<div class="flex flex-wrap">
<div class="space-4 p-2 md:w-1/2"><a href="/SergeoLacruz/inventree-supplier-panel" class="no-underline" aria-label="open plugin details">
<div class="row g-0 border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col p-4 d-flex flex-column position-static">
<div class="d-inline-block leading-loose">
<span class="plugin_cat">Supplier</span>
<span class="plugin_tag">supplier</span>
<span class="plugin_tag">mouser</span>
<span class="plugin_tag">digikey</span>
</div>
<h3 class="my-0">inventree-supplier-panel</h3>
<div class="mb-1 text-muted">
<a href="/SergeoLacruz">
<span class="inline-flex">
<img src="https://github.com/SergeoLacruz.png?size=40" alt="mdo" class="self-center w-5 h-5 rounded-full" style="margin:0px">
<p> SergeoLacruz</p>
</span>
</a>
</div>
<p class="my-0"></p>
<h1 id="the-inventree-supplier-panel">The InvenTree-supplier-panel</h1>
</div>
</div>
</a></div>
</div> </div>
@ -3295,6 +3391,8 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
<span class="plugin_tag">mouser</span> <span class="plugin_tag">mouser</span>
<span class="plugin_tag">digikey</span>
</div> </div>
<h3 class="my-0">inventree-supplier-panel</h3> <h3 class="my-0">inventree-supplier-panel</h3>
<div class="mb-1 text-muted"> <div class="mb-1 text-muted">
@ -3307,8 +3405,9 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
</span> </span>
</a> </a>
</div> </div>
<p class="my-0">Create Mouser shopping cart from purchase order <p class="my-0"></p>
</p> <h1 id="the-inventree-supplier-panel">The InvenTree-supplier-panel</h1>
</div> </div>
</div> </div>
</a></div> </a></div>
@ -3471,6 +3570,8 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
<span class="plugin_tag">mouser</span> <span class="plugin_tag">mouser</span>
<span class="plugin_tag">digikey</span>
</div> </div>
<h3 class="my-0">inventree-supplier-panel</h3> <h3 class="my-0">inventree-supplier-panel</h3>
<div class="mb-1 text-muted"> <div class="mb-1 text-muted">
@ -3483,8 +3584,9 @@ Installing this plugin enables the automatic generation if Internal Part Numbers
</span> </span>
</a> </a>
</div> </div>
<p class="my-0">Create Mouser shopping cart from purchase order <p class="my-0"></p>
</p> <h1 id="the-inventree-supplier-panel">The InvenTree-supplier-panel</h1>
</div> </div>
</div> </div>
</a></div> </a></div>

View File

@ -30,11 +30,11 @@
<meta property="og:url" content="/schrodingersgat" /> <meta property="og:url" content="/schrodingersgat" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Schrodingersgat" /> <meta property="twitter:title" content="Schrodingersgat" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Maintainer of InvenTree.","headline":"Schrodingersgat","mainEntityOfPage":{"@type":"WebPage","@id":"/schrodingersgat"},"url":"/schrodingersgat"}</script> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Maintainer of InvenTree.","headline":"Schrodingersgat","mainEntityOfPage":{"@type":"WebPage","@id":"/schrodingersgat"},"url":"/schrodingersgat"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>

View File

@ -118,79 +118,79 @@
</url> </url>
<url> <url>
<loc>/LavissaWoW</loc> <loc>/LavissaWoW</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/SergeoLacruz</loc> <loc>/SergeoLacruz</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/afwkiers</loc> <loc>/afwkiers</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/lippoliv</loc> <loc>/lippoliv</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/matmair</loc> <loc>/matmair</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/schrodingersgat</loc> <loc>/schrodingersgat</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/wolflu05</loc> <loc>/wolflu05</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/matmair/inventree-apprise</loc> <loc>/matmair/inventree-apprise</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/SchrodingersGat/inventree-brother-plugin</loc> <loc>/SchrodingersGat/inventree-brother-plugin</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/wolflu05/inventree-bulk-plugin</loc> <loc>/wolflu05/inventree-bulk-plugin</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/wolflu05/inventree-cups-plugin</loc> <loc>/wolflu05/inventree-cups-plugin</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/lippoliv/inventree-default-salesorder-items</loc> <loc>/lippoliv/inventree-default-salesorder-items</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/LavissaWoW/inventree-ipn-generator</loc> <loc>/LavissaWoW/inventree-ipn-generator</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/afkiwers/inventree-kicad</loc> <loc>/afkiwers/inventree-kicad</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/matmair/inventree-rapidoc</loc> <loc>/matmair/inventree-rapidoc</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/SergeoLacruz/inventree-supplier-panel</loc> <loc>/SergeoLacruz/inventree-supplier-panel</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/SchrodingersGat/inventree-wireviz</loc> <loc>/SchrodingersGat/inventree-wireviz</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/matmair/inventree-zapier</loc> <loc>/matmair/inventree-zapier</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/SergeoLacruz/inventree-zebra-plugin</loc> <loc>/SergeoLacruz/inventree-zebra-plugin</loc>
<lastmod>2024-04-22T00:55:04+00:00</lastmod> <lastmod>2024-04-24T21:49:01+00:00</lastmod>
</url> </url>
<url> <url>
<loc>/404</loc> <loc>/404</loc>

View File

@ -30,11 +30,11 @@
<meta property="og:url" content="/wolflu05" /> <meta property="og:url" content="/wolflu05" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Wolflu05" /> <meta property="twitter:title" content="Wolflu05" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.","headline":"Wolflu05","mainEntityOfPage":{"@type":"WebPage","@id":"/wolflu05"},"url":"/wolflu05"}</script> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.","headline":"Wolflu05","mainEntityOfPage":{"@type":"WebPage","@id":"/wolflu05"},"url":"/wolflu05"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/wolflu05/inventree-bulk-plugin" /> <meta property="og:url" content="/wolflu05/inventree-bulk-plugin" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Bulk Plugin" /> <meta property="twitter:title" content="Inventree Bulk Plugin" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"wolflu05"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Bulk creation plugin for InvenTree","headline":"Inventree Bulk Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/wolflu05/inventree-bulk-plugin"},"url":"/wolflu05/inventree-bulk-plugin"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"wolflu05"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Bulk creation plugin for InvenTree","headline":"Inventree Bulk Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/wolflu05/inventree-bulk-plugin"},"url":"/wolflu05/inventree-bulk-plugin"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> wolflu05</p> <p> wolflu05</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/wolflu05/inventree-cups-plugin" /> <meta property="og:url" content="/wolflu05/inventree-cups-plugin" />
<meta property="og:site_name" content="InvenTree" /> <meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="article:published_time" content="2024-04-22T00:55:04+00:00" /> <meta property="article:published_time" content="2024-04-24T21:49:01+00:00" />
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Cups Plugin" /> <meta property="twitter:title" content="Inventree Cups Plugin" />
<script type="application/ld+json"> <script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"wolflu05"},"dateModified":"2024-04-22T00:55:04+00:00","datePublished":"2024-04-22T00:55:04+00:00","description":"Label printing plugin for generic cups printers","headline":"Inventree Cups Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/wolflu05/inventree-cups-plugin"},"url":"/wolflu05/inventree-cups-plugin"}</script> {"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"wolflu05"},"dateModified":"2024-04-24T21:49:01+00:00","datePublished":"2024-04-24T21:49:01+00:00","description":"Label printing plugin for generic cups printers","headline":"Inventree Cups Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/wolflu05/inventree-cups-plugin"},"url":"/wolflu05/inventree-cups-plugin"}</script>
<!-- End Jekyll SEO tag --> <!-- End Jekyll SEO tag -->
</head> </head>
@ -69,7 +69,7 @@
<p> wolflu05</p> <p> wolflu05</p>
</span> </span>
</a></span> </a></span>
<span class="sm:ml-2 text-sm">last modified: 22 Apr 2024</span> <span class="sm:ml-2 text-sm">last modified: 24 Apr 2024</span>
</h2> </h2>
<div class="flex-wrap md:flex md:flex-nowrap"> <div class="flex-wrap md:flex md:flex-nowrap">